打印以逗号分隔但带有"和"的项目列表。在最后一项之前

时间:2016-09-30 02:21:02

标签: python list python-3.x loops for-loop

我已经为此工作了两天。这就是作业所说的:

  

假设你有一个这样的列表值:listToPrint = ['apples', 'bananas', 'tofu', 'cats']编写一个程序,打印一个列表,其中所有项目用逗号和空格分隔,用"和"在最后一项之前插入。例如,上面的列表将打印'apples, bananas, tofu, and cats'。但是你的程序应该能够处理任何列表,而不仅仅是上面显示的列表。因此,如果要打印的列表比上面的列表更短或更长,则需要使用循环。

这就是我到目前为止:

listToPrint = []
while True:
    newWord = input("a, b, and c ")
    if newWord == "":
        break
    else:
        listToPrint.append(newWord)

4 个答案:

答案 0 :(得分:1)

您展示的代码似乎解决了与您的任务要求的不同的问题。该作业的重点是{{1}来自提供的# -*- coding: utf-8 -*- # content of test_gevent.py import time from django.test import TestCase from django.db import connection import gevent def f(n): cur = connection.cursor() cur.execute("SELECT SLEEP(%s)", (n,)) cur.execute("SELECT %s", (n,)) cur.fetchall() connection.close() class GeventTestCase(TestCase): longMessage = True def test_gevent_spawn(self): timer = time.time() d1, d2, d3 = 1, 2, 3 t1 = gevent.spawn(f, d1) t2 = gevent.spawn(f, d2) t3 = gevent.spawn(f, d3) gevent.joinall([t1, t2, t3]) cost = time.time() - timer self.assertAlmostEqual(cost, max(d1, d2, d3), delta=1.0, msg='gevent spawn not working as expected') 的值,而您的代码全部来自用户的print项并将它们放入列表中。做一个然后另一个是有意义的,但是对于你在评论中给出的作业,list代码完全无关紧要。

以下是我如何解决该任务(可能还有你还不了解的代码):

input

更“友好的新手”方法看起来更像是这样:

input

答案 1 :(得分:0)

我将如何做到这一点,但如果这是为了学校,请小心。如果我在下面做的任何事情都使用了尚未涵盖的功能或技术,那么你的导师会对你不满。

listToPrint = ['a', 'b', 'c']

def list_to_string(L, sep = '', last_sep = None):
    if last _sep is None:
        return sep.join(L)
    else:
        return sep.join(L[:-1]) + last_sep + L[-1]

print(list_to_string(listToPrint, sep = ', ', last_sep = ', and '))

这里有一个初学者版本:

listToPrint = ['a', 'b', 'c']
list_length = len(listToPrint)

result = ""
count = 0
for item in listToPrint:
    count = count + 1
    if count == list_length:
        result = result + "and " + item
    else:
        result = result + item + ", "

这个只与列表中的一个项目一起使用。

答案 2 :(得分:-1)

初学者版本:

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

print("'", end='')

for i in range(len(x)-2):

    print(x[i], end=', ')

print(str(x[-2])+' and '+str(x[-1]),end='')

print("'")

输出:'apples, bananas, tofu and cats'

答案 3 :(得分:-1)

#printing the first element sep. so the list works     
print(listToPrint[0], end="") 

for i in range(1, len(listToPrint)-1):

    print("," + listToPrint[i], end="") #this prints the middle elements

if(len(listToPrint) > 1):

    print( " and " + listToPrint[-1], end="")