猜数字Python 2.7

时间:2015-11-19 20:06:07

标签: python python-2.7

我遇到了这个程序的问题。它被用来生成一个介于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编辑器中运行的) 此外,第一次输入您的号码时,它不会告诉您是否应该猜测更高或更低。

3 个答案:

答案 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()
  • 由于while循环之前的冗余调用,您在开始时要求用户输入两次
  • 致电ranNum = randint(8, 100000) - 不需要
  • 在开始循环之前,您只想ranNum = randint(0,1000)执行一次
  • if / else / if机制 - 可以改进(见上文)

答案 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()