Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2016 12:55:29

Volis
Зарегистрирован: 2016-08-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!

Вот сама задача:

Напишите простой калькулятор, который считывает с пользовательского ввода три строки: первое число, второе число и операцию, после чего применяет операцию к введённым числам (“первое число” “операция” “второе число”) и выводит результат на экран.

Поддерживаемые операции: +, -, /, *, mod, pow, div, где
mod — это взятие остатка от деления,
pow — возведение в степень,
div — целочисленное деление.

Если выполняется деление и второе число равно 0, необходимо выводить строку “Деление на 0!”.

Обратите внимание, что на вход программе приходят вещественные числа.

Вот мой код:
a = float(input())
b = float(input())
c = input()
if b == 0 and (c == ‘div’ or ‘mod’ or ‘/’):
print(“Деление на 0!”)
elif c == ‘+’:
print(a + b)
elif c == ‘-’:
print(a - b)
elif c == ‘*’:
print(a * b)
elif c == ‘/’:
print(a / b)
elif c == ‘mod’:
print (a % b)
elif c == ‘div’:
print(a // b)
elif c == ‘pow’:
print (a ** b )

Что с ним не так?

Офлайн

#2 Авг. 17, 2016 16:06:06

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Помогите с задачкой!

А что с ним не так?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Авг. 17, 2016 23:13:36

Marlton
Зарегистрирован: 2016-08-14
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!

У вас кавычки не в ту сторону смотрят

 a = float(input())
b = float(input())
c = input()
if b == 0 and (c == 'div' or 'mod' or '/'):
    print('Деление на 0!')
elif c == '+':
    print(a + b)
elif c == '-':
    print(a - b)
elif c == '*':
    print(a * b)
elif c == '/':
    print(a / b)
elif c == 'mod':
    print (a % b)
elif c == 'div':
    print(a // b)
elif c == 'pow':
    print (a ** b )

Офлайн

#4 Авг. 18, 2016 06:47:34

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помогите с задачкой!

Volis
У вас ус отклеился ошибка в выражении

 c == 'div' or 'mod' or '/'
Это легко проверить:
 >>>
>>> c = 'foo'
>>> if c == 'div' or 'mod'  or '/':
...       print("с == 'div' or 'mod' or '/'")
... 
c == 'div' or 'mod' or '/'
>>>

Сделайте так:
 if b ==  0 and (c in ['div', 'mod', '/'])

Офлайн

#5 Авг. 19, 2016 17:21:46

Volis
Зарегистрирован: 2016-08-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!

old_monty
VolisУ вас ус отклеился ошибка в выражении
Спасибо

Офлайн

#6 Авг. 19, 2016 17:23:30

Volis
Зарегистрирован: 2016-08-17
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с задачкой!

old_monty
if b == 0 and (c == ‘div’ or ‘mod’ or ‘/’):
Но я сделал по другому. if b == 0 and (c == ‘div’ or с == ‘mod’ orс== ‘/’):

Офлайн

#7 Авг. 19, 2016 19:52:02

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Помогите с задачкой!

Volis
Но я сделал по другому. if b == 0 and (c == ‘div’ or с == ‘mod’ orс== ‘/’):
Это не “по другому”, у вас просто более развернутая (многословная) запись того же самого условия. Конечно, она мне была известна. И конечно, новичкам такую запись легче читать и понимать. Но я все же рекомендую записывать такие условия в форме "element in lst". Это вам пригодится, если будет длинный список, с множеством элементов. И вообще, это ближе к истинному Pythonic style.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version