Почему оператор else не выполняется? - PullRequest
0 голосов
/ 02 ноября 2019
import random

words = ["Rock", "Paper", "Scissors"]

wins, loss = 0, 0

while True:

    word = random.choice(words)

    ur_word = input("Rock, Paper, Scissors..: ")

    print("\nComputer: {0}\nYou: {1}\n".format(word, ur_word))

    if word == ur_word:
        print("Tie!")
        continue
    elif ur_word == 'q':
        break
    elif word == 'Rock':
        if ur_word == 'Paper':
            print("You won!")
            wins += 1
        elif ur_word == 'Scissors':
            print("You lost!")
            loss += 1
    elif word == 'Paper':
        if ur_word == 'Rock':
            print("You lost")
            loss += 1
        elif ur_word == 'Scissors':
            print("You won!")
            wins += 1
    elif word == 'Scissors':
        if ur_word == 'Rock':
            print("You won!")
            wins += 1
        elif ur_word == 'Paper':
            print("You lost!")
            loss += 1
    else:                                        <<<<---------///----------HERE------------///----
        print("Please enter a valid input.")


    if wins == 3:
        print("\n\tYou won the entire game of three rounds!")
        break
    elif loss == 3:
        print("\n\tYou lost the entire game of three rounds!")
        break

** Теперь мой вопрос: почему выбранный оператор else не выполняется, когда я ввожу произвольное значение, например "74n9wndwekf"?

Один парень сказал мне, что вы не можете выполнять операторы if и elif после оператора else, а также что вы не можете выполнить свой код после оператора break. Я не понимаю, что он имел в виду, и я не знаю, имеет ли эта информация какую-то ценность для вас. **

Ответы [ 2 ]

2 голосов
/ 02 ноября 2019

else никогда не происходит, потому что один из ваших elif всегда будет верным. word будет всегда быть одним из Rock, Paper или Scissors, поэтому вы никогда не достигнете этого else.

Простое исправление будет состоять в реструктуризацииэта цепочка if...elif для проверки ur_word в первую очередь.

Еще один способ - проверить ввод, прежде чем делать что-либо еще, например:

ur_word = input("Rock, Paper, Scissors..: ")
if ur_word not in {'Rock', 'Paper', 'Scissors', 'q'}:
    print("Please enter a valid input.")
    continue
0 голосов
/ 02 ноября 2019

В своем заявлении if вы проверяете следующее:

  • , если на компьютере выбран случайный вариант "Rock", сделайте это ..,
  • else, если это "Papers"", сделайте это ..,
  • иначе, если это" Ножницы ", сделайте это ..,
  • иначе выведите неверный ввод.

Проблема здесьчто случайным выбором компьютера всегда будет либо «Камень», либо «Бумага», либо «Ножницы», поэтому будет выполнено одно из первых трех условий if / elif, поэтому ваш блок else никогда не будет достигнут.

Попробуйте сконструировать ваши операторы if, чтобы сначала проверить ввод пользователя вместо выбора компьютера.

...