当我进行加法和减法运算时,计算器会工作,而当我进行除法和乘法运算时,计算器会完全损坏。对代码的注释更深入
我曾尝试编辑列表中的数字/变量,但是如果我解决了乘法和除法问题,则会破坏加法和减法。
s=input('What would you like to calculate? ')
index = s.find("-") #goes through the equation to find it, and numbers it
if index == -1:
index = s.find('+')
elif index == -1:
index=s.find('*')
elif index == -1:
index = s.find('/')
if index == -1:
index = s.find('+')
op = s[index] # defines index as op
lp = len(s) #defines the length of it as lp
p1 = s[0:index] #set variable for beginning through the operator
sign = s[index] #this defines the sign
p2=s[index+1:lp]#this goes from the number past the sign to the end
print(p1) #these three are just to visualize
print(sign) #each individual part of the equation
print(p2) #for + and - it shows each part correctly, for * or / doesn't
if sign == '+': #this is all the code that does the math
ans = int(p1)+int(p2) #variable that is defined as the answer
elif sign == '-':
ans = (int(p1)-int(p2))
elif sign == '*':
ans = (int(p1)*int(p2))
elif sign == '/':
ans = (int(p1)/int(p2))
else:
print ('I do not understand')
print (p1,sign,p2,'=',ans) #for the user, visualizes equation
当我输入2/2时,我应该得到1,但我却得到一个错误代码。当我在单独的变量前面放一个打印语句时,我应该得到2 / 2 但是相反,我得到类似的东西: 2 / 2 2/2 当我去做,我得到了 10 + 10 正确的
答案 0 :(得分:1)
此代码中有几个错误:
index = s.find("-")
if index == -1:
index = s.find('+')
elif index == -1:
index=s.find('*')
elif index == -1:
index = s.find('/')
if index == -1:
index = s.find('+')
首先,最底部的if
语句是重复的,因此请立即将其删除。
接下来,考虑一下elif
语句的作用。这是 else if 的简写形式,表示这样的代码:
if index == -1:
elif index == -1:
elif index == -1:
是自动错误的。 “如果index为-1,则如果index为-1,否则,如果index为-1”。
该控制流不允许在if
和elif
之间执行任何其他语句。执行语句的唯一方法是当其中一个条件匹配时,这将意味着由于匹配而停止对elif/else
个替代项的求值。
我怀疑您有最下面的代码块(if ... s.find('+')
),并且您插入了其他代码以尝试添加额外的操作。实际上,您以前使用的是简单的if语句。对于其他情况,只需复制它们即可:
index = s.find('-')
if index == -1:
index = s.find('+')
# Note: no ELSE here, just another 'if'
if index == -1:
index = s.find('*')
if index == -1:
index = s.find('/')
if index == -1:
print("Ack! No operator found")
此处的区别在于,每个if
语句在控制流中都会创建一个 fork 。但是下一条if
语句将两个替代分支重新组合在一起:无论第一个if
是对还是假,第二个if
都会运行 。
答案 1 :(得分:0)
我认为您想这样做
...
index = s.find("-") #goes through the equation to find it, and numbers it
if index == -1:
index = s.find('+')
if index == -1:
index=s.find('*')
if index == -1:
index = s.find('/')
if index == -1:
index = s.find('+')
...