【发布时间】:2016-06-02 20:10:29
【问题描述】:
我需要能够在命令行中以任意顺序接受任意值(整数、浮点数),然后对其进行排序和打印。我可以只用整数或浮点数轻松做到这一点,但我一直试图阅读两者。我的 args 读数显示为 Namespace(floats=[6.5], integers=[5, 10, 8, 4])。我需要将所有这些数字放入一个列表中,然后按排序打印。有关如何解决此问题的建议?
我遇到的一个问题是参数必须按特定顺序排列,整数必须在前,然后是浮点数,但我需要能够以任何顺序输入它们。
举个例子。
$ sortNum.py 5 9.9 14 1.1
1.1, 5, 9.9, 14
我的代码如下:
try:
parser = argparse.ArgumentParser(description='Sort some arbitrary numbers by ascending or descending order')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='numbers for the sorter')
parser.add_argument('floats', metavar='F', type=float, nargs='+', help='floats for the sorter')
args = parser.parse_args()
# print the sorted values of user input from cmd line
print(sorted(args.integers + args.floats))
# print all the sys argument passed from cmd line including the program name
print(sys.argv)
except:
e = sys.exc_info()[0]
print(e)
我收到此错误: sortNum.py:错误:参数 N:无效的 int 值:'1.1' 当我尝试输入 1.1 作为我的第二个参数时。我正在使用以下参数进行测试:5 1.1 10 8 4 6.5 数值本身并不重要,只是它们可以是任何浮点数或整数并且需要排序。
【问题讨论】:
-
sorted(args.floats + args.integers)?鉴于您没有实际展示您的代码,因此很难提出更有用的建议。 -
好的,谢谢!这是我的第一个 python 程序(在 hello world 之外)。感谢您的帮助!
-
不要在问题中加入答案(或“已回答”),以后再给出minimal reproducible example。另外,请注意:blog.codekills.net/2011/09/29/the-evils-of--except--
-
好的,问题仍然存在。我不能按任何顺序排列数字。在这种情况下,数字必须是整数和浮点数,但它需要能够以任何顺序接受它们。
-
然后edit 的问题,注意How to Ask。
标签: python sorting floating-point int