2015-11-19 83 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()