我是python的新手,我正在尝试制作类似hang子手的游戏。当我更正其他错误时,第1行出现错误。您还可以给我一些关于将来使用/不使用的建议,例如多余的代码。这是基本游戏;
word = hot
letters = ["h", "o", "t"]
guess_count = 0
guess_limit = 5
while guess_count < guess_limit:
guess_count += 1
guess = int(input("What is your letter? "))
if guess == letters[0]:
print("One down!")
elif guess == letters[1]:
print("Holy Moly!")
elif guess == letters[2]:
print("Wow! you're on fire")
if guess == word:
if True:
print("Ding! Ding! Ding! We have a winner!")
else:
print("Better luck next time!")
这是我的第一个项目/游戏,也是我第一次使用Stackoverflow,所以请放轻松,任何建议都对我有帮助!
答案 0 :(得分:1)
您的代码中有一些错误:
第1行: word = hot
==> word = 'hot'
。您需要将变量的值设置为字符串,使用' '
或" "
声明字符串。如果不这样做,编译器会搜索变量hot
的值,该值不存在。
第7行: guess = int(input("What is your letter? "))
==> guess = str(input("What is your letter? "))
或guess = input("What is your letter? ")
。您提示玩家输入字母string
,因此在您的程序中,您可以选择使用str()
来将输入转换为string
类型,也可以选择仅使用{{1 }},因为此函数返回一个input()
值。
通用代码
您可以进行一些改进,缩短string
块:
if - elif - elif
这应该有效。如果您对这段代码有任何疑问,请随时提问。
挑战:
当程序要求输入时,请确保显示了猜测的数量。
例如# outside of while loop
correct = 0
first = True
# after input() function in the while loop
if guess in letters:
correct+=1
letters.remove(guess)
print("You have found a letter!")
else:
print("Wrong, try again")
if correct == len(word) and first == True:
print("You have found all the letters")
first = False
if guess == word:
print("You have found the word!")
答案 1 :(得分:0)
在您的代码中,您正在设置word = hot
。编译器认为hot
一词与另一个未定义的变量有关,因此会引发未定义的变量错误/异常。如果单词hot
被认为是一个变量,而不是在{之前定义它{1}}行这样,
word = hot
如果应该对字符串(单词/句子)使用hot,则将其用引号引起来,即hot = 'Some Value'
word = hot
答案 2 :(得分:0)
您只需要更改:
word = hot
到
word = "hot"
否则,python不会将“ hot”识别为字符串,而是会尝试在当前名称空间中查找它的对象表示形式。
另外,您需要将int强制转换为str(对于py2):
guess = int(raw_input("What is your letter? "))
到
guess = str(raw_input("What is your letter? "))
用户输入将是一个字符串,因此尝试将该输入转换为整数将导致错误!