2015-11-20 2 views
1

Я сейчас в процессе создания игры, где он циклически повторяется снова и снова, пока вы не угадаете правильное число.Пока цикл для скрипта ниже

Проблема, с которой я столкнулась, - получить правильную петлю. Я хочу пройти цикл while, но я могу заставить его работать, для определенных частей скрипта. Если я использую цикл «while true», команда печати if будет повторяться снова и снова, но если я использую какие-либо символы (<,>, < =,> = и т. Д.), Я не могу заставить его работать на заявлениях elif. Код может быть найден ниже:

#GAME NUMBER 1: GUESS THE NUMBER 
from random import randint 
x = randint(1,100) 
print(x) #This is just here for testing 
name = str(input("Hello there, my name's Jarvis. What's your name?")) 
print("Hello there ",name," good to see you!") 
num = int(input("I'm thinking of a number between 1 and 100. can you guess which one it is?")) 
attempt = 1 
while 
    if num == x: 
     print("Good job! it took you ",attempt," tries!") 
     num + 1 
    elif num >= x: 
     print("Too high!") 
     attempt = attempt + 1  
    elif num <= x: 
     print("Too low!") 
     attempt = attempt + 1 
    else: 
     print("ERROR MESSAGE!") 

Любая помощь приветствуется.

ответ

2

Вы можете использовать логическое значение в while:

from random import randint 
x = randint(1,100) 
print(x) #This is just here for testing 
name = str(input("Hello there, my name's Jarvis. What's your name?")) 
print("Hello there ",name," good to see you!") 
attempt = 1 
not_found = True 
while not_found: 
    num = int(input("I'm thinking of a number between 1 and 100. can you guess which one it is?")) 
    if num == x: 
     print("Good job! it took you ",attempt," tries!") 
     not_found = False 
    elif num > x: #Don't need the equals 
     print("Too high!") 
    elif num < x: #Don't need the equals 
     print("Too low!") 
    else: 
     print("ERROR MESSAGE!") 
    attempt = attempt + 1 
+0

Я буду править мой ответ, вы должны вход внутри цикла в то время как –

+0

Там вы идете !!! –

+1

Выбирает сейчас (не проверял). Стилистически, я думаю, что легче рассуждать о booleans, если вы не отрицаете, что они означают с идентификатором. Я имею в виду, я бы инициализировал 'found = False' и сделал' while not found: '. –

1

ваше время нуждается в толстой кишке, и состоянии

while True: 

и если вы используете какое-то время Истинное: вы должны закончить цикл, вы можете использовать переменный для этого.

while foo: 
    #Your Code 

    if num == x: 
     foo = False 

Кроме того, вы можете использовать строковый формат, а не разбивать строку. Например,

print("Good job! it took you %s tries!" % attempt) 

или

print("Good job! it took you {0} tries!".format(attempt)) 
1

Вы должны поставить свой вопрос в петле, потому что вы хотите повторить спрашивать после каждый отказ получить это право. Тогда же break цикл, когда пользователь нашел его:

attempt = 0 
while True: 
    attempt = attempt + 1 
    num = int(input("I'm thinking of a number between 1 and 100. can you guess which one it is?")) 
    if num == x: 
     print("Good job! it took you ",attempt," tries!") 
     break 
    elif num >= x: 
     print("Too high!") 
     attempt = attempt + 1  
    elif num <= x: 
     print("Too low!") 
    else: 
     print("ERROR MESSAGE!")