2 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超8個(gè)贊
我合理的解釋是,它的發(fā)生是由于無(wú)限循環(huán),很可能是等待解析系統(tǒng)參數(shù)向量時(shí)出現(xiàn)錯(cuò)誤。這里也提到了同樣的問(wèn)題(信用計(jì)算器階段 4 - 內(nèi)部系統(tǒng)檢查錯(cuò)誤),但沒(méi)有提出解決方案。
不要通過(guò)命令行解析輸入,而是嘗試使用argparse等模塊并預(yù)設(shè)輸入的值。
這是一個(gè)脫離上下文的示例,展示了如何使用它
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}")

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
終于我找到問(wèn)題所在和解決辦法了!如 HyperSkill 項(xiàng)目示例所示 - 正確的參數(shù)可以是五個(gè),并且它們可以是不同的元素。例子:
> python creditcalc.py --type=annuity --principal=1000000 --periods=60 --interest=10
和
> python creditcalc.py --type=annuity --payment=8722 --periods=120 --interest=5.6
是正確的輸入,注意元素的差異。第一個(gè)中沒(méi)有付款參數(shù),第二個(gè)中有主要參數(shù)。因此,根據(jù)輸入?yún)?shù)的類型,其順序?qū)⒉煌L(zhǎng)度相同。
首先,需要使用 argparser 聲明所有參數(shù)并設(shè)置 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)
讀取變量的參數(shù):
args, leftovers = parser.parse_known_args()
然后找出傳遞了哪些參數(shù) - 要么你需要計(jì)算
> 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
您可以使用簡(jiǎn)單的 if 語(yǔ)句來(lái)檢查它,如下所示:
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
添加回答
舉報(bào)