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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.08.2019, 14:38   #1
Алексей2289
Новичок
 
Регистрация: 15.08.2019
Сообщений: 1
Репутация: 10
По умолчанию [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
Сообщений: 14,713
Репутация: 2631
По умолчанию

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

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

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

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

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

Как по мне, реализовать можно все совершенно иначе, в виде простейшего калькулятора:
Код:
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("Ошибка выбора операнда")
__________________
Корректно сформулировал вопрос - приблизился к решению

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

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

Иначе вот здесь:
Цитата:
Сообщение от Desc Посмотреть сообщение
else:
print("Ошибка выбора операнда")
__________________
Корректно сформулировал вопрос - приблизился к решению
Desc вне форума   Ответить с цитированием
Старый 26.08.2019, 18:53   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,713
Репутация: 2631
По умолчанию

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

Не пойму о чем Вы?
В моем варианте выбираем операнд символами от 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("Ошибка выбора операнда")
__________________
Корректно сформулировал вопрос - приблизился к решению

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько условий 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


00:27.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.