If语句分支不正确

2024-09-29 22:22:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的新手。该程序将任何列表传递到一个函数中,并打印一个字符串,其中单词用“,”分隔,最后一个单词用“,”和“,”分隔。但是If语句没有分支到最后一个单词。我不知道把它放进for循环是不是破坏了它

spam = ['apples', 'oranges', 'pears', 'strawberries', 'watermelon']

def comma(x):
    newSpam = x[0]
    del x[0]
    for i in range(len(x)):
        print(type(len(x)))
        if i == (len(x)):
            newSpam = newSpam + ', and ' + [x(i)]
        else:            
            newSpam = newSpam + ', '+ x[i]
    print(newSpam)
comma(spam)

我得到的结果是:

apples, oranges, pears, strawberries, watermelon

Tags: 程序列表forlenspam单词print新手
3条回答

if i == (len(x)):替换为

if i == (len(x) - 1):

长度不表示列表的最后一项。您需要使用长度-1表示最后一项

def comma(a_list):
   x=len(a_list)
   y=""
   for i in range (x):
     if i==(x-1):
        y=y+"and "
        y=y+spam[i]
        break
     y=y+spam[i]
     y=y+", "

    print (y)

正如您在newSpam = x[0]行中所演示的,Python是零索引的,这意味着列表的第一项是索引0,而列表的最后一项比列表的长度小一个。因此,要检查是否在最后一项,需要检查if i == (len(x) - 1)而不是if i == len(x)

相关问题 更多 >

    热门问题