在 python 函数中使用多个参数
using multiple parameters in python function
这是我要解决的问题:
定义一个名为 food 的函数,它接收两个参数:一个整数值,表示一天中从 0 到 24 小时的时间,以及一个布尔值,表示一个人是否喜欢甜食 (True) 或不喜欢 (False)。该函数应该 return 一个带有如下消息的字符串。
如果早于6,消息应该说"no food"(不管喜不喜欢甜食的人)
如果包含6到10个极端,则消息应显示"breakfast",如果此人喜欢甜食,另外,早餐一词后应有一个逗号,然后是"marmalade",否则(如果这个人不喜欢吃甜食,而且现在是早餐时间),早餐这个词之后应该有一个逗号和"coffee"这个词(逗号后面没有空格)。然后,如果时间在 11 点到 15 点之间(包括极端值),则消息应显示 "lunch",并且此人是否喜欢甜食。此外,在单词 "lunch" 之后会有一个逗号,然后是单词 "dessert"。同样,如果是在 15 点之后或 22 点之前,消息将显示 "dinner",与午餐类似,如果此人喜欢甜食,则会显示一个逗号,然后显示 "dessert"。如果是 22 或更晚的 returned 消息应该再次 "no food".
例如
food(4,False) should return "no food"
food(7,True) should return the message "breakfast,marmalade"
food(7,False) should return "breakfast,coffee"
food(12,True) should return "lunch,dessert"
food(20,False) should return "dinner"
例如,以下代码片段:
print food(7,True)
应该产生输出:
breakfast,marmalade
这就是我所拥有的,但我被卡住了!请帮忙
def food(input,boolean):
time = int(input)
food_type = ""
if time >= 0 and time < 6 or time >= 22:
food_type = "no food"
if time >= 6 and time <= 10:
food_type = "breakfast"
if time >= 11 and time <= 15:
food_type = "lunch"
if time >= 16 and time < 22:
food_type = "dinner"
dessert = ""
if boolean == "True" and food_type == "breakfast":
dessert = "marmalade"
if boolean == "False" and food_type == "breakfast":
dessert = "coffee"
if boolean == "True" and food_type == "lunch":
dessert = "dessert"
if boolean == "True" and food_type == "dinner":
dessert = "dessert"
return dessert
return food_type
print food(7,True)
你有两个问题:
(1) 你不能(有意义地)在一个函数中有两个 return 语句一个接一个;当 return 计算时,它结束函数。你想写的是
return (desert,food_type)
同时获得它们。正如所写,您 return "desert" 永远没有机会获得 "food_type"
有关详细信息,请参阅此 post:
Is there a way to do more work after a return statement?
也许这个关于 returning 的教程(python 文档不适合学习 return 语句,它们是技术性的):
http://learnpythonthehardway.org/book/ex21.html
(2) 您正在将字符串与布尔值进行比较。你的意思是
if boolean == True:
没有
if boolean == "True":
def food(input,boolean):
time = int(input)
food_type = ""
if time >= 0 and time < 6 or time >= 22:
food_type = "no food"
if time >= 6 and time <= 10:
food_type = "breakfast"
if time >= 11 and time <= 15:
food_type = "lunch"
if time >= 16 and time < 22:
food_type = "dinner"
dessert = ""
if boolean == True and food_type == "breakfast":
dessert = "marmalade"
if boolean == False and food_type == "breakfast":
dessert = "coffee"
if boolean == True and food_type == "lunch":
dessert = "dessert"
if boolean == True and food_type == "dinner":
dessert = "dessert"
return (dessert, food_type)
# return food_type
print food(7,True)
生产 ('marmalade', 'breakfast')
如果你想使用其中之一,你应该像这样使用它
raw = food(7, True)
print raw[0]
print raw[1]
它将产生
marmalade
breakfast
这是我要解决的问题:
定义一个名为 food 的函数,它接收两个参数:一个整数值,表示一天中从 0 到 24 小时的时间,以及一个布尔值,表示一个人是否喜欢甜食 (True) 或不喜欢 (False)。该函数应该 return 一个带有如下消息的字符串。
如果早于6,消息应该说"no food"(不管喜不喜欢甜食的人)
如果包含6到10个极端,则消息应显示"breakfast",如果此人喜欢甜食,另外,早餐一词后应有一个逗号,然后是"marmalade",否则(如果这个人不喜欢吃甜食,而且现在是早餐时间),早餐这个词之后应该有一个逗号和"coffee"这个词(逗号后面没有空格)。然后,如果时间在 11 点到 15 点之间(包括极端值),则消息应显示 "lunch",并且此人是否喜欢甜食。此外,在单词 "lunch" 之后会有一个逗号,然后是单词 "dessert"。同样,如果是在 15 点之后或 22 点之前,消息将显示 "dinner",与午餐类似,如果此人喜欢甜食,则会显示一个逗号,然后显示 "dessert"。如果是 22 或更晚的 returned 消息应该再次 "no food".
例如
food(4,False) should return "no food"
food(7,True) should return the message "breakfast,marmalade"
food(7,False) should return "breakfast,coffee"
food(12,True) should return "lunch,dessert"
food(20,False) should return "dinner"
例如,以下代码片段:
print food(7,True)
应该产生输出:
breakfast,marmalade
这就是我所拥有的,但我被卡住了!请帮忙
def food(input,boolean):
time = int(input)
food_type = ""
if time >= 0 and time < 6 or time >= 22:
food_type = "no food"
if time >= 6 and time <= 10:
food_type = "breakfast"
if time >= 11 and time <= 15:
food_type = "lunch"
if time >= 16 and time < 22:
food_type = "dinner"
dessert = ""
if boolean == "True" and food_type == "breakfast":
dessert = "marmalade"
if boolean == "False" and food_type == "breakfast":
dessert = "coffee"
if boolean == "True" and food_type == "lunch":
dessert = "dessert"
if boolean == "True" and food_type == "dinner":
dessert = "dessert"
return dessert
return food_type
print food(7,True)
你有两个问题:
(1) 你不能(有意义地)在一个函数中有两个 return 语句一个接一个;当 return 计算时,它结束函数。你想写的是
return (desert,food_type)
同时获得它们。正如所写,您 return "desert" 永远没有机会获得 "food_type"
有关详细信息,请参阅此 post:
Is there a way to do more work after a return statement?
也许这个关于 returning 的教程(python 文档不适合学习 return 语句,它们是技术性的):
http://learnpythonthehardway.org/book/ex21.html
(2) 您正在将字符串与布尔值进行比较。你的意思是
if boolean == True:
没有
if boolean == "True":
def food(input,boolean):
time = int(input)
food_type = ""
if time >= 0 and time < 6 or time >= 22:
food_type = "no food"
if time >= 6 and time <= 10:
food_type = "breakfast"
if time >= 11 and time <= 15:
food_type = "lunch"
if time >= 16 and time < 22:
food_type = "dinner"
dessert = ""
if boolean == True and food_type == "breakfast":
dessert = "marmalade"
if boolean == False and food_type == "breakfast":
dessert = "coffee"
if boolean == True and food_type == "lunch":
dessert = "dessert"
if boolean == True and food_type == "dinner":
dessert = "dessert"
return (dessert, food_type)
# return food_type
print food(7,True)
生产 ('marmalade', 'breakfast') 如果你想使用其中之一,你应该像这样使用它
raw = food(7, True)
print raw[0]
print raw[1]
它将产生
marmalade
breakfast