2015-11-19 78 views
-6

我有这个程序的麻烦。据suposed产生1和1000之间的随机整数,但它会产生类似627.68969869867986985747640967487598563876586805465097080967576587609787587658976098猜数Python 2.7

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编辑跑) 此外,第一次输入你的电话号码时,它不会告诉你是否应该猜出更高或更低。

+1

你是如何确定它会产生这种奇怪的看着号码?我很难相信'randint'给你的东西不是一个整数。另外,你可以正确格式化你的代码吗?例如,我怀疑你的主要是无限递归的。 –

+0

好吧,如果它打印的更高或更低,你会在打印之前询问用户两次。 – csmckelvey

+2

你发布的代码有很多错误,但没有一个像你描述的那样。 – user2357112

回答

0

有几件事。您通常不应该在Python导入中使用*(from module import *)。如果您只使用模块中的一个功能,那么使用from random import randint时,它会更安全并且更易于理解您的代码。

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

而且,你的描述说,你正在寻找生成1到1000,但之间的随机数的ranNum的第一项任务是ranNum == randint(8, 10000)和8个和10000

之间我的建议是,将产生一个随机INT删除循环外部的名称分配并将您的while条件更改为while True:,然后在if numGuess == ranNum:逻辑中添加一条break语句以打破main()中的循环。

至于你的问题,我不相信你会得到一个很长的结果,比如你使用randint()提供的结果。您遗漏了一部分代码吗?

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 /如果机制 - 可改善(见上文)
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()