Python:将print()函数的None值转换为字符串

时间:2019-03-18 12:45:33

标签: python function

我正在尝试编写一个函数,该函数以列表值作为参数,并返回一个字符串,其中所有项目均以逗号和空格分隔,最后一项之前插入“ and”。

例如,传递包含值['apples', 'bananas', 'tofu', 'cats']的列表“垃圾邮件”将返回:"apples, bananas, tofu, and cats"

我编写了以下代码:

def thisIsIt(alist):
  alist.insert(-1, 'and')
  alist1 = alist[:-2]
  alist2 = alist[-2:]
  for item in alist1:
    print(item, end = ", ")

  for item in alist2:
    print(item, end = " ")
确实会返回的

:苹果,香蕉,豆腐和猫。 但是,它被打印为Nonetype而不是字符串。我该如何纠正?

3 个答案:

答案 0 :(得分:0)

无论如何,如果您想使用其他解决方案并希望它返回字符串,则可以在python中使用str.join()的功能:

def thisIsIt(alist):
  resultString = ", ".join(alist[:-2] + [" and ".join(alist[-2:])])
  return resultString

myList = ['apples', 'bananas', 'tofu', 'cats']
myListAsString = thisIsIt(myList)
print(myListAsString)
#apples, bananas, tofu and cats 

答案 1 :(得分:0)

代码:

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

for i in range(0,len(list_sample)):
    if i < len(list_sample)-1 and i != len(list_sample)-2:
        print(list_sample[i],end = ", ")
    elif i == len(list_sample)-2:
        print(list_sample[i],end = " and ")
    else:
        print(list_sample[i])

输出:

apples, bananas, tofu and cats 

答案 2 :(得分:0)

我尝试过 KISS 。 (保持简单愚蠢)

spam = ['apples', 'bananas', 'tofu', 'cats', 'oranges']

def newlist(x):
    myStr = ''    
    if len(x) != 0:
        for i in range(len(x)-1):
            myStr += str(x[i]+', ')
    return(myStr + 'and ' + x[-1]) 

newlist(spam)

伙计们,我认为对于像我这样的初学者,请尽量保持简单!