input()函数按字面顺序接收条目而不是列表

时间:2018-05-29 22:53:36

标签: python python-3.x

逗号代码 假设你有一个像这样的列表值:

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

编写一个以列表值作为参数并返回a的函数   字符串,包含逗号和空格分隔的所有项目,带和   在最后一项之前插入。例如,传递以前的垃圾邮件   该功能列表将返回'苹果,香蕉,豆腐和猫'。   但是你的函数应该能够处理传递给它的任何列表值   它

我最近得到了一位朋友帮助我制作此代码的帮助。

list = ['thing1', 'thing2', 'thing3', 'thing4']
def ryansthing(list):
    string = ''
    for i in range(len(list)):
        if not i > len(list) - 2:
            string += list[i] + ', '
        else:
            string += 'and ' + list[i] + '.'
    print(string)

ryansthing(list)

并且它有效(打印出thing1,thing2,thing3和thing4。),但每当我将代码更改为:

list = input() <----- I changed this to input function instead of setting the variable manually.
def ryansthing(list):
    string = ''
    for i in range(len(list)):
        if not i > len(list) - 2:
            string += list[i] + ', '
        else:
            string += 'and ' + list[i] + '.'
    print(string)

ryansthing(list)

它会用逗号分隔每个单个字符:

[, ', t, h, i, n, g, 1, ', ,,  , ', t, h, i, n, g, 2, ', ,,  , 
', t, h, i, n, g, 3, ', ,,  , ', t, h, i, n, g, 4, ', and ]

当它要求我输入时,我只需输入相同的列表:['thing1','thing2','thing3','thing4'

3 个答案:

答案 0 :(得分:0)

我认为这就是你要找的东西:

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

def printTogether(aList):
    result = ""
    for i in range(len(aList)):
        if i == 0:
            result = result + aList[i]
        elif i == (len(aList)-1):
            result = result + " and " + aList[i]
        else:
            result = result + ", " + aList[i]
    print(result)

printTogether(spam)

任务描述有点误导,但从他们提供的示例来看,这就是我认为他们想要的

答案 1 :(得分:0)

首先,您必须指定用户输入数据的方式。如果您希望输入是由单行中的空格分隔的单词,则可以使用以下代码:

spam = input().split() 

如果您希望在每个输入词后按Enter键,则可以使用以下代码:

spam=[]
while l != '':
l = input().rstrip()
spam.append(l)

否则:你可以创建自己的方式

答案 2 :(得分:0)

有一个内置功能可以帮到你!它被称为str.join,您可以在列表中将其称为要加入。

>>> some_list = ["foo", "bar", "spam", "eggs"]
>>> ", ".join(some_list)
foo, bar, spam, eggs

然而,这并没有考虑到&#34;和&#34;需求。通过重写列表的最后一项,这应该是相当简单的。

>>> some_list = ["foo", "bar", "spam", "eggs"]
>>> some_list[-1] = "and " + some_list[-1]
>>> ", ".join(some_list)
foo, bar, spam, and eggs

将其作为函数写入:

def line_them_up(lst):
    new_lst = lst[:]  # copy the list so we don't change the original
    new_lst[-1] = "and " + new_list[-1]
    return ", ".join(new_lst)

并获得inputsplit的输入。如果您愿意,您甚至可以将strip映射到结果列表中,尽管它不是必需的。

user_list = map(str.strip, input("Enter a space-separated list: ").split())