我正在尝试实现此代码。这里有问题:
1.我想在进一步的编码中使用变量typ_transport,而不只是在if内部使用。(它无法识别该变量。)
2.逻辑似乎是正确的,但是当我更改jsonStr中的值时(例如“ walk”:true到“ walk”:fasle),输出将不会输出正确的输出。
有人可以帮助我吗?谢谢
import json
jsonStr = '{"walk" : true, "bike" : false, "tram" : false}'
inputvar = json.loads(jsonStr)
if inputvar['walk'] == 'True' and inputvar['bike'] == 'False' :
typ_transport='foot'
elif inputvar['walk'] == 'False' and inputvar['bike'] == 'True' :
typ_transport='bicycle'
class transport:
if typ_transport=='foot':
velocity=80
typ='foot'
elif typ_transport=='bicycle':
velocity=330
typ='bicycle'
def __init__(self,typ,velocity):
self.velocity = velocity
self.typ = typ
if inputvar['tram'] == 'False' :
radius= T*transport.velocity
print (radius)
else :
print (typ_transport, 333)
答案 0 :(得分:1)
我在代码中看到了一些问题,因此在尝试您的问题时,我会尝试指出这些问题
- 我想在进一步的编码中使用变量typ_transport而不只是在if内部(它不能识别该变量。)
之所以无法访问typ_transport
变量,是因为它是在if
语句中创建的。如果您希望在代码的后面访问变量,则必须将typ_transport
的范围更改为全局范围。
您可以通过两种方式执行此操作。首先是在开始if
语句之前创建全局变量
typ_transport = ""
if inputvar['walk'] == True and inputvar['bike'] == False:
typ_transport = 'foot'
第二种方法是使用global
关键字在if语句内创建一个全局变量。不建议使用这种方法,因为这样很容易丢失变量及其范围的踪迹。
- 逻辑似乎是正确的,但是当我更改jsonStr中的值时(例如“ walk”:true到“ walk”:fasle),输出将不会输出正确的输出
除了您遇到的拼写错误外,Python布尔值还保存在True
和False
中(不带单引号,首字母大写)。使用JSON模块时,它应该可以正确解析,但是反复检查始终是个好主意。
最后,您正在使用类,但它不是有组织的。让我们尝试使其看起来更整洁。
class transport:
def __init__(self,typ_transport): #utilizing global variable we created
if typ_transport == 'foot':
velocity = 80
self.typ_transport = self.typ_transport
self.velocity = velocity
elif typ_transport == 'bicycle':
......
现在获取typ_transport = 'foot'
passenger = transport(typ_transport) #creating passenger object
velocity = passenger.velocity
答案 1 :(得分:0)
import json
jsonStr = ('[{"walk" : true, "bike" : false, "tram" : false}, '
'{"walk" : false, "bike" : true, "tram" : false}, '
'{"walk" : false, "bike" : false, "tram" : true},'
'{"walk" : false, "bike" : false, "tram" : false}]'
)
inputvar = json.loads(jsonStr)
class Transport:
def __init__(self,typ):
self.typ = typ
self.velocity = None
if typ == 'foot':
self.velocity = 80
elif typ == 'bicycle':
self.velocity = 330
elif typ == 'tram':
self.velocity = 333
for var in inputvar:
typ_transport = None
if var['walk'] is True and var['bike'] is False:
typ_transport = 'foot'
elif var['walk'] is False and var['bike'] is True:
typ_transport = 'bicycle'
elif var['tram'] is True:
typ_transport = 'tram'
transport = Transport(typ_transport)
print(transport.typ, transport.velocity)
这对我来说更有意义。 如果我误解了您的逻辑,请随时进行更改。