我想获得用户输入的信用评级,例如AAA,A,BBB等,然后为此分配利率。例如,如果用户具有良好的信用评级,例如AAA,我将收取1%的利率。
我已经插入了我在VBA中用于此特定功能的代码,所以你有一个我想要的想法/它是如何工作的,虽然我删除了各种行,因为我只添加了代码以更好地透视我的内容我想做。
creditRate = InputBox("Please enter credit rating:")
If creditRate = "AAA" Then GoTo intcalc Else
If creditRate = "A" Then GoTo intcalc Else
If creditRate = "BBB" Then GoTo intcalc Else
If creditRate = "BB" Then GoTo intcalc Else
If creditRate = "CCC" Then GoTo intcalc Else
If creditRate = "DDD" Then GoTo intcalc Else
If creditRate = "AAA" Then intRate = 0.01 Else
If creditRate = "A" Then intRate = 0.03 Else
If creditRate = "BBB" Then intRate = 0.05 Else
If creditRate = "BB" Then intRate = 0.06 Else
If creditRate = "CCC" Then intRate = 0.08 Else
If creditRate = "DDD" Then intRate = 0.1 Else
答案 0 :(得分:0)
在Python中,这很可能是使用dict计算的,dict是一种基于哈希的数据结构,允许查找(相当)任意键。这样的dict可以创建如下
rate_dict = {"AAA": 0.01, "A": 0.03, "BBB", 0.05, "BB", 0.06, "CCC": 0.08, "DDD": 0.1}
然后,您将使用
设置利率(使用Python的标准命名约定)int_rate = rate_dict[credit_rate]
如果根据用户输入设置credit_rate
,您可能需要检查它是否有效。你可以用
if credit_rate in rate_dict:
...
如果要询问用户有效输入,请从无效值开始并迭代,直到用户提供了有效值。一个简单的方法是
credit_rate = '*'
while credit_rate not in rate_dict:
credit_rate = input("Credit rating: ")
如果您想提供错误消息,那么可接受值为break
的无限循环可能更具可读性。
while True:
credit_rate = input("Credit rating: ")
if credit_rate in rate_table:
int_rate = rate_dict[credit_rate]
break
print(credit_rate, "is not a known credit rating"
使用Python 2的读者应该注意使用内置的raw_input
,因为旧版本input
会尝试将输入评估为Python表达式。
答案 1 :(得分:0)
Python还提供了一个默认字典,如果字典中不存在键,则返回默认值。
from collections import defaultdict
rates = defaultdict(lambda: None, {
"AAA" : 0.01, "A" : 0.03,
"BBB" : 0.05, "BB" : 0.06,
"CCC" : 0.08, "DDD" : 0.1
})
所以
rate = rates['AAA'] #rate = 0.01
和
rate = rates['D']) #rate = None