我在下面发布的代码存在多个问题,因为正如我在上一篇文章中所说,我是编码新手,我自己找东西也很麻烦:(
我的目标是获取用户输入的内容,将其缩小到3个单词,然后按字母顺序对其进行排序。我这样做正确吗?
可能不是因为它用逗号将其打印出来。例如,以“我喜欢吃蛋糕”作为输入,输出为:
"'cake',", "'eating'", "'i',", "'like',"
但是我希望它是:
cake, eating, like
非常感谢您的帮助。
input = input(" ")
prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ',' ',' '}
processedinput = [word for word in re.split("\W+",input) if word.lower() not in prohibited]
processed = processedinput
processed.sort(key = len)
processed = re.sub('[\[\]]','',repr(processedinput)) #removes brackets
keywords = processed
keywords = keywords.split()
keywords.sort(key=str.lower)
keywords.sort()
keywords = re.sub('[\[\]]','',repr(keywords))
str(keywords)
print(keywords)
答案 0 :(得分:0)
您的代码的第一个问题是input = input()
。问题在于input
是您正在调用的函数的名称,但是您正在用用户的字符串覆盖input
。因此,如果您尝试再次运行input()
,它将失败。
第二个问题是您对清单有误解。在下面的代码中,tokens
是一个列表,而不是字符串。列表中的每个元素都是一个字符串。因此,无需去除括号等。您可以按照 reverse 的长度顺序对列表(代码的正确部分)进行排序,然后打印前三个单词。
代码:
import re
user_input = input(" ")
prohibited = {'this','although','and','as','because','but','even if','he','and','however','cosmos','an','a','is','what','question :','question','[',']',',','cosmo',' ',' ',' '}
tokens = [word for word in re.split("\W+", user_input) if word.lower() not in prohibited]
tokens.sort(key=len, reverse=True)
print(tokens[0], end=', ')
print(tokens[1], end=', ')
print(tokens[2])
输入:
i like eating cake
输出:
eating, like, cake