Python 打印是按字母的相反顺序打印所有字母而不是单词

Python 打印是按字母的相反顺序打印所有字母而不是单词,python,Python,我需要打印用户从命令行输入的单词列表。现在,alplhabetical顺序可以很好地工作,但是当我以相反的方式打印时,它就不正确了。我尝试了很多东西,现在我已经没有主意了。任何人 代码如下: import argparse argparser = argparse.ArgumentParser() argparser.add_argument("user_string", help = 'User string') argparser.add_argument("--reverse", "-r

我需要打印用户从命令行输入的单词列表。现在,alplhabetical顺序可以很好地工作,但是当我以相反的方式打印时,它就不正确了。我尝试了很多东西,现在我已经没有主意了。任何人 代码如下:

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)

相反,应该只是将数组从z反转为a,但遗憾的是事实并非如此。

如果反转为真,则代码将用户输入视为一个巨大的字符串:

words_to_sort = sorted(args.user_string, reverse=True)
相反,您需要传入字符串列表,即
words\u to\u sort

words_to_sort = sorted(words_to_sort, reverse=True)

排序需要一个iterable。在您的例子中,它将字符串拆分为字符。也许,你应该考虑一下:
sorted(text.split(),reverse=True)
出于某种原因,您正在对args.user\u字符串进行排序。您应该只对单词进行排序。因为
args.reverseflag
已经是一个布尔值,所以您可以简单地传递它,以便
.sort
。去掉整个
if
-
else
块,用

words_to_sort.sort(reverse=args.reverseflag)
for word in words_to_sort:
    print(word)

您正在对输入字符串而不是单词列表进行排序

如果len(单词排序)>1和(args.reverseflag==True):
单词\u至\u排序=已排序(args.user\u字符串,反向=True)
打印(*从单词到排序)
将单词按字母顺序排列

如果len(单词排序)>1和(args.reverseflag==True):
单词排序=已排序(单词排序,反向=真)
打印(*从单词到排序)
实际上,您可以在if/else之前对其进行排序,然后返回颠倒的列表

args=argparser.parse_args()
user\u string=args.user\u string
words=已排序(user\u string.split())
如果len(字)<2:
args.user\u字符串
#提醒用户输入超过1个单词
打印(“程序的命令行参数无效。请提供两个或更多字符串进行排序。”)
如果args.reverseflag:
打印(*字[:-1])
其他:
打印(*字)
如果你(无意中)对字符串调用了
sorted()
,但认为它是一个列表,你会得到一个列表,而不是一个字符串:
排序(“abcd”,reverse=True)
给出
['d','c','b','a']
不是
“dcba”
words_to_sort.sort(reverse=args.reverseflag)
for word in words_to_sort:
    print(word)