Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python If/else语句获胜';不能在函数中执行_Python_Json - Fatal编程技术网

Python If/else语句获胜';不能在函数中执行

Python If/else语句获胜';不能在函数中执行,python,json,Python,Json,我正在制作一个函数,在这个函数中,我可以查看输入的代码是否已经有一个与之关联的活动帐户 为此,我简单地制作了以下函数: def check_code(): r=请求。获取(url) response=r.json() 如果响应['account']['active']为真: status=“活动帐户” 其他: status=“非活动帐户” 返回状态 现在,当keyaccount不存在时,我希望运行else语句 然而,我得到: keyrerror:“帐户” 响应代码显示如下: 激活:“未激活”

我正在制作一个函数,在这个函数中,我可以查看输入的代码是否已经有一个与之关联的活动帐户

为此,我简单地制作了以下函数:

def check_code():
r=请求。获取(url)
response=r.json()
如果响应['account']['active']为真:
status=“活动帐户”
其他:
status=“非活动帐户”
返回状态
现在,当key
account
不存在时,我希望运行
else
语句

然而,我得到:
keyrerror:“帐户”

响应代码显示如下:
激活:“未激活”


我的整个if/else语句只是检查帐户是否处于活动状态

您可以使用以下代码

def check_code():
    r = requests.get(url)
    response = r.json()

    if (account := response.get('account')) and account.get('active'):
        return "active account "

    else:
        return "not active account "

您只能在Python3.8中执行此操作。这很有效!但是,我的方法有什么问题?@genovese您试图访问一个不存在的密钥,这就是引发异常的原因
.get()
如果请求的键不存在(或者如果作为第二个参数提供默认值),则返回
None
,谢谢!但是,现在我得到了
json.decoder.JSONDecodeError:期望值:第1行第1列(char 0)
过一会儿每个人?(在
x
检查量之后似乎是随机的)在字典中使用get方法始终是最佳实践。Bcz get方法在未找到任何特定键时返回None。所以你的进一步执行将通过其他部分。在您的方法中,response[“account”]如果找不到键,则会引发keyrerror,这里的键是“account”。因此,您的程序将退出,而不是进一步执行。