2016-06-03 2 views
-3

Вот мой код:Noob программист не может понять простой вопрос

name = input("What is your name? ") 
print name + " do you want to play a game?" 
answer = input("To play the game, type either yes or no. ") 
if answer == yes: 
    print "Great," + name + "lets get started!" 
elif answer == no: 
    print "Okay, good bye!" 

import random 

number = random.randint(1,50) 
guess = input ("Pick a number between 1 and 50. This number cannot be a decimal. ") 
if guess > number: 
    print "Your guess is too high!" 
elif guess < number: 
    print "Your guess is too low!" 
while guess != number: 
    print "Try again!" 
else import random 
    number = random.randint(1,50) 
if guess == number: 
    print "You guessed it!" 
    print "Great job." 
print "Do you want to play again?" 

while answer == yes: 
    import random 

    number = random.randint(1,50) 
    guess = input ("Pick a number between 1 and 50. This number cannot be a decimal. ") 
    if guess > number: 
     print "Your guess is too high!" 
    elif guess < number: 
     print "Your guess is too low!" 
    while guess != number: 
     print "Try again!" 
    if guess == number: 
     print "You guessed it!" 
     print "Great job." 
    print "Do you want to play again? 
elif answer == no: 
    print "Okay. Good game " + name + "!" 
    print "Play again soon!" 

Итак, мой первый вопрос в том, почему питон не признает вклад переменного имени в виде строки.

Второй вопрос - последний оператор elif продолжает давать синтаксическую ошибку. Я не знаю, почему.

Последний вопрос: могу ли я закодировать этот код любым простым способом?

+1

Подсветка синтаксиса отбрасывает последнюю проблему: вы забыли закрытие кавычки ", на приведенной выше строке. – zondo

+2

Некоторые примечания: 1) Сделайте свои заголовки дескриптивными. Ваше текущее название ничего не говорит о вашем вопросе. 2) Если вы ссылаетесь на ошибки или исключения, скопируйте полный текст в свой вопрос. Текст вашей синтаксической ошибки сообщит нам, где она находится. 3) Оставьте весь PS и спасибо. Он ничего не добавляет к вашему вопрос, и если вы правильно зададите свой вопрос, не будет никакой ненависти (за исключением худшего из людей, и ваш запрос не будет препятствовать им в любом случае). 4) Задавайте только один вопрос в каждом сообщении. 5) Уменьшите свой код до [MCVE] (http://stackoverflow.com/help/mcve) – skrrgwasme

ответ

2

В версиях Python 2x, input() принимает переменную как integer, вы можете использовать raw_input(), чтобы принять его как строку.

Итак, в основном измените свой input() на raw_input() для получения данных в виде строки.

В версиях Python 3x нет raw_input, есть только input(), и он принимает данные как строку.

Второй вопрос;

elif guess < number: 

    print "Your guess is too low!" 

while guess != number: 

    print "Try again!" 

else import random 

    number = random.randint(1,50) 

Это не правильный синтаксис, ваш else нужен if блок над собой. Вы не можете использовать else без блока if. Если вы думаете на секунду, это имеет смысл.

Ваш последний вопрос не соответствует правилам SO.

+2

'input()' оценивает ввод как код, он возвращает целое число, только если целое число - это то, что пользователь вводит. набрал что-то вроде '" wow "', он вернет строку. – zondo

+0

В частности, ['input' на Py2] (https://docs.python.org/2/library/functions.html#input) эквивалентно тому, что он завершает вызов' raw_input' в 'eval'; это источник ошибок в области безопасности и стабильности и почти никогда не должен использоваться. Если вы хотите принять произвольные литералы Python от пользователя без выполнения совершенно произвольного кода, вы можете «импортировать ast» и выполнить 'ast.literal_eval (raw_input (... promptstr ...))' или принять только 'int' , 'int (raw_input (... promptstr ...))'. – ShadowRanger

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