Входная проверка должна быть строкой и исключением - PullRequest
0 голосов
/ 15 октября 2018
x = input("Enter state 1")
y = input("Enter state 2")
z = input("Enter state 3")

# The three states are strings among a list

For example:
    state_1 = ['Light', 'Medium', 'Heavy']
    state_2 = ['Small', 'Medium', 'Large']
    state_3 = ['Blue', 'Red', 'Black']

If x != 'Light' or 'Medium' or 'Heavy':
    print("Wrong input")
else:
    x = pre_defined_function(x) #let's say

# Same to be done with other states, output given only if all three states are entered correctly

Я пытался выполнить попытку и исключение, но не смог ее получить:

Пожалуйста, помогите мне определить правильный метод для этой проверки

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Карл дал отличное объяснение.Ваш оператор if проверяет только if x != "Light".Так как вы используете or, он всегда будет иметь значение True, потому что "Medium" и "Heavy" всегда будут иметь значение True.

Что-то, что также может помочь, помещает инструкцию в цикл while.

while x not in state_1:
    print("Wrong input")
    x = input("Enter state 1: ")
else:
    x = pre_defined_function(x)

это будет непрерывно повторяться до тех пор, пока не будет введен правильный ввод.

0 голосов
/ 15 октября 2018

Ваша проблема в операторе сравнения if x != 'Light' or 'Medium' or 'Heavy':, который на самом деле выполняет только проверку для x != 'Light', а затем определяет, являются ли строки 'Medium' или 'Heavy' истинными (что они будут делать, поскольку строки больше длины 0оценивается как True).

Простой способ проверить, соответствует ли строка какому-либо значению из списка строк, - это использовать set().Поскольку набор позволяет практически мгновенно искать время, чтобы увидеть, находится ли значение внутри набора, вместо необходимости проверять x для каждого значения.

Использование набора для проверки соответствия x какой-либо из строкв state_1:

x = input("Enter state 1")
y = input("Enter state 2")
z = input("Enter state 3")

# Store states in sets
state_1 = {'Light', 'Medium', 'Heavy'}
state_2 = {'Small', 'Medium', 'Large'}
state_3 = {'Blue', 'Red', 'Black'}

if x not in state_1:
    print("Wrong input")
else:
    x = pre_defined_function(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...