有人可以给我一些提示或想法,为什么会这样:
def fishstore(fish, price):
total = "Your", fish, "costs", price, "$"
return total
print (fishstore("sardines", 5))
显示了这一点:
('Your', 'sardines', 'costs', 5, '$')
而不是:
Your sardines costs 5 $
答案 0 :(得分:1)
你正在返回一个元组,那就是正在打印的内容。仅仅因为您用逗号分隔多个项目并不意味着print()
会将这些项目视为单独的参数。否则,你如何将元组打印为元组?
如果要将元组的内容打印为单独的参数,请使用*argument
调用语法:
print(*fishstore("sardines", 5))
*argument
语法明确表示您希望将所有值解包为单独的项目,以便print()
进行处理。
这个功能真的不是那么有用。使用string formatting将项目和价格放在一起打印到单个字符串中可能更有用:
def fishstore(fish, price):
total = "Your {} costs {}$".format(fish, price)
return total
此时print(fishstore("sardines", 5))
将正常工作。
如果您使用的是Python 3.6(或更新版本),您也可以使用f'....'
formated string literals语法:
def fishstore(fish, price):
total = f"Your {fish} costs {price}$"
return total
答案 1 :(得分:1)
您可以通过编码替换total = "Your " + fish + "costs " + price +"$"
来连接字符串。我不太肯定为什么它会在这样的列表中输出它,但其余的代码看起来是正确的。您也可以print ("Your %s cost %d $", fish, price)
。
在Python中,逗号不会结束。如果您希望将它存储在列表中,您也可以像其他人评论的那样使用.join()函数。