在python中使用elif的替代方法?

时间:2015-05-04 21:27:00

标签: python csv if-statement

我正在创建一个基本数学游戏的代码。

以下是我的代码的一部分,用于计算:

elif calculation == first_num*second_num: #If question is multiplication 
    print ("Question (%d)" % (i+1))
    print(first_num) #Print first number 
    print("Multiply (*)") #Followed by the multiplication  symbol
    print(second_num) #Then the second number

3 个答案:

答案 0 :(得分:1)

您可以使用if-elif链来仅选择运算符,并将其余代码单元化:

op_string = ""
if calculation == first_num+second_num: #If question is addition
    op_string =  "Add (+)"

elif calculation == first_num-second_num: #If question is subtraction
    op_string = "Subtract (-)"

elif calculation == first_num*second_num: #If question is multiplication 
    op_string = "Multiply (*)"

print ("Question (%d)" % (i+1)) 
print (first_num) #Print first number
print(op_string) # Followed by the operator
print(second_num) #Then the second number

答案 1 :(得分:1)

计算所有可能的答案,随机选择一个,然后尝试从结果中推断出哪个操作已经执行并不总能得到正确的结果。例如,如果两个数字均为2且选择了乘法,则程序将输出2 + 2

相反,您应首先选择一项操作,然后从中得到两者结果编号及其打印输出。

operator module允许您将算术运算表示为可以放入列表或词典的对象,或将它们传递给函数。

例如,要随机添加或减去两个给定的数字,您可以执行以下操作:

import operator
operators = [operator.add, operator.sub]
op = random.choice(operators)
result = op(a, b) # either a+b or a-b

要在避免if-elif的同时根据操作生成输出,您可以使用字典:

operator_names = {operator.add: 'add', operator.sub: 'subtract'}
print('The operation was: {}'.format(operator_names[op]))

答案 2 :(得分:0)

您可以使用dict,以便稍后查找相应的符号。

ran_calculation = {first_num+second_num: "Add (+)", first_num-second_num: "Subtract (-)", first_num*second_num: "Multiply (*)"} #Dict of random calculations

但是,这仅在答案唯一时才有效。

如上所述:你需要做自己的功课。如果你不这样做,它会在以后咬你。