Python:字符串串联

问题描述

我开始使用Python并读完这本书:用Python自动化无聊的东西。

我正在第4章做一个名为“逗号代码”的练习。我应该能够创建一个简单的函数,无论长度如何,都可以接受任何列表[“苹果”,“香蕉”,“豆腐”,“猫”]并输出为:苹果,香蕉,豆腐和猫;能够在最后一个列表值和倒数第二个列表值之间插入单词的键

我写了一些有用的东西(见下文)。但是它以新行而不是一行输出值。

'''Practice Projects - Comma Code'''

def commacode(list_range):
    for i in range(len(list_range)):
        #print(i)
        position = len(list_range) - i
        #print(position)
        list_a = ''
        list_b = ''
        if position != 1:
            #list = ''
            list_a += str(list_range[i]) + ','
            print(list_a)
        else:
            list_b += list_a + ' and ' + str(list_range[i])
    print(list_a + list_b)

rangeoflist = ['apples','bananas','tofu','cats']
commacode(rangeoflist)
#print(rangeoflist)

如何在一行上获得输出

enter image description here

谢谢

解决方法

要在一行中打印句子,请将end=''添加到第一个print()

'''Practice Projects - Comma Code'''

def commacode(list_range):
    for i in range(len(list_range)):
        position = len(list_range) - i
        list_a = ''
        list_b = ''
        if position != 1:
            list_a += str(list_range[i]) + ','
            print(list_a,end='')                  # <-- add end='' here
        else:
            list_b += list_a + ' and ' + str(list_range[i],)
    print(list_a + list_b)

rangeoflist = ['apples','bananas','tofu','cats']
commacode(rangeoflist)

打印:

apples,bananas,tofu,and cats

使用str.join可以实现更简单的代码。例如:

rangeoflist = ['apples','cats']
print(','.join(rangeoflist[:-1]) + ' and ' + rangeoflist[-1])

打印:

apples,tofu and cats
,

在字符串方面,Python非常优雅。我使用join和数组切片。

rangeoflist = ['apples','cats']
solution = " and ".join([",".join(rangeoflist[:-1]),rangeoflist[-1]])
print(solution)

这就是您需要的所有代码。