2 回答
![?](http://img1.sycdn.imooc.com/5458689e000115c602200220-100-100.jpg)
TA贡献1799条经验 获得超8个赞
我合理的解释是,它的发生是由于无限循环,很可能是等待解析系统参数向量时出现错误。这里也提到了同样的问题(信用计算器阶段 4 - 内部系统检查错误),但没有提出解决方案。
不要通过命令行解析输入,而是尝试使用argparse等模块并预设输入的值。
这是一个脱离上下文的示例,展示了如何使用它
import argparse
# check command line options
parser = argparse.ArgumentParser()
parser.add_argument("--type", dest="type_of_payment", type=str, choices=["diff", "annuity"], required=True, help="Add some help text here")
parser.add_argument("--periods", dest="period_count", type=int, required=True)
parser.add_argument("--payment", dest="monthly_payment", type=float, required=True)
parser.add_argument("--interest", dest="credit_interest", type=float, required=True)
parser.add_argument("--principal", dest="credit_principal", type=float, required=True)
args = parser.parse_args()
# show the values
print(f"Type of payment: {args.type_of_payment}")
print(f"Periods: {args.period_count}")
print(f"Payment: {args.monthly_payment}")
print(f"Interest: {args.credit_interest}")
print(f"Principal: {args.credit_principal}")
![?](http://img1.sycdn.imooc.com/545862120001766302200220-100-100.jpg)
TA贡献1840条经验 获得超5个赞
终于我找到问题所在和解决办法了!如 HyperSkill 项目示例所示 - 正确的参数可以是五个,并且它们可以是不同的元素。例子:
> python creditcalc.py --type=annuity --principal=1000000 --periods=60 --interest=10
和
> python creditcalc.py --type=annuity --payment=8722 --periods=120 --interest=5.6
是正确的输入,注意元素的差异。第一个中没有付款参数,第二个中有主要参数。因此,根据输入参数的类型,其顺序将不同,但长度相同。
首先,需要使用 argparser 声明所有参数并设置 required=False
parser = argparse.ArgumentParser()
parser.add_argument("--type", type=str, choices=["diff", "annuity"], required=False)
parser.add_argument("--principal", type=float, required=False)
parser.add_argument("--periods", type=int, required=False)
parser.add_argument("--payment", type=float, required=False)
parser.add_argument("--interest", type=float, required=False)
读取变量的参数:
args, leftovers = parser.parse_known_args()
然后找出传递了哪些参数 - 要么你需要计算
> python creditcalc.py --type=annuity --payment=8722 --periods=120 --interest=5.6
或者
> python creditcalc.py --type=diff --principal=1000000 --payment=104000
或者
> python creditcalc.py --type=annuity --principal=500000 --payment=23000 --interest=7.8
您可以使用简单的 if 语句来检查它,如下所示:
if args.type is not None and args.principal is not None and args.periods is not None and args.interest is not None:
pass
elif args.type is not None and args.payment is not None and args.periods is not None and args.interest is not None:
pass
添加回答
举报