Python while循环处理列表和字典

        while循环处理列表和字典


        for循环是一种遍历列表的有效方式,但在for循环中不应修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。

        通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输出,供以后查看和显示。


在列表之间移动元素


#首先,创建一个待验证用户列表
#和一个用于存储已验证用户的空列表

unconfirmed_users =['alice','brian','candace']
confirmed_users = []

#验证每个用户,直到没有未验证用户为止
#将每个经过验证的列表都移到已验证的用户列表中
while unconfirmed_users:
    current_user = unconfirmed_users.pop()
    print("Verifying user: " + current_user.title())

#显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
    print(confirmed_user.title())

        模拟过程,打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短,而已验证的用户列表越来越长。未验证用户列表为空后结束循环,再打印已验证的用户列表:

Verifying user: Candace
Verifying user: Brian
Verifying user: Alice

The following users have been confirmed:
Candace
Brian
Alice

删除包含特定值的所有列表元素

        使用函数remove()来删除列表中的特定值,因为函数remove()删除特定值。如果列表包含了多个相同条件的特定值,可以使用while循环进行逐一删除。

pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']
print(pets)

while 'cat' in pets:
    pets.remove('cat')

print(pets)

打印结果

['dog','cat','dog','goldfish','cat','rabbit','cat']
['dog','dog','goldfish','rabbit']

使用用户输入来填充字典

        更多时候,字典中存储的信息都是记录用户输入的信息。将收集的数据存储在一个字典中,以便将回答和被调查者关联起来:

responses = {}

#设置一个标签,指出调查是否继续
polling_active = True

while polling_active:
    #提示输入被调查者的名字和回答
    name = input("\nWhat is your name? ")
    response =  input("Which mountain would you like to climb someday? ")

    #将答案存储在字典中
    response[name] = response

    #看看是否还有人要参与调查
    repeat = input("Would you like to let another person respond? (Yes / No) ")
if repeat == 'no':
    polling_active = False

#调查结果,显示结果
print("\n--- Poll Results ---")
for name,response in responses.items():
    print(name + " would like to climb " + respose + ".")

打印输出结果

what is your name? Eric
Which mountain you like to climb someday? Denali
Would you like to let another person respond? (Yes / No) yes

What is your name? Lynn
Which mountain would you like to climb someday? Devil's Thumb
Would you like to let another person respond? (Yes / No) no

--- Poll Resultes ---
Lynn would like to climb Devil's Thumb.
Eric would like to climb Denali.





猜你喜欢

转载自blog.csdn.net/qq_42346414/article/details/80999834
今日推荐