如何正确设置此变量?-python
如何设置+、-和* 我尝试做减法的例子如何正确设置此变量?-python,python,Python,如何设置+、-和* 我尝试做减法的例子 难度='-' FinalAnswer=((回答1)(难度)(回答2)) 我敢肯定这其实非常简单,而且我的大脑在放屁。你可以使用eval: FinalAnswer= eval('Answer1' + Difficulty + 'Answer2') 但如果字符串来自用户输入,则这是危险的。 或者,您可以这样做: FinalAnswer = { '-': Answer1 - Answer2, '+': Answer1 + An
难度='-'
FinalAnswer=((回答1)(难度)(回答2))
我敢肯定这其实非常简单,而且我的大脑在放屁。你可以使用
eval
:
FinalAnswer= eval('Answer1' + Difficulty + 'Answer2')
但如果字符串来自用户输入,则这是危险的。
或者,您可以这样做:
FinalAnswer = { '-': Answer1 - Answer2,
'+': Answer1 + Answer2,
'*': Answer1 * Answer2 } [Difficulty]
这里最干净的方法是使用
操作符
,例如:
import operator
operators = {'+': operator.add, '-': operator.sub}
x = operators['-'](a, b)
s = '10 + 3'
eval(s)
如果需要计算字符串,如
10+3
,可以使用eval()
,例如:
import operator
operators = {'+': operator.add, '-': operator.sub}
x = operators['-'](a, b)
s = '10 + 3'
eval(s)
正如@Błotosmętek在评论中指出的那样,在这种情况下,您不能使用安全得多的选项
ast.literal_eval()
。根据您的程序结构,您应该只需要一点控制流就可以做到这一点
if difficulty == 1:
operation = '+'
elif difficulty == 2:
operation = '-'
elif difficulty == 3:
operation = '*'
elif difficulty == 4:
operation = '/'
ast.literal\u eval('10+3')
引发ValueError('格式错误的字符串')