所以我是Python新手,我开始研究的第一件事就是计算器。我的大部分代码都用于解决不正确的输入问题,但我试图弄清楚是否有一种方法可以添加/减去/乘/除多于两个数字。比如允许用户选择他们想要操作的数量,然后将它们全部放入计算中。真的,我只是在寻找任何可能的改进,甚至更高级的东西,比如让它来区分或集成功能和东西。有什么想法吗?
def add(num1, num2):
return num1 + num2
def sub(num1, num2):
return num1 - num2
def mult(num1, num2):
return num1 * num2
def div(num1, num2):
return num1 / num2
def main():
operation = raw_input('\n' "What do you want to do? (+, -, *, /): ")
if (operation != '+' and operation != '-' and operation != '*' and operation != '/'):
print("Please enter a valid operation")
else:
while True:
try:
var1 = float(raw_input("Enter num1: "))
var2 = float(raw_input("Enter num2: "))
except ValueError:
print('\n' "Please enter numbers only")
continue
else:
break
print('\n' "The answer is:")
if(operation == '+'):
print(add(var1, var2))
if(operation == '-'):
print(sub(var1, var2))
if(operation == '*'):
print(mult(var1, var2))
if(operation == '/'):
try:
print(div(var1, var2))
except ZeroDivisionError:
print("Infinity!")
while True:
main()
输出:
你想做什么? (+, - ,*,/): +
输入num1: 6
输入num2: 4
答案是:
10.0
你想做什么? (+, - ,*,/): r
请输入有效的操作
你想做什么? (+, - ,,/):
输入num1: 1
输入num2: e
请仅输入数字
输入num1: t
请仅输入数字
输入num1: 2.345
输入num2: 4.67
答案是:
10.95115
你想做什么? (+, - ,*,/): /
输入num1: 4
输入num2: 0
答案是:
无限!
你想做什么? (+, - ,*,/):
答案 0 :(得分:1)
你可以看一些事情:
对于多个数字,您可以查看varargs,它允许您将任意数量的参数放入函数中。例如:
def add(*args):
sum = 0
for number in args:
sum += number
return sum
print(add(1, 2, 4, 3)) # prints 10
*表示获取args之后传入的所有内容,并将它们放入列表中。这使args成为一个列表,而不是一个数字,你可以迭代它。 你可以使用split函数来分解用户输入的数字列表(“1 2 4 3”.split()),然后将它们全部发送到该函数中。
你还可以看一下用户输入一个典型的数学表达式(“12 + 5 * 4 - 8”),然后将其转换为后缀表示法并解析它,就像实际计算器处理这类事物一样。这有点复杂,但你会学到很多关于Python的知识!这些链接提供了有关该过程的更多信息:
Convert to postfix
Evaluate postfix expression