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和尽可能少的行。
答案 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
注意:
在英语中,您通常不会在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')部分。