我知道这应该是非常简单的,但在这一点上,我在智慧的结尾试图弄清楚这一点。我已经在python中编写了一个计算器,但由于某种原因,结尾if-else语句只会触发else段。Python:如果条件似乎得到满足,但没有触发
import sys
import re
#setting values
x = 0
n = '+'
y = 0
#valid input flag
valid = True
#continue operations flag
run = True
again = "k"
#addition function
def add(x, y):
return x + y
#subtraction function
def subtract(x, y):
return x - y
#multiplication function
def multiply(x, y):
return x * y
#division function
def divide(x, y):
return x/y
#continuation loop
while run == True:
#Prompt for and accept input
equation = raw_input("Please insert a function in the form of 'operand' 'operator' 'operand' (x + y): ")
equation.strip()
#Divide input into 3 parts by spaces
pieces = re.split('\s+', equation)
#set part 1 = x as float
x = pieces[0]
try:
x = float(x)
except:
print "x must be a number"
valid = False
#set part 2 = operator
if valid == True:
try:
n = pieces[1]
except:
print "Please use valid formating (x [] y)."
valid = False
#set part 3 = y as float
if valid == True:
y = pieces[2]
try:
y = float(y)
except:
print "y must be a number"
valid = False
#If input is valid, do requested calculations
while valid == True:
if n == '+' :
print equation + " =", add(x,y)
elif n == '-' :
print equation, " =", subtract(x,y)
elif n == '*' :
print equation, "*", y, " =", multiply(x,y)
elif n == '/' :
if y == 0:
print "You cannot divide by zero."
else:
print equation, " =", divide(x,y)
else:
print "Please use an appropriate operator (+ - * /)."
#play again
again = raw_input("Play again? ")
print again
if again == ("yes", "y", "YES", "Yes","yes"):
run = True
print "yes'd"
else:
print "no'd"
run = False
当我运行这段代码,我得到两个不同的问题: 如果我输入一个有效的输入(即:2 + 2),那么我的输出是
“2 + 2 = 4.0”
“2 + 2 = 4.0”
“2 + 2 = 4.0”
重复下去。
如果我输入一个无效的输入,我得到“再次播放?”提示,但不管输入什么,else语句都会触发。 (例如,如果我在“再次播放?”中输入“是”,则会打印: “是”(< - 来自“再次打印”行) “没有”(< - 这是来自“其他:打印‘no'd’)
我不知道如何解决这些问题之一,在这一点上,所以任何帮助,将不胜感激
编辑:谢谢大家。 ,我希望我能查马克大家帮助我理解关于我做错了什么不同的事情。