初学者的python刽子手代码
Posted
技术标签:
【中文标题】初学者的python刽子手代码【英文标题】:python hangman code for a beginner 【发布时间】:2017-09-08 19:20:09 【问题描述】:我大约一周前才开始学习 python。我今天尝试创建一个简单的刽子手游戏。到目前为止,我在这方面的所有代码都有效,但有一件事我想不出如何实现。当玩家正确键入“python”时,我希望代码打印“you win”,一个字母一个字母。但在他们做对了之后,我似乎无法结束它。如果他们一次尝试键入“python”,而不是字母形式,它将结束。我的尝试与.join
一致。我似乎无法弄清楚。对新程序员的任何帮助或建议将不胜感激。
guesses = []
count = 1
ans = 'python'
word = ''
while count < 10:
guess = raw_input('guess a letter: ')
guesses.append(guess)
if ''.join(word) == ans:
print 'you win'
break
elif len(guess) > 1 and ans == guess:
print ans
print 'you win'
break
else:
for char in ans:
if char in guesses:
word.append(char)
print char,
else:
print '_',
count += 1
else:
print '\nyou lose'
【问题讨论】:
【参考方案1】:首先,我想说的是,除非您正在处理遗留代码或某些仅在 2.7 中可用的库,否则不要使用 python 2.7,而是使用 python 3.x (currently on 3.6)。这是因为很快 2.7 将被弃用,并且 3.6 + 具有更多的功能以及对语法和语言的大量 QOL 改进(并且支持 2.7 现在不具备的功能)。
话虽如此,我会为你翻译成 3.6。它几乎没有什么不同。
guesses = []
count = 1
ans = 'python'
word = ''
while count < 10:
guess = input('guess a letter: ')
guesses.append(guess)
if ''.join(word) == ans:
print('you win')
break
elif len(guess) > 1 and ans == guess:
print(ans)
print('you win')
break
else:
for char in ans:
if char in guesses:
word.append(char)
print(char)
else:
print('_')
count += 1
else:
print('\nyou lose')
这里唯一的两个变化是 print 现在需要括号,所以每个 print 'stuff'
现在是 print('stuff')
,而 raw_input 现在是 input('input prompt')
。除此之外,我很惊讶你能够逃脱word.append(char)
。在 2.7 或 3.x 中,您不能在 python str
上使用 append()
。我认为您试图将其用作数组,因为这是您使用''.join(word)
的唯一原因。为了解决这个问题,我会使用word = []
而不是word = ''
。现在你的''.join(word)
应该可以正常工作了。
我建议您采取下一步并尝试在您的程序中实现以下内容:如果用户没有输入单个字符,请使其不添加到猜测列表中。如果您还没有,请尝试将其设为main.py file。将程序的一部分变成函数。添加一个新的游戏命令。每次打印出一个真正的刽子手 in chars 。添加文件 io 以读取猜测单词(即,您可以在文件中添加很多单词来选择,而不仅仅是 python)。
【讨论】:
以上是关于初学者的python刽子手代码的主要内容,如果未能解决你的问题,请参考以下文章