所以练习项目如下:
假设您有一个像这样的列表值:spam = ['apples', 'bananas', 'tofu', 'cats']
编写一个函数,该函数将列表值作为参数,并返回一个字符串,其中所有项由逗号和空格分隔,并在最后一项之前插入。例如,将先前的spam
列表传递给函数将返回'apples, bananas, tofu, and cats'
。但是你的函数应该能够处理传递给它的任何列表值。
到目前为止,我已经想出了这个:
spam = ['apples', 'bananas', 'tofu', 'cats']
def commacode(a_list):
a_list.insert(-1, 'and')
print(a_list)
commacode(spam)
当然输出只是列表值。我试图将第5行设为print(str(a_list))
,但这会产生语法错误。我的想法是我必须把它改成字符串,但我迷路了。我错过了章节中的内容吗?我觉得我已经好几次了。我觉得len(a_list)
应该在那里,但这只会给我一个值5
。任何想法,或者我应该如何考虑这个将是很大的帮助。我总觉得我真的很了解这些东西,然后我开始接受这些练习项目,并且总是对于该怎么做感到困惑。我知道实践项目将使用我们在前几章中学到的一些信息,然后主要关注我们所在的章节。第4章仅列举了列表,列表值,字符串值,元组,copy.copy()
和copy.deepcopy()
。
链接 - Chapter4
答案 0 :(得分:1)
这就是我解决问题的方法:
def commaCode(eggs):
return ', '.join(map(str,eggs[:-1])) + ' and ' + str(eggs[-1])
spam = ['apples', 'bananas', 'tofu', 'cats']
print(commaCode(spam))
输出:
苹果,香蕉,豆腐和猫
本章未讨论join()和map()。我在谷歌搜索如何将列表转换为字符串时学习了它们。
答案 1 :(得分:1)
我从Python和Al Sweigart的书开始。在第四章的这一点上,我还想尽办法解决这一问题。因此,我在这里找到了您的条目,并希望向社区展示我的解决方案(经过一段时间和几次尝试才能保持镇定):
def adapList(xList, xAdd):
xList[-1] = xAdd + xList[-1]
print(xList)
输入:
adapList(spam, 'and ')
结果:
['apples', 'bananas', 'tofu', 'and cats']
请随时评论我的解决方案,很高兴从您的反馈中学习。
答案 2 :(得分:0)
尝试以下commacode
功能:
monty = ['apples', 'bananas', 'tofu', 'cats', 'dogs', 'pigs']
def commacode(listname):
listname[len(listname) - 1] = 'and ' + listname[len(listname) - 1]
index = 0
new_string = listname[index]
while index < len(listname) - 1:
new_string = new_string + ', ' + listname[index + 1]
index = index + 1
if index == len(listname) - 1:
print(new_string)
commacode(monty)
答案 3 :(得分:0)
def sentence(conc):
print(str(conc[:-1]).strip('[]') + ' and ' + str(conc[-1]) + '. ')
spam = ['apples', 'bananas', 'tofu', 'cats']
ham = ['cats', 'dogs', 'badgers', 'mushrooms']
eggs = [1, 2, 3, 4]
sentence(spam)
sentence(ham)
sentence(eggs)
答案 4 :(得分:0)
使用本章的内容解决这个问题会导致一个非常冗长乏味的程序。相反,您可以使用join()函数[本章未给出]并通过一些调整,您甚至不需要使用map。
这是我的程序的样子:
def comma(a): list_string=','.join(a[0:-1])+' and '+str(a[-1]) print(list_string) spam=[] while True: print('Enter the list item of index '+str(len(spam))+' (or enter nothing to stop)') item=input() if item=='': break spam= spam+[item] print('The items are arranged as:') comma(spam)
是的,在这个程序中,用户必须输入值(类似于章节中已解决的问题)
答案 5 :(得分:0)
只想分享我对此的解决方案,很想听听您的想法:
spam = ['apples', 'bananas', 'tofu', 'cats']
counter = 0
for i in spam:
if counter < len(spam)-2:
print(spam[counter] + ", ", end='')
counter += 1
elif counter == len(spam)-2:
print(spam[-2] + " and " + spam[-1])
counter += 1
结果是:苹果,香蕉,豆腐和猫
答案 6 :(得分:0)
我还想与您分享我的解决方案。它使用join()。
def function(x):
print(', '.join(x[:-1]) + ' and ' + x[-1])
spam=['apples', 'bananas', 'tofu','cats']
function(spam)
就第四章的锻炼而言,它就像一种魅力。
答案 7 :(得分:0)
这是我的解决方案。它利用了我们在本章中学到的所有知识。
def pr_list(listothings):
for i in range(len(listothings)-1):
print(listothings[i] + ', ', end='')
spam = ['apples', 'bananas', 'tofu', 'cats']
pr_list(spam)
print('and ' + spam[-1])
答案 8 :(得分:0)
这是我对问题的解决方案。
def commaCode(in_list):
if (len(in_list) == 1):
print(in_list[0])
elif (len(in_list) == 0):
print('Your list is empty.')
else:
for i in range(len(in_list) -1):
print(in_list[i] + ', ', end='')
if (len(in_list) > 1):
print('and ' + in_list[-1] + '.')
input_list = ['apples', 'bananas', 'tofu', 'cats']
commaCode(input_list)
答案 9 :(得分:0)
这是对我有用的,我看到的唯一问题是在您输入苹果时,在文本的开头有一个空格。
spam = ['apples','bananas','tofu','cats']
print('Write tthe name of one of the items on the following list: '
'apples, bananas, tofu, or cats')
listItem = input()
listItem = int(spam.index(listItem))
def function():
print(*spam[:listItem], sep = ", " , end = " ")
print(*spam[listItem+1:], sep = ", " , end = " ")
print('and ' + spam[listItem])
function()
答案 10 :(得分:0)
我是python的新手,但是我对javascript有一定的了解,我为《用python自动完成无聊的事情》一书的“逗号代码”练习项目设计了此代码。
首先,我创建一个空列表。我要求用户输入一个值,该值将存储在我创建的空列表中。这一切都发生在while
循环中,如果用户继续输入值,程序将继续将其添加到列表中,但是如果用户不是输入值,而是单击Enter,则程序将调用函数commaSpace()
,然后中断循环。
对于commaSpace()
函数,我创建了一个名为listaFinal
的变量,该变量带有一个空字符串,以作为要存储列表索引并稍后打印的空间。
在for
循环中,我提出了两个条件。第一个条件表示如果x+1<len(lista)
(这意味着除最后一个索引外的任何索引都将满足条件),则索引的值将存储在名为valorLista
的变量中,然后添加{{1 }}。该值将存储在变量', '
中。
对于第二个条件listaFinal
(这是列表的最后一项),则该项目将存储在变量if x+1==len(lista)
中,在该项目之前有一个valorLista
,之后,它将被添加到变量'and '
中。完成所有这些之后,程序将打印结果。
listaFinal
答案 11 :(得分:0)
我是Python和整个程序设计的新手,在很大程度上依靠“使无聊的东西自动化”来学习。根据本章中包含该项目的书中介绍的内容,这是我能想到的
def comma_code(list):
new_list = []
for i in range(len(list)-1):
new_list.append(list[i] + ",")
new_list.append("and " + list[-1])
for i in new_list:
print(i, end=" ")
comma_code(spam)
答案 12 :(得分:0)
好朋友!这是我的一点贡献。
list1 = []
def addGrocery(param1):
print('Your list has ', end="")
for i in range(len(param1)):
if i < (len(param1) - 2):
print(param1[i - 1] + ', ', end="")
elif i < (len(param1) - 1):
print(param1[i - 1] + ' ', end="")
else:
print('and ' + param1[i - 1],end="")
addMore = 'y'
while addMore == 'y':
print('Enter the grocery item that you want to order')
inp = input()
list1.append(inp)
print(list1[-1] + ' added')
print('Do you want to add more groceries? - y/n')
addMore = input().lower()
if addMore == 'n':
addGrocery(list1)
答案 13 :(得分:0)
这是我只使用第 4 章之前教过的内容的方法。书中的说明提到代码应该如何仍然使用空列表。因此, try 和 except 块。在书中,作者也说过函数应该返回一个字符串,这就是为什么我没有在函数中放置print()。
spam = ['apples', 'bananas', 'tofu', 'cats']
def comma_code(a_list):
compilation = '' #initiate an empty string to collect the values in the list
try:
while True:
for i in a_list[:-1]: #only loop until the last item
compilation += str(i) + ', '
break
return compilation + ' and ' + str(a_list[-1])
except:
return "It's empty yo. Give me a list to work with"
comma_code(spam)
我花了一个小时才弄清楚如何严格使用直到第 4 章的可用内容。
答案 14 :(得分:0)
def converster(item):
stItem = ''
new = ''
for i in range(len(item)-1):
stItem = str(item[i]) + ', '
new = new + stItem
new = new + 'and ' + str(item[-1])
return new
spam = ['apples', 'bananas', 'tofu', 'cats']
converster(spam)
答案 15 :(得分:0)
这是我的看法。请让我知道您的意见
def listToString (oneList):
s = ''
for i in range (len(spam)-1):
s = s+', ' + spam[i]
s = s + ' and ' + spam[-1]
s = s[2::]
return s
spam = ['apples', 'bananas', 'tofu', 'cats']
print(listToString(spam))