2014-10-30 4 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'. .. –

+0

все еще только выдает слишком высокие ... –

+4

Не рекомендуется обновлять свой вопрос, чтобы отразить ответы (даже если ответы исправить). Это заставляет ответы выглядеть неуместными и удаляет любые другие ошибки из-за ошибок. –

ответ

7

Я думаю, это потому, что вы сравниваете string и int. Все, что захватывается из 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, как только я введу правильный номер. –

+0

Он выходит для меня ... – maksimov

+1

Или, возможно, вы забыли перевести свой второй 'raw_input' в' int' ... как ваш обновленный вопрос указывает. Вы не должны обновлять свой вопрос ответами, так как вы только путаете вещи. – maksimov

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!" 

вам нужно, чтобы заставить вход в целое

+0

почему вниз голосование за рабочую программу? – Hackaholic

+0

вы пропустили int из второго вызова raw_input. –

+0

Да, это была типичная ошибка, но голосование не было soln – Hackaholic

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

Смежные вопросы