Как сделать else не в функции
Хотел сделать калькулятор на питоне и проверку на то соответствует ли ответ пользователя, и есть такой вопрос, пайтон мне выдает ошибку:
else:
^
SyntaxError: invalid syntax
при коде:
while True:
def code():
print(Back.RED)
what = input("Что делаем? (+, -, *, /, %, ^): ")
if what != ("+" and "-" and "*" and "/" and "%" and "^"):
print("Не понял тебя")
code()
else:
print(Back.MAGENTA)
a = float(input("Введите первое число: "))
print(Back.CYAN)
b = float(input("Введите второе число: "))
if what == "+":
c = a + b
if what == "-":
c = a - b
if what == "*":
c = a * b
if what == "/":
c = a / b
if what == "%":
c = a % b
if what == "^":
c = a ** b
print(Back.GREEN)
print(Style.BRIGHT)
print("Результат: " + str(c))
input()
объясните пожалуйста что неправильно, сильно не ругайте, это моя вторая программа после hello world
Заранее спасибо за ответ!
Ответы (3 шт):
Вы не можите использовать else если до него нету if, потому что else подразумвает что если не if или elif, то else, добавте перед else таб и все что идет дальше через два таба P.S. добавьте после code() таб
Советую изучить базовый синтаксис Python. Он отличается от многих других ЯПов строгостью написания отступов - они являются обозначением начала и конца блоков (в других ЯПах обычно для этого используется {}).
В Вашем случае легче показать на места, где что-то написано правильно, чем указать ошибки, тем не менее:
- Условие
what != ("+" and "-" and "\*" and "/" and "%" and "^")будет истинно только приwhat == "^", и по своей структуре неверно. Нельзя вынестиwhat !=как общий множитель за скобку. Правильно:what != "+" and what != "-" and what != "*" and what != "/" and what != "%" and what != "^" - В строке 10 происходит рекурсия, а так как выхода из функции нет нигде, она становится бесконечной и непрерывной.
- Блок else идёт вообще непонятно (особенно для интерпретатора) где, а главное - для чего и к чему относится
Если приложить фантазию для осмысления сути программы и устранить базовые ошибки, то получится примерно так:
while True:
def code():
what = input("Что делаем? (+, -, *, /, %, ^): ")
if what != "+" or what != "-" or what != "*" or what != "/" or what != "%" or what != "^":
print("Не понял тебя")
else:
a = float(input("Введите первое число: "))
b = float(input("Введите второе число: "))
# Здесь Ваша реализация калькулятора в зависимости от значения what
# ...
# ...
code()
Ответ на вопрос в комментариях: В текущей реализации оно так и будет происходить, но можно сделать и по-другому - внести while True в функцию так:
while True:
what = input("Что делаем? (+, -, \*, /, %, ^): ")
if what != "+" or what != "-" or what != "\*" or what != "/" or what != "%" or what != "^":
print("Не понял тебя")
else:
break
P.S. И да, как написали ниже, действительно можно условие сделать
if what not in ('+-*/%^')
Так ещё лаконичней:
if what not in ('+-*/%^'):
В примере выше с циклом while будет работать как вы хотите.