2014-10-30 39 views
0

试图在python中做一个简单的猜谜游戏程序,但我在java中更舒服。 当输入正确的数字时,表示它太高,不会退出while循环。 有什么建议吗?基本python编码

import random 
comp_num = random.randint(1,101) 
print comp_num 
players_guess = raw_input("Guess a number between 1 and 100: ") 
while players_guess != comp_num: 
    if players_guess > comp_num: 
     print "Your guess is too high!" 
    elif players_guess < comp_num: 
     print "Your guess is too low!" 
    players_guess = raw_input("Guess another number between 1 and 100: ") 
print "CONGRATULATIONS! YOU GUESSED CORRECTLY!" 
+0

使用'elif'第二'if'。 .. – 2014-10-30 00:14:54

+0

仍然只是输出太高... – 2014-10-30 00:18:32

+4

这不是一个好主意,不断更新您的问题以反映答案(即使答案是a重新正确)。它使答案看起来不相关,并消除了从错误中学习其他方面的机会。 – 2014-10-30 00:25:52

回答

7

我想这是因为你比较stringint。无论是从raw_input捕获捕获为string,并在Python:

print "1" > 100 # Will print true 

对于它的工作,转换:

players_guess = raw_input("Guess a number between 1 and 100: ") 

players_guess = int(raw_input("Guess a number between 1 and 100: ")) 
+0

谢谢,伙计们!但它仍然不会退出while循环,一旦我输入正确的数字.. – 2014-10-30 00:23:40

+0

它确实退出了我...... – maksimov 2014-10-30 00:25:13

+1

或者你忘了将第二个'raw_input'投射到'int' ......就像你的更新问题表明。你不应该用答案更新你的问题,因为你只是混淆了事情。 – maksimov 2014-10-30 00:27:08

5

你是一个比较字符串一个int。这就是为什么你会得到奇怪的结果。

试试这个:

players_guess = int(raw_input("Guess a number between 1 and 100: ")) 
0
import random 
comp_num = random.randint(1,101) 
print comp_num 
players_guess = int(raw_input("Guess a number between 1 and 100: ")) 
while players_guess != comp_num: 
    if players_guess > comp_num: 
     print "Your guess is too high!" 
    elif players_guess < comp_num: 
     print "Your guess is too low!" 
    players_guess = int(raw_input("Guess another number between 1 and 100: ")) 
print "CONGRATULATIONS! YOU GUESSED CORRECTLY!" 

需要强制输入到int

+0

为什么对工作计划投票? – Hackaholic 2014-10-30 00:28:43

+0

你错过了第二次raw_input调用的int。 – 2014-10-30 00:30:17

+0

是的,这是一个打字错误,下来投票不是一个soln – Hackaholic 2014-10-30 00:32:28

0

试试这个代码:

import random 
comp_num = random.randint(1,101) 
print comp_num 
players_guess = int(raw_input("Guess a number between 1 and 100: ")) 
while players_guess != comp_num: 
    if players_guess > comp_num: 
     print "Your guess is too high!" 
    elif players_guess < comp_num: 
     print "Your guess is too low!" 
    players_guess = int(raw_input("Guess another number between 1 and 100: ")) 
print "CONGRATULATIONS! YOU GUESSED CORRECTLY!" 
+0

您可以通过添加简短的解释来改善您的答案。 – dakab 2015-08-30 15:35:16