Python - возможно ли использовать список в качестве условия для оператора if? - PullRequest
2 голосов
/ 29 июня 2019

Я нахожусь в процессе изучения Python, и одним из упражнений, которое я пытался сделать, было создание игры «угадай число». Я сделал очень простой, но теперь я хочу пойти немного дальше и установить некоторые границы для входов, чтобы программа была защищена от ошибок. Вот мой код:

# Guess the number game.

import random

print('Hello. What is your name?')

yourName = input() # collects user's name

solution = random.randint(1,20)

print('Well, ' + str(yourName) + ', I am thinking of a number between 1 and 20.')

acceptable = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20'] # acceptable answers

def game():

    for attempts in range(1,6):

                    print('Take a guess. You have ' + str(6 - attempts) + ' attempt(s) remaining')

                    # try:

                    guess = (input())

                    while guess:

                                if guess != acceptable:

                                    print("That is not a valid answer!")

                                    guess = (input())

                                else:

                                    moveon()

def moveon():

                    while guess != solution:

                                if guess < solution:

                                    print('Your guess is too low. Try again.')

                                elif guess > solution:

                                    print('Your guess is too high. Try again.')

                                else:

                                    endofgame()

'''
                    except ValueError:

                            print('Please enter a guess that is a number.')

                            attempts + 1 == attempts
'''

def endofgame():

    if guess == solution:

            print('You guessed it! It took you ' + str(attempts) + ' attempt(s)')

            playAgain()

    else:

            print('Game over! The number I was thinking of was ' + str(solution))

            playAgain()



# Option to play again with a new number

def playAgain():

    global solution

    print('Play again? Y/N')

    playAgain = input()

    if playAgain == 'Y':

            print('Okay, ' + str(yourName) + ', I have another number between 1 and 20.')

            solution = random.randint(1,20)

            game()

    else: print('Thanks for playing!')



# Start game
game()

Итак, я хочу убедиться, что, когда пользователю предлагается ввести число от 1 до 20, ввод ответов типа «22», «кофе» или «14,5» будет недействительным, и предложить им повторить попытку. и введите правильный ответ. Однако, когда я запускаю эту программу прямо сейчас, любой введенный ответ возвращается как недействительный. Как мне сделать так, чтобы только одни ответы были приняты, а другие нет? Я подозреваю, что есть другой способ, чем использование списка, о котором я еще не знаю. Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 29 июня 2019

Вам нужно проверить, содержится ли элемент , а не в списке, вот как мы делаем это в Python:

if guess not in acceptable:
1 голос
/ 29 июня 2019

Вместо if guess != acceptable вы хотите использовать if guess not in acceptable.

С помощью python вы можете проверить, существует ли элемент внутри массива, с помощью команды in.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...