为什么我的返回功能不按照我想要的方式工作? (Python 3)

时间:2017-08-25 14:55:06

标签: python python-3.x function printing return

有人可以给我一些提示或想法,为什么会这样:

def fishstore(fish, price):
  total = "Your", fish, "costs", price, "$"
  return total
print (fishstore("sardines", 5))

显示了这一点:

('Your', 'sardines', 'costs', 5, '$')

而不是:

Your sardines costs 5 $

2 个答案:

答案 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()函数。