自动化无聊的逗号代码

时间:2017-04-17 22:06:40

标签: python string list python-3.x function

spam = ['apples', 'bananas', 'tofu', 'cats']

def stringmaker(data):
    tempdata = 0
    datastring = ''
    stringlist = []
    stringdata = ''
    stringdata += ', '.join(data)
    stringlist += stringdata.split()
    tempdata = stringlist
    tempdata = str(stringlist.insert(-1, 'and'))
    datastring += ' '.join(stringlist)
    print(datastring)


stringmaker(spam)

使用Python自动化无聊的东西第102页,练习项目逗号代码 - 逗号代码

  

假设你有一个像这样的列表值:spam = [' apples',' bananas',   '豆腐'猫']编写一个将列表值作为一个函数的函数   参数并返回一个字符串,其中所有项目都以逗号分隔   以及在最后一个项目之前插入的空格。例如,   将之前的垃圾邮件列表传递给该函数将返回“苹果”,   香蕉,豆腐和猫' 。但是你的功能应该能够奏效   传递给它的任何列表值。

我编写的代码可以工作并保留在本章的上下文中。我已经在这个网站和谷歌上查看了其他答案,我惊讶于我的代码代码有多么不同甚至可能是愚蠢的。有人可以帮我指出我的代码的所有坏处吗?

我真的很喜欢这样的pythonic和尽可能少的行。

7 个答案:

答案 0 :(得分:2)

它会完成你的工作:

spam = ['apples', 'bananas', 'tofu', 'cats',]
def commacode(spam):
    return print(', '.join(spam[:-1]) + ' and ' + spam[-1])

commacode(spam)

答案 1 :(得分:0)

def stringmaker(data):
    return ", ".join(data[:-1]) + " and " + data[-1]

它的作用:加入列表但是最后一个元素加上“,”,然后添加“和”和最后一个元素

正如你的问题中的评论所说,有时候更好,所以放弃“单行”以使你的代码更具可读性。

另请注意,目前,如果数据为空列表,则此代码不起作用

答案 2 :(得分:0)

您可以使用以下内容:

words = ['apples', 'bananas', 'tofu', 'cats']
def spam(words):
   if words: # prevents parsing an empty list
        return ", ".join(words[:-1]) + ", and " + words[-1]
print spam(words)
# apples, bananas, tofu, and cats

Demo

注意: 在英语中,您通常不会在commas之前使用and

答案 3 :(得分:0)

我认为这可以提供最佳的输出。(ps:我也是初学者)。

def ltos(list):
    empty_string = ''
    for i in list[:-2]:
        empty_string += i + ", "
    empty_string += list[-2]
    empty_string += ' and ' + list[-1] + '.'
    print(empty_string)

myex = ['dumb', 'retard', 'awkward', 'brainless', 'immature', 'ignored', 'invisible']
ltos(myex)

输出:哑,迟钝,笨拙,无脑,不成熟,被忽略和看不见。

答案 4 :(得分:0)

我进行了此练习,但考虑了将用户输入作为列表:(lista == list但以西班牙语:3)

 import sys
lista = []

while True:
    print('enter the '+ str(len(lista) + 1) +' item in your list ' "(or enter nothing to stop)")
    item = input()
    if item == '':
        break
    lista = lista + [item]
lista[-1] = 'and ' + lista[-1]
print('your complete list is: \n' + (", ".join(lista)))
sys.exit()

答案 5 :(得分:0)

这是我的解决方案,就像您一样,我为解决这个问题付出了三天的时间。 但这真的很棒。

这是代码:

spam = ['apples', 'bananas', 'tofu', 'cats']
def list_string(the_list):
 number_list = len(the_list)
 if number_list == 1:
     print(the_list[0])
 elif number_list == 2:
     print(the_list[0] + ' and ' + the_list[1])
 elif number_list > 2:
     for a in range(1):
         print(', '.join(the_list[0 :len(the_list) - 1]) + ', and ' + the_list[len(the_list) - 1])



list_string(spam)

答案 6 :(得分:0)

我知道了

list = []
for i in range(3):
    value = str(input())
    list.append(value)
list.insert(2, 'and')
print(list)

这样,唯一需要更改的内容就是代码的range(3)和.insert(2,'and')部分。