好的,尝试制作一个简单的猜数字游戏,但我找不到这段代码中的错误。仍然是python的新手,所以可能是原因,但我无法弄清楚它有什么问题。
import random
from time import sleep
def start():
print("Welcome To The Guessing Game \n Try to guess the number I'm thinking of \n Good luck!")
selectRandomNumber()
guessCheck(number, numberInput=1)
def restart():
print("Creating new number ...")
sleep(1)
print("OK")
selectRandomNumber()
guessCheck(number,numberInput=1)
def selectRandomNumber():
number = random.randint(0,1000)
tries = 0
return
def tryAgain():
while True:
try:
again = int(input("Do you want to play again? y/n:"))
except ValueError:
print("Couldn't understand what you tried to say")
continue
if again == "y" or "yes":
print("Awesome! Lets go")
restart()
elif again == 'n' or "no":
print("Goodbye!")
break
else:
print("Not a valid option")
continue
def guessCheck(number,numberInput=1):
while True:
try:
numberInput = int(input("What number do you think it is?: "))
except ValueError:
print("Couldn't understand that. Try again")
continue
if numberInput > number:
print("Too high")
tries += 1
continue
elif numberInput < number:
print("Too low")
tries += 1
continue
elif numberInput == number:
print("Congrats! You got my number")
tryAgain()
number = selectRandomNumber()
print(number)
start()
每次我尝试运行该程序时,我都会遇到同样的错误。 它告诉我:
Traceback (most recent call last):
File "python", line 60, in <module>
start()
File "python", line 8, in start
guessCheck(number, numberInput)
NameError: name 'number' is not defined
不太明白这意味着什么。 一些帮助将不胜感激。谢谢!
*更新*
能够修复关于定义变量的部分,但现在新问题发生在我尝试运行的时候
与之前相同的代码但添加了
guessCheck(number,numberInput=1)
并在末尾添加了变量number
number = selectRandomNumber()
print(number)
start()
当我运行它时,我得到了这个
None # this is from `print(number)` so instead of getting a number here I'm getting `None`
Welcome To The Guessing Game
Try to guess the number I'm thinking of
Good luck!
What number do you think it is?:
答案 0 :(得分:0)
Traceback正在告诉你:
start()
。start()
名为guessCheck()
。 guessCheck()
:变量名number
和numberInput
。 numberInput
之后,guessCheck()
才会被定义,并且number
实际上并未在任何地方定义。 正如Manoj在评论中指出的那样,您可能希望number
保持selectRandomNumber()
的输出。因此,不要只在selectRandomNumber()
中调用start()
,而是尝试使用number = selectRandomNumber()
。
您可以在此后的行上添加print(number)
,以确保number
分配了值。
现在number
有一个值,进入您对guessCheck()
的调用。但仍然保留了numberInput
未定义。您可以为函数参数设置默认值,如下所示:
guessCheck(number, numberInput=1)
这样,当调用guessCheck但numberInput
尚未定义时,它会自动为其赋值1
,直到您明确设置它为止。
您的代码可能会遇到其他问题。我的建议是简单地开始 - 从每个单独的部分构建你的游戏,并且只有当你确定每个人都在工作时才把它们放在一起。这可能看起来更慢,但试图走得太快会引起像这样的误解。