1、 使用while循环处理列表和字典
# for循环适合遍历列表,是最有效的方式
# while循环适合修改列表数据,可以用来收集,存储并组织大量输入
# 在while使用标志比较合适
# break 退出循环不往下执行,continue 继续执行循环
2、使用input()和while做一个问卷调查
# input()代码只能出现在控制台执行,不能通过编译打包的这点需要注意
# 2.1 使用列表存储单一的回答 & input()和while
likes = [] # 定义一个列表存大家人喜欢的菜
active = True # 定一个变量作为标志,来判断要不要结束循环
while active:
like = input("请问你喜欢吃什么菜?如果想退出问卷调查请输入:quit")
if like != "quit":
likes.append(like)
else:
active = False # 标志为False表示不继续循环, 这里可以用break是一样的效果
print(f"大家喜欢的菜是{likes}")
# 2.1输出结果:
# 请问你喜欢吃什么菜?如果想退出问卷调查请输入:quit辣椒炒肉
# 请问你喜欢吃什么菜?如果想退出问卷调查请输入:quit西红柿鸡蛋
# 请问你喜欢吃什么菜?如果想退出问卷调查请输入:quitquit
# 大家喜欢的菜是['辣椒炒肉', '西红柿鸡蛋']
# 2.2 使用字典存储多回答 & input()和while
# 如果问卷调查有多个选项可以用字典存储然后依次添加到列表中去,有时候我们要举一反三灵活使用字典,列表,循环等
likess = {} # 定义一个字典存回答问题同学的名字,和他喜欢吃的菜
while True:
name = input("请问你叫什么名字")
vegetable = input("请问你喜欢吃什么菜?")
likess[name] = vegetable
repeat = input("请问是否继续问卷调查请输入:是/否")
if repeat == "是":
continue
elif repeat == "否":
break
else:
print("输入的选项错误,默认继续问卷调查")
continue
for name, like in likess.items():
print(f"{name} 同学喜欢吃 {like}")
# 2.2输出结果:
# 请问你叫什么名字刘艳
# 请问你喜欢吃什么菜?苦瓜
# 请问是否继续问卷调查请输入:是/否是
# 请问你叫什么名字张三
# 请问你喜欢吃什么菜?皮蛋抖辣椒
# 请问是否继续问卷调查请输入:是/否哈哈哈
# 输入的选项错误,默认继续问卷调查
# 请问你叫什么名字德宇
# 请问你喜欢吃什么菜?蛋啵啵和肉肉
# 请问是否继续问卷调查请输入:是/否否
# 刘艳 同学喜欢吃 苦瓜
# 张三 同学喜欢吃 皮蛋抖辣椒
# 德宇 同学喜欢吃 蛋啵啵和肉肉
3、在列表之间移动元素
# while 列表: while是可以对列表进行循环的,数据循环完后回退出循环
# 题目:有一个列表包含新注册但还没有实名制的网站用户,这些用户完成实名制后将他们移到已实名制的列表中
# 定义一个未实名制的用户列表
unconfirmed_user = ["刘艳", "张三", "李四", "王五"]
# 定义一个已近实名制的用户列表
Real_name_system = []
while unconfirmed_user:
user = unconfirmed_user.pop() # 删除列表的最后一位,并返回给变量user
print(f"{user} 用户已经完成实名")
Real_name_system.append(user) # 添加到已经实名制的列表中
# 输出结果:
# 王五 用户已经完成实名
# 李四 用户已经完成实名
# 张三 用户已经完成实名
# 刘艳 用户已经完成实名
print(f"显示所有已近完成实名制的用户清单:{Real_name_system}")
# 输出结果:显示所有已近完成实名制的用户清单:['王五', '李四', '张三', '刘艳']
3、删除为特定值的所有列表元素
# 题目:有一个宠物列表,想删除为cat的元素
pets = ["dog", "cat", "dog", "cat", "goldfish", "cats"]
# 判断 cat 在不在 pets这个列表中,如果在返回 :True 继续循环,不在返回False退出循环
while "cat" in pets:
pets.remove("cat") # 删除第一次出现的值
print(pets)
# 输出结果:['dog', 'dog', 'goldfish', 'cats']