Как выбрать только 1 элемент в списке для оператора if - PullRequest
0 голосов
/ 27 мая 2020

Эта программа печатает "Выберите действительную функцию!" даже если ввод правильный, почему это так? И как я могу сказать программе, что я говорю об отдельных элементах в списке, а не обо всем списке?

sign = input ("Enter the sign: ")
if sign != ["+","-","*","/"]:
    print ("Select a Valid function!")
else:
    print ("Let's Begin")
if sign =="+":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)+int(no2))
elif sign =="-":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)-int(no2))
elif sign =="*":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)*int(no2))
elif sign =="/":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)/int(no2))

Ответы [ 3 ]

0 голосов
/ 27 мая 2020

Как указывали другие, вы не используете правильный оператор, чтобы проверить, есть ли что-то в списке.

Но вам даже не нужна эта проверка. Просто добавьте оператор else: после всех if/elif.

sign = input ("Enter the sign: ")
if sign =="+":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)+int(no2))
elif sign =="-":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)-int(no2))
elif sign =="*":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)*int(no2))
elif sign =="/":
    no1 = input("Enter the first number: ")
    no2 = input("Enter the second number: ")
    print (int(no1)/int(no2))
else:
    print ("Select a Valid function!")

Таким образом, вам не нужно согласовывать список со списком знаков, которые вы применяете.

0 голосов
/ 27 мая 2020

Как уже говорили другие, измените:

if sign != ["+","-","*","/"]:

на

if sign not in ["+","-","*","/"]:

, чтобы проверить отсутствие членства в списке.


Вы также можете сократите количество дублирования в вашем коде и избегайте операторов if...elif, используя словарь операторов , например:

import operator

ops = {'+': operator.add,
       '-': operator.sub,
       '*': operator.mul,
       '/': operator.truediv
      }

sign = input ("Enter the sign: ")

if sign not in ops:
    print ("Select a Valid function!")
else:
    print ("Let's Begin")
    no1 = int(input("Enter the first number: "))
    no2 = int(input("Enter the second number: "))
    ans = ops[sign](no1, no2)
    print(ans)
0 голосов
/ 27 мая 2020
if sign != ["+","-","*","/"]:

Это всегда будет верно, потому что sign не является списком, поэтому он никогда не будет равен списку.

Вы хотите использовать in оператор вместо:

if sign not in ["+","-","*","/"]:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...