Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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_Function_If Statement - Fatal编程技术网

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