我需要打印用户从命令行输入的单词列表。现在,字母顺序工作正常,但是当我反向打印时,输出顺序不正确。我尝试了很多事情,但现在想法不清了。任何人?这是代码:
import argparse
argparser = argparse.ArgumentParser()
argparser.add_argument("user_string", help = 'User string')
argparser.add_argument("--reverse", "-r", action="store_true", dest="reverseflag")
args = argparser.parse_args()
user_string = args.user_string
words_to_sort = user_string.split()
if len(words_to_sort) < 2:
args.user_string
# alerts user to input more than 1 word
print("Invalid command line arguments to program. Please, supply two or more strings to sort.")
if len(words_to_sort) > 1 and (args.reverseflag == True):
words_to_sort = sorted(args.user_string, reverse=True)
print(*words_to_sort)
else:
words_to_sort.sort()
for word in words_to_sort:
print(word)
Run Code Online (Sandbox Code Playgroud)
这是我从命令行得到的:
PS C:\Users\desktop\folder> python mysort.py --reverse "all mall ball"
m l l l l l l b a a a
PS C:\Users\desktop\folder> python mysort.py "all mall ball"
all
ball
mall
Run Code Online (Sandbox Code Playgroud)
相反,应该只是将数组从z反转为a,但不幸的是并非如此。
如果reverse为True,则您的代码会将用户输入视为一个巨大的字符串:
words_to_sort = sorted(args.user_string, reverse=True)
Run Code Online (Sandbox Code Playgroud)
相反,您需要传递字符串列表,即words_to_sort:
words_to_sort = sorted(words_to_sort, reverse=True)
Run Code Online (Sandbox Code Playgroud)