2011-07-22 30 views
0

可能重複:
Learning Python: If condition executing all the time號碼猜測者計劃故障

這Python代碼是猜測,從1數到100沒有什麼錯的「猜測者()」函數,我知道這是因爲我的程序還有一個完美的「手動模式」。出於某種原因,它總是將'猜測'值分配給'低',並且一直這樣做直到它等於100並且程序「Ragequits」。它永遠不會做任何'高',它在整個執行過程中保持其默認狀態。無論如何,它從不執行「獲勝」模塊。 注意:變量'high'和'low'分別以101和0開頭,'guesser()'在它們之間選擇一個數字。在代碼的早期使用'goOn'來確定該人是否想再次玩。

  num = raw_input('Enter the number which you want the computer to guess. ') 
      unguessed = True 
      while unguessed: 
       if high == low + 1 or high <= low: 
        print 'Waitafligginflagginminnit! You CHEATED! *Ragequits*' 
        goOn = False 
        unguessed = False 
        print '' 
        raw_input('Press Enter to continue.') 
       guesses = guesses + 1 
       guesss = guesser() 
       print 'I guessed', guesss 
       if guesss == num: 
        print 'Yay! I won in', guesses, 'guesses!' 
        again = raw_input('Just press enter if you want to play again. Otherwise...you know the drill. ') 
        unguessed = False 
        print '\n\n' 
        if again: 
         goOn = False 
       else: 
        print 'Awww...' 
        if guesss > num: 
         high = guesss 
        elif guesss < num: 
         low = guesss 
+0

1和100之間的數字將永遠等於您從用戶處獲得的字符串;將其轉換爲整數。 – geoffspear

回答

5

你應該爲了留住猜測爲整數使用int(raw_input()),而不是raw_inputraw_input()單獨返回一個字符串,所以比較不會成立。

查看這些先前回答question,和這個確切的question作爲你的。

+0

...男人!我討厭那個。儘管運行了一個完美的邏輯聲音程序,但我絆倒了語法和技巧。格蘭特,他們是必要的語法和技巧,但仍然......感嘆。至少它比C#中的更好。謝謝,Raed。 – IronBeard

+1

可以說,在這種情況下,在C#中問題會更加明顯,因爲您將嘗試將一個字符串分配給一個int變量時發生編譯時錯誤。 – recursive