如何使用用户提示定义每个参数的浮点值?目前,我使用的是default = x,但宁愿允许用户定义一些变量,然后再将它们收集在一起并传递给函数。
我认为我可以做类似的事情:
first = input("first float")
second = input("second float")
third = input("third float")
...但是我得到了:TypeError(“ * =:'float'和'NoneType'”不支持的操作数类型),
这里的代码可以正常工作,但是使用默认= x vs.用户提示。
import sys
import argparse
if __name__ == "__main__":
args = sys.argv
args.pop(0)
arg_parser = argparse.ArgumentParser("Help")
arg_parser.add_argument("--first", type=float, help="first value", default=1)
arg_parser.add_argument("--second", type=float, help="second value", default=2)
arg_parser.add_argument("--third", type=float, help="third value", default=3)
args = arg_parser.parse_args(args)
whatever = WhateverWhatever(args.first, args.second, args.third)
whatever.start()
class WhateverWhatever:
def __init__(self, first = 1, second = 2, third = 3):
self.first = first
self.second = second
self.third = third
答案 0 :(得分:1)
您可以通过编写代码在控制台中运行
python <PythonFileName.py> --first=<first input> --second=<second input> --third=<third input>
您不需要在代码中编写输入法。
答案 1 :(得分:0)
默认解析使用instanceof
sys.argv[1:]
您还可以提供类似的列表
args = arg_parser.parse_args()
将args = arg_parser.parse_args('--first 1 --second 23 --third 42'.split())
测试到
argparse
查看解析器产生了什么。
可以使用以下方法生成匹配的命名空间对象:
print(args)
或者 args = argparse.Namespace(first=1, second=43, third=23)
可以是具有相关属性的任何对象,例如args
等。
答案 2 :(得分:-1)
结果非常明显。
import sys
import argparse
if __name__ == "__main__":
args = sys.argv
args.pop(0)
arg_parser = argparse.ArgumentParser("Help")
arg_parser.add_argument("--first", type=float, help="first value", default=1)
arg_parser.add_argument("--second", type=float, help="second value", default=2)
arg_parser.add_argument("--third", type=float, help="third value", default=3)
args = arg_parser.parse_args(args)
args.first = float(input("First value"))
args.second = float(input("Second value"))
args.third = float(input("Third value"))
whatever = WhateverWhatever(args.first, args.second, args.third)
whatever.start()
class WhateverWhatever:
def __init__(self, first = 1, second = 2, third = 3):
self.first = first
self.second = second
self.third = third