Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确设置此变量?-python_Python - Fatal编程技术网

如何正确设置此变量?-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('格式错误的字符串')