在使用Python自动化无聊的东西中,有一个名为逗号代码的练习项目:
假设你有一个像这样的列表值:
spam = ['apples', 'bananas', 'tofu', 'cats']
编写一个以列表值作为参数并返回的函数 一个字符串,其中所有项目都以逗号和空格分隔,并带有'和' 在最后一项之前插入。例如,将之前的垃圾邮件列表传递给 该功能将返回苹果,香蕉,豆腐和猫等。但是你的功能 应该能够处理传递给它的任何列表值。
这就是我所做的:
y = ['apples', 'bananas', 'tofu', 'cats']
def function(x):
x.insert(-1, ('and ' + x[-1]))
del x[-1]
numbers = len(x)
spam = x[0]
for i in range(1,numbers):
spam = spam + ', ' + x[i]
print(spam)
function(y)
该功能适用于任何列表值,我已完成它所要求的所有内容,但我想知道的是,是否有更好的方法来执行此操作,或者是否要求提供与此不同的内容。我也想知道我的代码有什么不好。我几天前开始阅读这本书,所以我对编码完全不熟悉。
答案 0 :(得分:2)
解决方案浮现在脑海中:
# do add conditions to return list if len is <2
# perhaps return " and ".join(l) if len == 2
" ".join([", ".join(l[:-1] + ["and"]), l[-1]])
'a, b, and c'
答案 1 :(得分:1)
由于这是您第一次编码,为什么不这样做呢?这是您可以理解并“感觉直观”的东西。
y = ['apples', 'bananas', 'tofu', 'cats']
def create_description(items_list):
description = ""
for item in items_list[:-1]: #everything except for the last element
description = description + item + ", "
description = description + "and " + items_list[-1] # add the last item
return description
print(create_description(y))
请注意,如果您只有一个项目,则会将其打印为and last_item
。
答案 2 :(得分:1)
非常基本的方法,这就是我喜欢它的原因:
a = ", ".join(y[:-1]) + " and " + y[-1]
join
所有列表元素,但最后一个,并通过字符串添加添加。
答案 3 :(得分:1)
这是解决问题的一个非常简单的方法:
spam = ['apples', 'bananas', 'tofu', 'cats']
def items(things):
for i in range(len(things) - 1):
print(things[i] + ', ', end='')
print('and ' + things[-1])
items(spam)
答案 4 :(得分:1)
这是我的代码:
spam = ['apples', 'bananas', 'tofu', 'cats']
def what_in_list(spam):
spam[-1] = 'and ' + spam[-1]
content_in_list = ''
for i in spam:
content_in_list += i + ',' + ' '
print("'" + content_in_list[:-2] + "'.")
what_in_list(spam)
答案 5 :(得分:1)
仅使用您所知道的内容,&#34;使用Python自动化无聊的东西。&#34;
spam = ['apples', 'bananas' , 'tofu', 'cats']
def commaCode(listValue):
for i in range(len(listValue)-1):
print(listValue[i], end=', ') # the end keyword argument was presented in ch.(3)
print('and ' + listValue[-1])
commaCode(spam)
答案 6 :(得分:1)
我知道这是一个老问题,但我也只是学习用这本书编写代码。以下是我使用本书编写的代码,堆栈溢出以及各种其他资源。我是初学者,所以它就是这样。我确定有更高效的代码来执行此操作。
此代码将继续询问添加,删除和重述问题,以便您可以继续调整列表。直到你退出。
import sys
myList = ['apples', 'bananas', 'tofu', 'cats']
def items(myList):
for i in range(len(myList) - 1):
print(myList[i] + ', ', end ='')
print('and ' + myList[-1])
def change():
while True:
print() #print() gives it a blank space
n = input("""
Do you want to add or remove from the list?
Do you want to restate the list?
Type N to exit,
Y for adding,
R to remove
L to restate list. """)
print()
if n.lower() =='y':
print()
myList.insert(0, input('Insert what you want to add. '))
elif n.lower() == 'r':
print()
name = input('Input item name you wish to remove. ')
if name in myList:
myList.remove(name)
elif n.lower() == 'l':
items(myList)
elif n.lower() == 'n':
sys.exit()
items(myList)
change()
答案 7 :(得分:0)
spam = ['apples', 'bananas', 'tofu', 'cats']
def makeString(l):
stringPart1 = l[:-1]
stringPart2 = l[-1]
finalString = ', '.join(stringPart1)+' and '+stringPart2
return finalString
print(makeString(spam))
<强> RESULT 强>
apples, bananas, tofu and cats
# stringPart1 will be a list consist of following elements.
# stringPart1 = ['apples', 'bananas', 'tofu']
# 1[:-1] slice every thing from the 0 to last-1
#
# stringPart2 will be a string.
# stringPart2 = 'cats'
# 1[-1] = return the item at the last index
答案 8 :(得分:0)
def comma_code(comma_list):
final_list = ''
for i in range(len(comma_list)-1):
final_list = final_list + comma_list[i] + ', '
final_list = final_list + ', and ' + comma_list[len(comma_list)-1]
print(final_list)
given_list = ['apples','香蕉','豆腐','猫']
comma_code(given_list)
答案 9 :(得分:0)
还有另一种简短的方法可以为此任务编译简单的代码:
def CommaCode(list):
h = list[-2] + ' and ' + list[-1]
for i in list[0:len(list)-2]:
print(str(i), end = ', ')
print(h)
如果您将其与垃圾邮件列表一起运行以进行检查:
CommaCode(spam)
apples, bananas, tofu and cats
答案 10 :(得分:0)
这是解决此问题的最简单的代码
export const Query: QueryResolvers.Resolvers = {
async content(_, _args, { injector }: ModuleContext) {
const response = await injector.get(Crs).getContent();
return response;
}
};
答案 11 :(得分:0)
这是我的代码。我知道可以改进,但是我只是一个初学者。如果有人提供建设性意见,我将有义务。
spam = ['apples', 'bananas', 'tofu', 'cats']
def commaSpace(listValue):
for i in range(len(listValue)):
print(listValue[i] + ', ' , end='')
if listValue[i] == listValue[-1]:
print('and ' + listValue[-1])
commaSpace(spam)
答案 12 :(得分:0)
我是一个初学者,但是最实际的解决方案似乎是使用“ join”方法。 我的尝试:
def concac(arg):
words = ''
for i in arg:
words += i
new = ",".join(arg[0:len(arg)-1]) + " and " + arg[-1]
return new
答案 13 :(得分:-1)
我想出了一个相当简单的代码来解决这个问题。请看一下。
spam = ['apples', 'bananas', 'tofu', 'cats']
def list_to_string(value):
value.insert(len(value)-1,'and')
st = '' #empty string
for i in value:
st = st + ', ' + i #to concatenate the list values to a single string
print st.lstrip(', ') #lstrip - to strip off the comma and space at the beginning of the string
list_to_string(spam) #calling the function
我在此代码中发现的唯一问题是,我无法在'和'之后删除逗号。
其他方面,代码工作正常。
谢谢。