import requests
url = 'http://jsonplaceholder.typicode.com/users'
response = requests.get(url)
users = response.json()
id_num = input("Please enter id number:")
user_name = input("Please enter username:")
for person in users:
if person[id_num].title == person[user_name].title:
try:
print(person["name"])
except AttributeError:
print("Input doesn't match out records.")
结果:
C:\Users\username\PycharmProjects\foldername\venv\Scripts\python.exe C:/Users/username/PycharmProjects/foldername/foldername/main.py
Please enter id number:1
Please enter username:Bret
Traceback (most recent call last):
File "C:\Users\username\PycharmProjects\foldername\foldername\main.py", line 11, in <module>
if person[id_num].title == person[user_name].title:
KeyError: '1'
Process finished with exit code 1
因此,我试图要求用户提供请求的输入以从 API 返回 JSON 文件的名称条目。我试过切换变量,因为它说的是 KeyError Bret。然后我添加.title
来处理用户在请求的信息中输入错误。然后我添加了try/except
无论如何我必须在那里。仍然是这个 KeyError 与第一个接受的输入。
我正在使用安装了请求的最新 pycharm。从我正在工作的演示中我不假设导入任何其他东西,代码在它只是
for person in users:
print(person["name"])
但这当然会从 API 返回 JSON 文件中的所有名称。我需要接受用户输入并从中返回名称,我知道我错过了一些不知道是什么。这只是我的第三个 python 项目。我已经完成了 csv、xml 和字典迭代。
我相信这会给你你正在寻找的答案:
for person in users:
if(person["id"]==int(id_num)):
person_username = person["username"]
if(person_username == user_name):
print(person["name"])
基本上,这个问题是在这一段代码:person[id_num].title
。
说,你的 id_name = 1。现在,你在这里试图做的是从 person 字典中获取键的值,其中键 = 1。由于这不是 person 字典中存在的有效键,它导致一个密钥错误。
现在,在上面给出的代码中,首先检查人的 id 值是否等于 id_num 输入。如果这是真的,那么我们正在获取具有 id = id_num 值的人的用户名值。之后,我们检查提取的用户名值是否等于提供的用户名输入!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句