我遇到了这个程序的问题。它被用来生成一个介于1和1000之间的随机整数,但它会产生类似于627.68969869867986985747640967487598563876586805465097080967576587609787587658976098
from random import *
def main():
numGuess = input ("guess your number")
ranNum = randint(8, 100000)
while ranNum <> numGuess:
print numGuess
numGuess = input ("guess your number")
print numGuess
ranNum = randint(0,1000)
if numGuess > ranNum :
print("ugg, your number is too big")
else:
print("whoops, your number is too small")
if numGuess == ranNum :
print("YAHOO, YOU GOT IT RIGHT!!!!!!!!")
main()
有人可以告诉我为什么这不起作用(它是在python 2.7编辑器中运行的) 此外,第一次输入您的号码时,它不会告诉您是否应该猜测更高或更低。
答案 0 :(得分:0)
一些事情。通常不应在Python导入中使用*(from module import *
)。如果您只使用模块中的一个功能,则更安全,如果您使用from random import randint
,您的代码将更容易被理解。
您在第一次猜测后重新分配您的ranNum。一旦将ranNum重新分配给新值,您的第一个猜测就会变为正确的答案。
此外,您的描述显示您要生成1到1000之间的随机数,但您对ranNum的第一次分配是ranNum == randint(8, 10000)
,这将生成一个介于8和10000之间的随机数。
我的建议是删除循环外的名称赋值,并将while条件更改为while True:
,然后在if numGuess == ranNum:
逻辑中添加break
语句以打破循环在main()内。
至于你的问题,我不相信你会得到一个很长的结果,例如你使用randint()提供的结果。您遗漏了部分代码吗?
答案 1 :(得分:0)
有些事情是多余的或做错了,以下是对您的解决方案进行一些修改后的修改:
from random import *
def main():
numGuess = -1
ranNum = randint(1, 1000)
while ranNum <> numGuess:
numGuess = input ("guess your number")
print numGuess
if numGuess > ranNum :
print("ugg, your number is too big")
elif numGuess < ranNum:
print("whoops, your number is too small")
else:
print("YAHOO, YOU GOT IT RIGHT!!!!!!!!")
main()
ranNum = randint(8, 100000)
- 不需要ranNum = randint(0,1000)
执行一次答案 2 :(得分:0)
试试这个,刚刚修改了代码..
from random import *
def main():
numGuess = 1
ranNum = 10
while ranNum <> numGuess:
ranNum = randint(1,1000)
numGuess = input ("guess your number")
#print ranNum, "random"
if numGuess > ranNum :
print("ugg, your number is too big")
elif numGuess < ranNum:
print("whoops, your number is too small")
else:
print("YAHOO, YOU GOT IT RIGHT!!!!!!!!")
main()