大约一年前启动并停止后再次返回python。我只是搞砸了字典,并通过用户输入和在函数中动态构建它们。
下面的代码有效,但是将其输出为通用字典格式,我想做的是逐行输出,每个键和值都在一行上。
def person_info(name, age, address, employer, phone):
name = name.strip()
age = age.strip()
address = address.strip()
employer = employer.strip()
phone = phone.strip()
full_info = {'Name:': name, 'Age': age, 'Address': address, 'Employer': employer, 'Phone': phone}
return full_info
while True:
name = input('Enter Name: ')
age = input('Enter Age: ')
address = input('Enter Address: ')
employer = input('Enter Employer: ')
phone = input('Enter Phone Number: ')
if name == 'q' or age == 'q' or address == 'q' or employer == 'q' or phone == 'q':
print("...quitting")
break
else:
person = person_info(name, age, address, employer, phone)
print(person)
break
这样我得到的输出为:
{'Name:': 'Tim', 'Age': '42', 'Address': '1111 Place Drive', 'Employer': 'Earth', 'Phone': '555'}
我想要的是
名称:Tim
年龄:42
等...
我知道,如果我有静态定义的字典,我可以使用类似的东西
for key, value in full_info.items():
print(key, value)
它将提供我想要的输出,但是使用我尝试的方法似乎不起作用。我不确定这是否与函数中定义的字典有关。
我敢肯定有一个超级简单的答案,但是到目前为止我还找不到。
谢谢!
答案 0 :(得分:0)
遍历字典中的项目似乎可行,尝试一下并告诉我它是否可以解决您的问题
def person_info(name, age, address, employer, phone):
name = name.strip()
age = age.strip()
address = address.strip()
employer = employer.strip()
phone = phone.strip()
full_info = {'Name:': name, 'Age:': age, 'Address:': address, 'Employer:': employer, 'Phone:': phone}
return full_info
while True:
name = input('Enter Name: ')
age = input('Enter Age: ')
address = input('Enter Address: ')
employer = input('Enter Employer: ')
phone = input('Enter Phone Number: ')
if name == 'q' or age == 'q' or address == 'q' or employer == 'q' or phone == 'q':
print("...quitting")
break
else:
person = person_info(name, age, address, employer, phone)
for key, value in person.items():
print(key, value)
break
输出似乎采用您想要的格式
答案 1 :(得分:0)
让我们看看那些令人困惑的印刷品是从哪里来的。首先,我将接受您的代码,取消您的print(person)
行。查看仅input()
函数的作用:
def person_info(name, age, address, employer, phone):
name = name.strip()
age = age.strip()
address = address.strip()
employer = employer.strip()
phone = phone.strip()
full_info = {'Name:': name, 'Age': age, 'Address': address, 'Employer': employer, 'Phone': phone}
return full_info
while True:
name = input('Enter Name: ')
age = input('Enter Age: ')
address = input('Enter Address: ')
employer = input('Enter Employer: ')
phone = input('Enter Phone Number: ')
if name == 'q' or age == 'q' or address == 'q' or employer == 'q' or phone == 'q':
print("...quitting")
break
else:
person = person_info(name, age, address, employer, phone)
# print(person) NOTICE: This is commented out for now.
break
以下是该版本的输出:
Enter Name: a
Enter Age: b
Enter Address: c
Enter Employer: d
Enter Phone Number: e
它只是询问我,方法是在屏幕上打印我要输入的姓名/年龄/地址/雇主/电话。当我键入a / b / c / d / e时,这些字符也会显示在屏幕上,因为我键入了它们。此版本完全不再打印。
现在让我们取消对print(person)
行的注释。现在,除了我们刚看到的内容之外,还必须打印person
。因此,取消注释,并按原样运行代码,您将获得以下信息:
Enter Name: a
Enter Age: b
Enter Address: c
Enter Employer: d
Enter Phone Number: e
{'Name:': 'a', 'Age': 'b', 'Address': 'c', 'Employer': 'd', 'Phone': 'e'}
注意,唯一的补充是字典。第一行“输入内容”行与以前完全相同,完全是由于您询问了这些input
。而已。它不会再打印任何东西,也不会打印出任何意外内容。
没有办法隐藏这些Enter Name: a / Enter Age: b
打印件。但是,您可以编辑最后一个字典。为此,您只需要将print(person)
修改为:
for key, value in person.items(): print(key, value)
现在输出变为:
Enter Name: a
Enter Age: b
Enter Address: c
Enter Employer: d
Enter Phone Number: e
Name: a
Age b
Address c
Employer d
Phone e
再次,先打印Enter Name: a / Enter Age: b etc
的前5张照片,然后再重新格式化person
字典。再次,不再打印任何内容,没有意外。
希望这可以澄清一切。