我很难弄清楚本机数据类型如何在 Python 中交互。在这里,我试图 将歌词 的不同部分连接成一个长字符串,该字符串将作为输出返回。
我在尝试运行脚本时收到的错误是:
TypeError:无法连接“str”和“tuple”对象。
我把所有不是字符串的东西都放在函数 str() 中,但显然有些东西仍然是“元组”(我以前从未使用过的数据类型)。
我怎样才能将其中的任何元组获取到一个字符串中,以便所有这些都顺利连接起来?
(PS:我使用了变量“Copy”,因为我不确定,当我递减另一个变量时,它是否会扰乱 for 循环结构。会吗?)
#99 bottles of beer on the wall lyrics
def BottlesOfBeerLyrics(NumOfBottlesOfBeer = 99):
BottlesOfBeer = NumOfBottlesOfBeer
Copy = BottlesOfBeer
Lyrics = ''
for i in range(Copy):
Lyrics += BottlesOfBeer, " bottles of beer on the wall, ", str(BottlesOfBeer), " bottles of beer. \n", \
"Take one down and pass it around, ", str(BottlesOfBeer - 1), " bottles of beer on the wall. \n"
if (BottlesOfBeer > 1):
Lyrics += "\n"
BottlesOfBeer -= 1
return Lyrics
print BottlesOfBeerLyrics(99)
有些人建议建立一个列表并加入其中。我对其进行了一些编辑,但这是首选方法吗?
#99 bottles of beer on the wall lyrics - list method
def BottlesOfBeerLyrics(NumOfBottlesOfBeer = 99):
BottlesOfBeer = NumOfBottlesOfBeer
Copy = BottlesOfBeer
Lyrics = []
for i in range(Copy):
Lyrics += str(BottlesOfBeer) + " bottles of beer on the wall, " + str(BottlesOfBeer) + " bottles of beer. \n" + \
"Take one down and pass it around, " + str(BottlesOfBeer - 1) + " bottles of beer on the wall. \n"
if (BottlesOfBeer > 1):
Lyrics += "\n"
BottlesOfBeer -= 1
return "".join(Lyrics)
print BottlesOfBeerLyrics(99)
原文由 jkeys 发布,翻译遵循 CC BY-SA 4.0 许可协议
Lyrics +=
左侧的逗号分隔列表定义了一个“元组”。您需要将“,”更改为“+”,因为字符串连接不采用逗号分隔的值列表。
另外,考虑建立一个字符串列表来连接,然后使用“join”方法。