2015-02-08 3 views
-1

Я новичок в программировании с помощью python/в целом. Цель состоит в том, чтобы создать случайное число и угадать номер пользователя, сообщая пользователю, правильно ли оно установлено, слишком велико или слишком низкое. По какой-то причине он говорит «слишком низко», независимо от того, что я делаю. Вот то, что я до сих пор:Python не распознает переменные в циклах

import random 
numberGenerated = random.randint (1, 5) 
userInput  = raw_input("Enter a number between one and five: ") 
numberEntered = int(userInput) 
while numberEntered > numberGenerated: 
    print "Your guess was too high" 
    userInput = raw_input("Enter a number between one and five: ") 
while numberEntered < numberGenerated: 
    print "Your guess was too low" 
    userInput = raw_input("Enter a number between one and five: ") 
else: 
    print "You're Correct!" 
+4

Исправьте отступ твоего –

+0

Там же изъян в логике программы ... – fuenfundachtzig

ответ

0

Вы должны использовать правильную логику ... попробовать это и спросить, если у вас есть какие-либо сомнения

import random 

numberGenerated = random.randint (1, 5) 

userInput = raw_input("Enter a number between one and five: ") 

numberEntered = int(userInput) 

while numberEntered!=numberGenerated: 

    while numberEntered>numberGenerated: 

     print "Your guess was too high" 
     #print numberGenerated 
     userInput = raw_input("Enter a number between one and five: ") 
     numberEntered = int(userInput) 

    while numberEntered<numberGenerated: 

     print "Your guess was too low" 
     #print numberGenerated 
     userInput = raw_input("Enter a number between one and five: ") 
     numberEntered = int(userInput) 

print "You're Correct!" 
+0

Подсказки: что произойдет, если пользователь вводит предположение, что слишком мало, то один, что слишком высоки? –

+0

@ Спасибо за указание ошибки –

0

другой способ сделать это, сохраняя логическое значение стоимость. Это делает ваш код более структурированным и читаемым.

import random 

numberGenerated = random.randint (1, 5) 

numberEntered = int(raw_input("Enter a number between one and five: ")) 
match=False 
while not match: 

    if numberEntered > numberGenerated: 
     print "Your guess was too high" 
     numberEntered =int(raw_input("Enter a number between one and five: ")) 

    elif numberEntered < numberGenerated: 
     print "Your guess was too low" 
     numberEntered =int(raw_input("Enter a number between one and five: ")) 

    elif numberEntered == numberGenerated: 
     print "You're Correct!" 
     match = True 

Если вы завернете все в функцию, вы можете использовать логическое значение, чтобы начать новую игру рекурсивно.

import random 

def playGame(): 
    match=False 
    numberGenerated = random.randint (1, 5) 
    numberEntered =int(raw_input("Enter a number between one and five: ")) 
    while not match: 

     if numberEntered>numberGenerated: 
      print "Your guess was too high" 
      numberEntered =int(raw_input("Enter a number between one and five: ")) 

     elif numberEntered<numberGenerated: 
      print "Your guess was too low" 
      numberEntered =int(raw_input("Enter a number between one and five: ")) 

     elif numberEntered==numberGenerated: 
      print "You're Correct!" 
      match = True 

    if match: 
     again =raw_input("type 'Y' to play again") 
     if again.upper() == "Y": 
      playGame() 

playGame()