Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.08.2019, 14:38   #1
Алексей2289
Новичок
Джуниор
 
Регистрация: 15.08.2019
Сообщений: 1
По умолчанию [Python] Несколько условий в if

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

Код:
what = (input("что делаем (+,-,*,/): "))
if what != "+" or "-" or "*" or "/":
	print("знак выбран  не правильно")	
	 exit(0)	
else:
	a = float(input("введите первое число:") )
	b = float(input("введите второе число:") )
	if  what == "+":
		c = a + b
	elif  what == "-":
		c = a - b
	elif  what == "*":
		c = a * b
	elif  what == "/":
		c = a / b
	print("Результат:" + str(c))

cmd:
D:\programm python>kalkylutor.py
что делаем (+,-,*,/): =
знак выбран  не правильно

D:\programm python>kalkylutor.py
что делаем (+,-,*,/): +
знак выбран  не правильно
D:\programm python>kalkylutor.py
что делаем (+,-,*,/): -
знак выбран не правильно

D:\programm python>

Как можно решить данную проблему?
______________________
Форматируйте код и используйте тег [CODE] (кнопка [CODE] в форме сообщения) при вставке кода на форум. Подробнее в FAQ

Последний раз редактировалось Вадим Мошев; 15.08.2019 в 15:20.
Алексей2289 вне форума Ответить с цитированием
Старый 15.08.2019, 14:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Вы прочитайте, что вы написали: если "знак не равен +" или "минус" или ... может еще или "синус" написать? Писать надо правильно: если "знак не равен +" или "знак не равен -" или "знак не равен /"...
p51x вне форума Ответить с цитированием
Старый 25.08.2019, 23:08   #3
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 672
По умолчанию

Цитата:
Сообщение от Алексей2289 Посмотреть сообщение
D:\programm python>kalkylutor.py
что делаем (+,-,*,/): -
знак выбран не правильно
Вы до ввода значений переменных a и b зацикливаитесь на исключительной ситуации
Код:
what = (input("что делаем (+,-,*,/): "))
if what != "+" or "-" or "*" or "/":
	print("знак выбран  не правильно")	
	 exit(0)
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 26.08.2019, 10:13   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Вы до ввода значений переменных a и b зацикливаитесь на исключительной ситуации
Что, простите?!!

p51x уже сказал.
эта строчка
Цитата:
Сообщение от Алексей2289 Посмотреть сообщение
Код:
if what != "+" or "-" or "*" or "/":
полный бред.

Какие ещё "исключительные ситуации"?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.08.2019, 18:38   #5
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 672
По умолчанию

Как по мне, реализовать можно все совершенно иначе, в виде простейшего калькулятора:
Код:
def add(x, y):
   return x + y
def subtract(x, y):
   return x - y
def multiply(x, y):
   return x * y
def divide(x, y):
   return x / y
print("Выбор операнда:")
print("1.Сложение")
print("2.Вычитание")
print("3.Умножение")
print("4.Деление")
choice = input("Сделайте выбор операнда(1/2/3/4):")
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))
elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))
elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
   print(num1,"/",num2,"=", divide(num1,num2))
else:
   print("Ошибка выбора операнда")
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 26.08.2019 в 18:46.
Desc вне форума Ответить с цитированием
Старый 26.08.2019, 18:41   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

А где же иначе? Вы же написали абсолютно тоже самое, только "проблемную" проверку спрятали и добавили проблем для расширения.
p51x вне форума Ответить с цитированием
Старый 26.08.2019, 18:51   #7
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 672
По умолчанию

Иначе вот здесь:
Цитата:
Сообщение от Desc Посмотреть сообщение
else:
print("Ошибка выбора операнда")
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Старый 26.08.2019, 18:53   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Это к чему? Я код читать умею и в своем посте даже про это иначе написал.
p51x вне форума Ответить с цитированием
Старый 26.08.2019, 19:09   #9
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 672
По умолчанию

Не пойму о чем Вы?
В моем варианте выбираем операнд символами от 1 до 4, любой другой символ вызывает
Код:
print("Ошибка выбора операнда")
Единственное что не учтено это деление на 0.

Для устранения ошибки деления на 0:
Код:
def divide(x, y):
    return x / y if y != 0 else 0
или
Код:
def divide(x, y):
    return x / y if y != 0 else "Делить на 0 нельзя"
Весь код:
Код:
def add(x, y):
   return x + y
def subtract(x, y):
   return x - y
def multiply(x, y):
   return x * y
def divide(x, y):
    return x / y if y != 0 else "Делить на 0 нельзя"
print("Выбор операнда:")
print("1.Сложение")
print("2.Вычитание")
print("3.Умножение")
print("4.Деление")
choice = input("Сделайте выбор операнда(1/2/3/4):")
num1 = int(input("Введите первое число: "))
num2 = int(input("Введите второе число: "))
if choice == '1':
   print(num1,"+",num2,"=", add(num1,num2))
elif choice == '2':
   print(num1,"-",num2,"=", subtract(num1,num2))
elif choice == '3':
   print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
           print(num1,"/",num2,"=", divide(num1,num2))
else:
   print("Ошибка выбора операнда")
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 26.08.2019 в 22:31.
Desc вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько условий if(c++) Sterben Помощь студентам 0 26.12.2015 19:01
несколько условий Ernest027 БД в Delphi 5 14.08.2015 21:03
несколько условий поиска the_deer_one SQL, базы данных 1 17.09.2013 08:54
Несколько условий в Экселе Margo1701 Microsoft Office Excel 9 29.07.2013 09:28
ЕСЛИ(И()) несколько условий VictorM Microsoft Office Excel 10 04.02.2012 15:40


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS