首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逗号代码(Python) (自动化无聊的东西)

逗号代码(Python) (自动化无聊的东西)
EN

Code Review用户
提问于 2020-12-11 19:34:43
回答 1查看 71关注 0票数 1

这是自动化教材中的一个练习。我应该创建一个函数,该函数将列表值作为参数,并返回一个字符串,该字符串的所有项都用逗号和空格分隔,并在最后一项之前插入“and”。我的代码还包括一个循环,供用户创建他们的列表。

代码语言:javascript
复制
def add_and(alist):
    if ((alist != []) & (len(alist) > 2)):
        for item in alist[:-1]:
            print(item + ", ",end="")
        print("and", alist[-1])
    elif ((alist != []) & (len(alist) == 2)):
        print(alist[0], "and", alist[1])
    elif ((alist != []) & (len(alist) == 1)):
        print(alist[0])
    else:    
        print("")
        
your_list = []
while True:
    print("Enter An Item or nothing")
    item = input()
    if ((item) == ""):
        print("")
        break
    else:
        your_list.append(item)
        continue

add_and(your_list)

我知道代码是有效的,但我想知道是否存在我正在实现的任何错误,或者是否有任何我可以做的事情来使它变得更干净。谢谢!

EN

回答 1

Code Review用户

回答已采纳

发布于 2020-12-12 15:52:53

  • 当不需要时,不要用parens包围子谓词或谓词。
  • 使用逻辑and而不是二进制&
  • 使用join而不是for和级联。
  • 将列表空值的常见子谓词加到外部if中。
  • 不要else-以后-break
  • 不需要继续
  • 在一个单独的函数中收集您的输入
  • 不要将input提示符留空

建议:

代码语言:javascript
复制
def and_add(alist):
    if len(alist) > 1:
        print(', '.join(alist[:-1]), 'and', alist[-1])
    elif len(alist) == 1:
        print(alist[0])
    else:
        print('')

def get_input():
    while True:
        item = input('Enter an item or nothing: ')
        if not item:
            return
        yield item

and_add(list(get_input())) 
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/253361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档