Python 3.x 我是否可以使用变量来表示'+-*/';用python
我试图实现功能,但不使用:Python 3.x 我是否可以使用变量来表示'+-*/';用python,python-3.x,Python 3.x,我试图实现功能,但不使用: if op == '+': return a+b if op == '-': return a+b if op == '*': return a+b if op == '/': return a+b 您可以使用eval(f{a}{op}{b}”)来实现这一点,但这是一种安全风险 可能会使用更好的方法,这是基本操作的函数包装(但我们仍然需要dict将符号转换为名称): 您可以将其包装在try/块中,但块除外,以捕获不受支持
if op == '+':
return a+b
if op == '-':
return a+b
if op == '*':
return a+b
if op == '/':
return a+b
您可以使用
eval(f{a}{op}{b}”)
来实现这一点,但这是一种安全风险
可能会使用更好的方法,这是基本操作的函数包装(但我们仍然需要dict将符号转换为名称):
您可以将其包装在try
/块中,但
块除外,以捕获不受支持的操作(以及除零):
将用户交互移到函数之外是一个好主意,以强制和避免
Todo:如果用户未能输入
int
并为多个提示添加循环,则改进错误处理 可能重复的谢谢,现在更优雅了!如果它解决了问题,就考虑接受答案。谢谢
def calculator():
"""op will be a sign that used between a and b, a op b ==?"""
a = int(input('a: '))
b = int(input('b: '))
op = (input('op: '))
basic = ['+','-','*','/']
if op not in basic:
return 'this is a base calculator, use + - * / only'
else:
return a op b
import operator
ops = {
"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv,
}
a = 7
b = 6
op = "*"
print(ops[op](a, b)) # => 42
import operator
def calculate(op, a, b):
try:
return {
"+": operator.add,
"-": operator.sub,
"*": operator.mul,
"/": operator.truediv,
}[op](a, b)
except KeyError: pass
if __name__ == "__main__":
a = int(input('a: '))
b = int(input('b: '))
op = input('op: ')
result = calculate(op, a, b)
if result is None:
print('this is a base calculator, use + - * / only')
else:
print(result)