Вот код для калькулятора в Python:Упрощая код - выполнять математические операции, основанные на операторе
import time
#Returns the sum of num1 and num2
def add(num1, num2):
return num1 + num2
#Returns the difference of num1 and num2
def subtract(num1, num2):
return num1 - num2
#Returns the quotient of num1 and num2
def divide(num1, num2):
return num1/num2
#Returns the product of num1 and num2
def multiply(num1, num2):
return num1 * num2
#Returns the exponentiation of num1 and num2
def power(num1, num2):
return num1 ** num2
import time
def main():
operation = input("What do you want to do? (+, -, *, /, ^): ")
if(operation != "+" and operation != "-" and operation != "*" and operation != "/" and operation != "^"):
#invalid operation
print("You must enter a valid operation")
time.sleep(3)
else:
var1 = int(input("Enter num1: ")) #variable one is identified
var2 = int(input("Enter num2: ")) #variable two is identified
if(operation == "+"):
print (add(var1, var2))
elif(operation == "-"):
print (subtract(var1, var2))
elif(operation == "/"):
print (divide(var1, var2))
elif(operation == "*"):
print (multiply(var1, var2))
else:
print (power(var1, var2))
main()
input("Press enter to exit")
exit()
Около 30 минут назад я нашел свою старую папку Python и взглянул на все мои основные сценарии из 8 + месяцев назад. Я нашел мини-скрипт для калькулятора и подумал, что было бы интересно воссоздать его как можно меньше строк (я только сейчас изучаю лямбду). Вот что у меня есть:
main = lambda operation,var1,var2: var1+var2 if operation=='+' else var1-var2 if operation=='-' else var1*var2 if operation=='*' else var1/var2 if operation=='/' else 'None'
print(main(input('What operation would you like to perform? [+,-,*,/]: '),int(input('Enter num1: ')),int(input('Enter num2: '))))
input('Press enter to exit')
Я знаю, что это личный вопрос, основанный с моей конкретной ситуации, но я был бы признателен за любую помощь, что делает его короче. Есть ли способ сделать его более Pythonic? Я правильно использую лямбду? Есть ли способ обработки ошибок в моей сокращенной версии? Любая помощь будет оценена по достоинству. Я очень новичок в этом. Благодаря!
Чтобы сделать его более вещий, поставить методы обратно и сделать его читаемым человеком – Sayse
Кроме того, может быть более подходящим для [codereview.se], но проверить свои руководящие принципы, прежде чем отправлять – Sayse
@Adler: Добавлен ответ. Это то, что тебе надо? Отметьте ответ как принятый, если вы достигли того, что хотите, чтобы другие смотрели на него в будущем как ссылка –