Python函数逻辑返回错误的值
这是我的节目。问题是如果我只给出食物值,函数返回错误的部分。但如果我同时给出这两个值,效果就很好了Python函数逻辑返回错误的值,python,function,if-statement,Python,Function,If Statement,这是我的节目。问题是如果我只给出食物值,函数返回错误的部分。但如果我同时给出这两个值,效果就很好了 x = str(input()) y = str(input()) def food(x,y = "Mohakhali"): if x == "BBQ Chicken Cheese Burger" and y == "Mohakhali": print(250+(250*0.08)+40) elif x
x = str(input())
y = str(input())
def food(x,y = "Mohakhali"):
if x == "BBQ Chicken Cheese Burger" and y == "Mohakhali":
print(250+(250*0.08)+40)
elif x == "BBQ Chicken Cheese Burger" and y != "Mohakhali":
print(250+(250*0.08)+60)
elif x =="Beef Burger" and y =="Mohakhali":
print(170+(170*0.08)+40)
elif x =="Beef Burger" and y !="Mohakhali": #for only Beef Burger function prints this.
print(170+(170*0.08)+60)
elif x =="Nana Drums" and y =="Mohakhali":
print(200+(200*0.08)+40)
elif x =="Nana Drums" and y !="Mohakhali":
print(200+(200*0.08)+60)
else:
print("We dont sell that")
(food(x,y))
这是因为当您不为y输入任何值时,它将成为空字符串。虽然它是一个空字符串,但仍将以y=的形式传递给函数 测试:
n [140]: x = str(input())
...: y = str(input())
...:
...: def food(x,y = "Mohakhali"):
...: if x == "BBQ Chicken Cheese Burger" and y == "Mohakhali":
...: print(250+(250*0.08)+40)
...: elif x == "BBQ Chicken Cheese Burger" and y != "Mohakhali":
...: print(250+(250*0.08)+60)
...: elif x =="Beef Burger" and y =="Mohakhali":
...: print(170+(170*0.08)+40)
...: elif x =="Beef Burger" and y !="Mohakhali": #for only Beef Burger function prints this.
...: print(170+(170*0.08)+60)
...: elif x =="Nana Drums" and y =="Mohakhali":
...: print(200+(200*0.08)+40)
...: elif x =="Nana Drums" and y !="Mohakhali":
...: print(200+(200*0.08)+60)
...: else:
...: print("We dont sell that")
...:
...: if y: food(x,y)
...: else: food(x)
...:
Beef Burger
223.6
您的代码正在按预期工作。你只需要了解它是如何工作的 像foodx一样调用函数。它采用y的默认值,即Mohakhali 输入牛肉汉堡,它将返回223.6 调用foodx,y这样的函数。它接受y的值,即使您没有输入任何与Mohakhali不匹配的内容,因此它将返回下一个条件y!=莫哈卡利 输入牛肉汉堡,然后输入帕拉比或保持空白,它将返回243.6
由于您的代码中有两个输入,因此无论您如何调用函数,它总是希望用户使用一个或两个参数提供两个输入。是的,这是因为您告诉python将Mohakhali的默认值取为变量y,以防未给出。这是问题所在。如果我只给x->牛肉汉堡。我应该得到223.6的值,就像我给y值->Mohakhali一样,但是我得到了243.6。
n [140]: x = str(input())
...: y = str(input())
...:
...: def food(x,y = "Mohakhali"):
...: if x == "BBQ Chicken Cheese Burger" and y == "Mohakhali":
...: print(250+(250*0.08)+40)
...: elif x == "BBQ Chicken Cheese Burger" and y != "Mohakhali":
...: print(250+(250*0.08)+60)
...: elif x =="Beef Burger" and y =="Mohakhali":
...: print(170+(170*0.08)+40)
...: elif x =="Beef Burger" and y !="Mohakhali": #for only Beef Burger function prints this.
...: print(170+(170*0.08)+60)
...: elif x =="Nana Drums" and y =="Mohakhali":
...: print(200+(200*0.08)+40)
...: elif x =="Nana Drums" and y !="Mohakhali":
...: print(200+(200*0.08)+60)
...: else:
...: print("We dont sell that")
...:
...: if y: food(x,y)
...: else: food(x)
...:
Beef Burger
223.6