2014-12-25 3 views
1

Я был на потерях в два дня, пытаясь понять что-то (вероятно, из-за мою ограниченную способность кодирования) Usgin Python 3.4.1While Loop Response & Посмотрите File

Я пытаюсь разработать ряд вариантов вход и опция «4» - это пропуск, но только если файл присутствует в определенном месте. Я могу нажать любое число в любое время, и оно повторяется. Однако, если я выбираю 4, а файл отсутствует, он возвращается с неверным, но независимо от следующего ответа он продолжает мою программу.

print ("Please Choose From the Following Options") 
print ("1. Option A") 
print ("2. Option B") 
print ("3. Option C") 
print ("4. Option D") 
print ("5. Option R") 
monkeyGuess = input("Selection: ") 

monkey = "4" 

while monkey != monkeyGuess: 
    print() 
    print ("Incorrect") 
    monkeyGuess = input("Selection: ") 

while monkey == monkeyGuess: 
    try: 
     with open('c:\test.txt') as file: 
      break 
      pass 
    except IOError as e: 
     time.sleep(1) 
    print() 
    print ("Incorrect") 
    monkeyGuess = input("Selection: ") 

Я устал расчесывание два и с небольшими результатами:

while monkey != monkeyGuess: 
    time.sleep(1) 
    print() 
    print ("Incorrect Inputs Found") 
    monkeyGuess = input("Selection: ") 
    monkey == monkeyGuess or os.path.isfile('test.txt') 
    print() 
    print ("Incorrect Inputs Found") 
    monkeyGuess = input("Selection: ") 

ответ

0

Ваш первый подход Безразлично» t, поскольку после ввода правильного ввода (4) выполняется первый цикл while, и все, что пользователь должен сделать, чтобы обойти второй цикл, равен p ick неправильный ввод, потому что тогда while monkey == monkeyGuess будет False, и цикл остановится.

Второй подход пропускает if заявление, но даже если он был один, все пользователю необходимо сделать, это сделать while monkey != monkeyGuess:False, выбирая правильный номер - или нет файл существует, не имеет значения.


Решение:

print ("Please Choose From the Following Options") 
print ("1. Option A") 
print ("2. Option B") 
print ("3. Option C") 
print ("4. Option D") 
print ("5. Option R") 

monkey = "4" 

while True: 
    monkeyGuess = input("Selection: ") 

    if monkeyGuess != monkey: 
     print() 
     print ("Incorrect") 
     continue 

    try: 
     with open('c:\test.txt') as file: 
      break 
    except IOError as e: 
     print() 
     print ("Incorrect") 

Как правило, while True петля лучше всего подходит для этого сценария. Запросите вход пользователя внутри цикла, а затем break вне цикла, используя операторы if.

+0

Thats it! Большое вам спасибо, что я только что пробовал читать в то время как заявления Туре вчера вечером в 3 часа ночи и просто не мог обвести вокруг себя голову. Это работает отлично! – CipherBlue

0

Ваша проблема заключается в версии питона вы работаете этот код:

bash-3.2$ touch test.txt #Creates a file there so we can ignore the line that checks if it exists 
bash-3.2$ python2.7 monkey.py #This is where the script is 
Please Choose From the Following Options 
1. Option A 
2. Option B 
3. Option C 
4. Option D 
5. Option R 
Selection: 4 
() 
Incorrect 
Selection: ^C 
bash-3.2$ python3.4 monkey.py #Using python3.4 
Please Choose From the Following Options 
1. Option A 
2. Option B 
3. Option C 
4. Option D 
5. Option R 
Selection: 4 
bash-3.2$ #It exits fine 
bash-3.2$ 
+0

Извините, но новичок в этом и вы потеряли меня из своего кода. Это на 100% отличается от того, что я видел. Итак, ваше высказывание прекратить использовать пока? – CipherBlue

+0

Нет, @CipherBlue, извините за то, что вы сбиваете с толку :) Когда вы запускаете свой скрипт python, вы вызываете 'python myscript.py' в оболочке? Если нет, что вы вводите для запуска своего кода? –

+0

:) Не проблема, рад, что вы это поняли :) –