运行以下代码:
import math
val=int(input("Vill du använda πr2(1) eller (πd2)/4(2)"))
if val == "1":
class cirkel():
def __init__(self,radie):
self.A=radie
def area(self):
return ((self.A*self.A)*math.pi)
radie1=int(input("Vad är din radie?\n"))
circle=cirkel(radie1)
print("Arean av cirkeln är",circle.area())
if val == "2":
class cirkel():
def __init__(self,diameter):
self.A=diameter
def area(self):
return (((self.A*self.A)*math.pi)/4)
diameter1=int(input("vad är din diameter?\n"))
circle=cirkel(diameter1)
print("Arean av cirkeln är", circle.area())
导致此错误的原因:
Traceback (most recent call last): File "main.py", line 11, in circle=cirkel(radie1) NameError: name 'cirkel' is not defined
我如何解决这个问题
您的“val”具有int类型,但您将其与两个if语句中的字符串文本进行比较,这意味着该条件永远不会为true,从而导致“cirkel”未定义。 您应该将“val”与int文本(val==1而不是val==1)进行比较,或者将其转换为字符串
您需要将代码移动一点:
原因是,在代码中,如果val为2,则类
cirkel
直到该位之后才定义:因此,当您尝试设置
circle=circle()
时,尚未定义该类我会说,总的来说,这不是一个好的设计。您应该考虑定义两个单独的类,然后根据Vall的值来决定使用哪一个类,例如:
(另请注意,根据PEP8惯例,类的名称应以大写字母开头。)
首先-Python中的类不需要括号,因此
class cirkel():
应该转换为class cirkel:
次要-主要问题是if条件-
if val == '1':
应更改为if val == 1:
,因为它是整数比较,而不是字符串相关问题 更多 >
编程相关推荐