Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自动处理无聊的逗号代码_Python_String_List_Python 3.x_Function - Fatal编程技术网

Python 自动处理无聊的逗号代码

Python 自动处理无聊的逗号代码,python,string,list,python-3.x,function,Python,String,List,Python 3.x,Function,在用Python自动化枯燥的东西第102页中,练习项目逗号代码-逗号代码 假设您有这样一个列表值:spam=['apples','bananas', ‘tofu’、‘cats’]编写一个函数,将列表值作为 参数,并返回一个字符串,其中所有项都用逗号分隔 和一个空格,在最后一项之前插入和。例如 将以前的垃圾邮件列表传递给函数将返回“apples, 香蕉、豆腐和猫。但您的功能应该能够正常工作 将任何列表值传递给它 我写的代码是有效的,并且停留在本章的上下文中。我在这个网站和谷歌上看到了其他的答案,我

在用Python自动化枯燥的东西第102页中,练习项目逗号代码-逗号代码

假设您有这样一个列表值:spam=['apples','bananas', ‘tofu’、‘cats’]编写一个函数,将列表值作为 参数,并返回一个字符串,其中所有项都用逗号分隔 和一个空格,在最后一项之前插入和。例如 将以前的垃圾邮件列表传递给函数将返回“apples, 香蕉、豆腐和猫。但您的功能应该能够正常工作 将任何列表值传递给它

我写的代码是有效的,并且停留在本章的上下文中。我在这个网站和谷歌上看到了其他的答案,我很惊讶我的代码是多么的不同,可能是多么的愚蠢。有人能帮我指出我的代码中所有不好的地方吗

我真的希望这是作为蟒蛇和尽可能少的线

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

def stringmaker(data):
    tempdata = 0
    datastring = ''
    stringlist = []
    stringdata = ''
    stringdata += ', '.join(data)
    stringlist += stringdata.split()
    tempdata = stringlist
    tempdata = str(stringlist.insert(-1, 'and'))
    datastring += ' '.join(stringlist)
    print(datastring)


stringmaker(spam)
其作用:将列表中的最后一个元素与“,”合并,然后添加“and”和最后一个元素

正如你问题中的评论所说,有时候最好放弃“一行程序”,以使代码更具可读性


另外,请注意,如果数据为空列表,则此代码暂时不起作用

您可以使用以下内容:

def stringmaker(data):
    return ", ".join(data[:-1]) + " and " + data[-1]


注: 在英语中,您通常不会在
之前使用
逗号,它会帮您完成工作:

words = ['apples', 'bananas', 'tofu', 'cats']
def spam(words):
   if words: # prevents parsing an empty list
        return ", ".join(words[:-1]) + ", and " + words[-1]
print spam(words)
# apples, bananas, tofu, and cats

我认为这是最好的输出


输出:愚蠢、迟钝、笨拙、愚蠢、不成熟、被忽视和看不见。

我做了这个练习,但把用户输入看作一个列表:(lista==list,但西班牙语:3)


这是我的解决方案,和你一样,我花了三天时间部分解决了这个问题。 但它真的很棒

代码如下:

 import sys
lista = []

while True:
    print('enter the '+ str(len(lista) + 1) +' item in your list ' "(or enter nothing to stop)")
    item = input()
    if item == '':
        break
    lista = lista + [item]
lista[-1] = 'and ' + lista[-1]
print('your complete list is: \n' + (", ".join(lista)))
sys.exit()
我得到


这样,唯一需要根据您希望列表的长度进行更改的是代码的范围(3)和.insert(2,'和')部分。

如果这是您认为可以改进的工作代码,请参阅。但请注意,“作为pythonic和尽可能少的行”有时会发生冲突。
data[0]如果len(data)==1 else',和.join([','.join(data[:-1]),data[-1]])
是我将如何做的,我会删除第一个示例,因为第二个示例既短又可读。此外,您的函数没有
返回
语句。什么是
?你是说
数据
?我遵循了你的advices@WNG
…+,和“+…
如果你想遵循规范-它包括牛津逗号。我不同意“你通常不使用”a。关于这一点有一些争议,例如,美联社在协调连词之前不使用逗号。不管怎样…谢谢你指出这一点!我的母语是葡萄牙语,我们在e(和)之前不使用逗号欢迎来到stackoverflow!你能更详细地解释一下你想要实现什么,并添加一些关于所使用的技术/语言的标记吗?我试图使这个程序尽可能灵活,每次使用python 3.x时都会制作自定义列表。我是新来的><希望我没有违反任何“行为准则”
def ltos(list):
    empty_string = ''
    for i in list[:-2]:
        empty_string += i + ", "
    empty_string += list[-2]
    empty_string += ' and ' + list[-1] + '.'
    print(empty_string)

myex = ['dumb', 'retard', 'awkward', 'brainless', 'immature', 'ignored', 'invisible']
ltos(myex)
 import sys
lista = []

while True:
    print('enter the '+ str(len(lista) + 1) +' item in your list ' "(or enter nothing to stop)")
    item = input()
    if item == '':
        break
    lista = lista + [item]
lista[-1] = 'and ' + lista[-1]
print('your complete list is: \n' + (", ".join(lista)))
sys.exit()
spam = ['apples', 'bananas', 'tofu', 'cats']
def list_string(the_list):
 number_list = len(the_list)
 if number_list == 1:
     print(the_list[0])
 elif number_list == 2:
     print(the_list[0] + ' and ' + the_list[1])
 elif number_list > 2:
     for a in range(1):
         print(', '.join(the_list[0 :len(the_list) - 1]) + ', and ' + the_list[len(the_list) - 1])



list_string(spam)
list = []
for i in range(3):
    value = str(input())
    list.append(value)
list.insert(2, 'and')
print(list)