2015-08-22 4 views
0

Я совершенно новичок в программировании. Я начал с простого языка для newbs, python. Я создал эту простую догадку номерной игры. Но моя проблема заключается в том, что, когда вы угадываете номер, который сценарий не заканчивается, он просто продолжает повторяться. Я просто хотел бы знать, почему. Спасибо.Почему моя угадающая игра не закончится, когда вы догадались номер?

P.S. любые другие советы были бы весьма полезны, например, как улучшить кодирование. Говорю, что я совершенно новый, и я действительно не знаю много функций, так что будь предельно простым и снисходительным (я не против). Привет, ребята! [ummm ... как я могу сделать это более суровым? Я хотел изменить сценарий интервал немного быть он держит насыщая это должно быть более substansive так что надеюсь, этот дополнительный текст делает его более substansive ... просто игнорировать эту часть]

import random 
running = True 

while running: 
    guessTaken = 0 
    print("Hello! What is your name? ") 
    myName = input() 

    number = random.randint(0,10) 
    print("Well, " +myName+ ", I am thinking of a number between 1 and 10.") 
    print("I'll give you 10 guesses, see if you can guess the number I'm thinking of!") 

    while guessTaken < 10: 
     guess = input("Go on! Take a guess: ") 
     guess = int(guess) 

     guessTaken += 1 

     if number > guess: 
      print("Too low!") 
     if number < guess: 
      print("Too high!") 
     if number == guess: 
      print("You got it!") 
      guessTakenstr = str(guessTaken) 
      print("Good job " +myName+ ", you guessed my number in " +guessTakenstr+ " guesses!") 
      input("Press <enter> to exit") 
      running = False 

    if number != guess: 
     number = str(number) 
     print("Sorry, you've had your 10 goes! The number I was think of was " +number) 
     running = False 
+0

Правильно ли вы отшлифованы? Если нет, можете ли вы исправить это? В настоящее время в соответствии с вашим отступом вы никогда не выходите из 'while running:' loop. –

ответ

1

Вы должны изменить состояние

while guessTaken < 10: 

в

while (guessTaken < 10) and running: 

EDIT

Добавление дополнительных пояснений. Цикл while будет проверять состояние guessTaken < 10 и продолжать работать 10 раз, независимо от того, что ваш вход (так как guessTaken увеличивается один раз в цикле). Для того, чтобы вырваться из петли, вам необходимо либо добавить break заявление здесь

if number == guess: 
     print("You got it!") 
     guessTakenstr = str(guessTaken) 
     print("Good job " +myName+ ", you guessed my number in "+guessTakenstr+ " guesses!") 
     input("Press <enter> to exit") 
     running = False 
     break # Break statement added 

или вам нужно проверить перед входом в цикл (опять же), если пользователь дал правильный вход, как в моем ответе

while (guessTaken < 10) and running: 
+0

Спасибо, kampta, похоже, это решило проблему, и я думаю, что я понимаю, почему, но если у вас есть время, вы могли бы объяснить, почему это сработало? – Physco111

+0

Я добавил больше объяснений в ответ. Дайте мне знать, если это сработает. – kampta

0

Я предполагаю, отступы для ваших внутреннего времени цикла на самом деле правильно в вашей программе (то есть он отступ 2 места внутри while running:) цикла, как -

print("I'll give you 10 guesses, see if you can guess the number I'm thinking of!") 

    while guessTaken < 10: 

В противном случае программа даже не дойдет до части угадывания номера.

В этом случае проблема заключается в том, что в вашей if-части, когда число равно угадыванию, даже если вы устанавливаете running=False, вы не выходите из внутреннего цикла while, поэтому ваша программа будет продолжаться, пока вы не сделаете 10 догадок.

Кроме того, из программы кажется, что вам действительно не нужен внешний цикл, поскольку после 10 догадок вы все еще выходите из цикла (так что он работает только для одной итерации), если это так, вы можете просто удалить этот цикл (петля while running:) вообще и вырваться из цикла while guessTaken < 10:. Пример:

guessTaken = 0 
print("Hello! What is your name? ") 
. 
. 

while guessTaken < 10: 
    . 
    . 
    if number == guess: 
     print("You got it!") 
     guessTakenstr = str(guessTaken) 
     print("Good job " +myName+ ", you guessed my number in " +guessTakenstr+ " guesses!") 
     input("Press <enter> to exit") 
     break 

if number != guess: 
    number = str(number) 
    print("Sorry, you've had your 10 goes! The number I was think of was " +number) 
+0

Спасибо Anand, я попробовал ваш код, но как только вы угадаете номер, он просто повторяет весь скрипт с самого начала - из части «Привет, что вы назовете» - Im не уверен, что если я ввел ваш скрипт правильно, есть что-нибудь что я должен был добавить к нему? – Physco111

+0

Вы не удалили цикл 'while running:'? Пожалуйста, прочитайте полное описание в ответе, а не просто скопируйте код. –

+0

О да, я сделал это, и это сработало. Спасибо. Я все еще получаю удовольствие от программирования. Похоже, существуют разные способы решения одной и той же проблемы. – Physco111

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