繁体   English   中英

猜数 Python 2.7

[英]Guess Number Python 2.7

我在使用这个程序时遇到了问题。 它应该生成一个 1 到 1000 之间的随机整数,但它会生成类似 627.689698698679869857476409674875985638765868054675765876986765876976878

 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 编辑器中运行的),当您第一次输入您的数字时,它不会告诉您是否应该猜测更高或更低。

一些东西。 您通常不应在 Python 导入中使用 * ( from module import * )。 如果您只使用模块中的一个函数,那么使用from random import randint会更安全,并且您的代码将更容易理解。

您在第一次猜测后重新分配您的 runNum。 一旦将 ranNum 重新分配给新值,您的第一个猜测可能会更改为正确答案。

此外,您的描述说您希望生成一个 1 到 1000 之间的随机数,但是您对 ranNum 的第一个分配是ranNum == randint(8, 10000) ,这将生成一个 8 到 10000 之间的随机整数。

我的建议是删除循环外的名称分配并将您的 while 条件更改为while True:然后在您的if numGuess == ranNum:逻辑中,添加一个break语句来中断 main() 内的循环。

至于您的问题,我不相信您会得到像使用 randint() 提供的结果那样长的结果。 您是否遗漏了一部分代码?

一些事情要么是多余的,要么是做错了,以下是对您的解决方案的修改,并进行了一些更改:

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 机制 - 可以改进(见上文)

试试这个,只是在你的代码中更正了..

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM