打印由用户输入生成的词典的内容

时间:2019-11-24 02:35:16

标签: python

大约一年前启动并停止后再次返回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)

它将提供我想要的输出,但是使用我尝试的方法似乎不起作用。我不确定这是否与函数中定义的字典有关。

我敢肯定有一个超级简单的答案,但是到目前为止我还找不到。

谢谢!

2 个答案:

答案 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字典。再次,不再打印任何内容,没有意外。

希望这可以澄清一切。