def defineType(riskCode):
if riskCode == 1:
riskType = High
else:
if riskCode == 2:
riskType = Moderate
else:
if riskCode == 3:
riskType = Low
else:
if RiskCode == 4:
riskType = No
这是我正在为班级工作的计划的一部分......
# Global Variables
custName = input('Please enter your name: ')
custAge = int(input('Please enter your age: '))
custViolation = int(input('Please enter the number of violations: '))
riskCode = 0
estimatePrice = 0
riskType = none
这些是我的全局变量......
Traceback (most recent call last):
File "C:\Users\Alli\Downloads\HwyRobbery.py", line 13, in <module>
riskType = none
NameError: name 'none' is not defined
这是我不断变化的错误,具体取决于我尝试解决问题所做的更改
任何帮助都将非常感谢!!!
谢谢! 阿利
答案 0 :(得分:14)
None
而不是none
。 Python区分大小写。
答案 1 :(得分:8)
我看到的初始问题是none
不是Python中的内置值。 None
是。{/ p>
此外,第一个函数中的嵌套if语句塔是不必要的。展平了!
def defineType(riskCode):
if riskCode == 1:
riskType = High
elif riskCode == 2:
riskType = Moderate
elif riskCode == 3:
riskType = Low
elif RiskCode == 4:
riskType = No
这不是错误,但它更具可读性,不是吗? (也更容易输入:)
另外,我认为代码中的其他地方定义了High
,Moderate
,Low
和No
?如果您将它们用作枚举常量(即作为一组其值不变的唯一整数),HIGH
,MODERATE
,LOW
和NO
将是更加惯用。
事实上,如果你这样做,那么整个功能就可以完成:
HIGH = 1
MODERATE = 2
LOW = 3
NO = 4
现在你根本不需要映射它们;你只需将riskCode
分配给riskType
,虽然现在可能有点多余了!
riskType = riskCode
如果您想从风险代码中获取字符串,请尝试使用第二个字典from Artsiom Rudzenka's answer。
最后......我建议将这些代码放在自己的命名空间中:
class Risk(object):
HIGH = 1
MODERATE = 2
LOW = 3
NO = 4
然后您可以像这样引用它们:
if riskCode == Risk.HIGH: do_something()
现在,您可以自由地使用NO
这样的简短词来表达其他内容。
答案 2 :(得分:3)
无需使用函数来使用函数进行风险映射,只需使用以下代码:
riskmapping = {1:High, 2:Moderate, 3:Low, 4:No}
但是如果是High,... No不是实例或变量,而只是一个字符串而不是:
riskmapping = {1:'High', 2:'Moderate', 3:'Low', 4:'No'}
用法:
highRisk = riskmapping[1]
或
if riskmapping[currentRiskCode]:
#do smth
答案 3 :(得分:1)
除了没有,我对简单的贡献:
riskCodes = {1: 'High', 2: 'Moderate', 3: 'Low', 4: 'No'}
def defineType(riskCode):
riskType = riskCodes[riskCode]
答案 4 :(得分:1)
如果要在函数之外修改全局变量,而不是声明为“不” 你必须使用全局关键字。
def defineType(riskCode):
global riskType
if riskCode == 1:
riskType = High
答案 5 :(得分:0)
在函数内设置riskType
对于该函数是本地的,不会影响全局中的值。您需要通过在尝试修改它的代码之前放置global riskType
来告诉您的函数使用全局。
None
应该大写。
我认为您的意思是将riskType设置为字符串,因此应引用这些值。
Python elif
有一个else if
。
更正的代码:
# Global Variables
riskCode = 0
estimatePrice = 0
riskType = None
def defineType(riskCode):
global riskType
if riskCode == 1:
riskType = "High"
elif riskCode == 2:
riskType = "Moderate"
elif riskCode == 3:
riskType = "Low"
elif RiskCode == 4:
riskType = "No"