当前位置:首页>python>Python基础——字典与while循环

Python基础——字典与while循环

  • 2026-08-24 20:53:28
Python基础——字典与while循环

字典

概念:

现实类比

  • 查字典:通过“拼音/部首”(Key)快速找到“释义”(Value)。
  • 通讯录:通过“名字”(Key)找到“电话号码”(Value)。
xiaoming = {"name": "小明", "age": 20 , "gender": "男" } print(xiaoming)print(xiaoming['age'])print(xiaoming['gender'])

核心定义

  • Python 中唯一的内建映射类型。
  • 使用 键值对(Key-Value Pair)存储数据。

  • 特点:无序(3.7+版本后插入有序,但逻辑上应视为无序)、键必须唯一且不可变。

注意

1、字典使用花括号 {} 来定义,键值对之间用逗号分隔,键和值之间用冒号 : 分隔。例如:{"name": "小明", "age": 20} 表示一个包含姓名和年龄的字典.访问字典中的值时,可以使用键作为索引。例如,xiaoming["name"] 将返回 "小明"。

xiaoming = {"name": "小明", "age": 20 , "gender": "男" } print(xiaoming)print(xiaoming['age'])print(xiaoming['gender'])

2、每个键都与一个值关联,可以使用键来访问与之关联的值。与键相关联的值可以是数、字符串、列表乃至字典。

xiaoming = {"name": "小明", "age": 20 , 'day': [12,22] } print(xiaoming)print(xiaoming['day'])

操作字典

添加键值对

  • 使用新键为字典添加新的键值对,格式为 字典名[新键] = 新值。

  • 例如,向字典 xiaoming 添加性别信息:

xiaoming = {"name": "小明", "age": 20}xiaoming["gender"] = "男"print(xiaoming)
xiaoming = {"name": "小明", "age": 20}print(xiaoming)xiaoming["gender"] = "男"print(xiaoming)

注意

在字典中,可以创建无数个键值对,但每个键必须是唯一的。如果尝试使用已存在的键添加新的键值对,原有的值将被新的值覆盖。

xiaoming = {"name": "小明", "age": 20}xiaoming["age_1"] = 21print(xiaoming)

创建空字典

  • 使用空花括号 {} 创建一个空字典。

empty_dict = {}print(empty_dict)
  • 也可以使用 dict() 函数创建空字典:

empty_dict = dict()print(empty_dict)

修改字典中的值

  • 通过键访问字典中的值,并赋予新值来修改已有的键值对,格式为 字典名[键] = 新值。

  • 例如,修改字典 xiaoming 中的年龄信息:

xiaoming = {"name": "小明", "age": 20}xiaoming["age"] = 21print(xiaoming)

在这个例子中,要修改 xiaoming 字典中键为 "age" 的值,还可以使用 update() 方法:

xiaoming = {"name": "小明", "age": 20}xiaoming.update({"age": 21})print(xiaoming)xiaoming.update({"age": 21, "gender": "女"})print(xiaoming)

同样的,还可以使用if else 语句来根据情况修改字典中的值:

xiaoming = {"name": "小明", "age": 20, 'years':2025}if xiaoming['years'] > 2024:    add_age = 2else:    add_age = 0xiaoming["age"] = add_age + xiaoming["age"]print(xiaoming)

删除字典中的键值对

  • 使用 del 语句删除指定键及其对应的值,格式为 del 字典名[键]。

  • 例如,删除字典 xiaoming 中的性别信息:

xiaoming = {"name": "小明", "age": 20, 'years':2025}del xiaoming["years"]print(xiaoming) 

面对多个键值对的建议

当字典中包含多个键值对时,建议使用以下方法进行管理: 将每个键值对放在单独的一行,以提高可读性。例如:

my_dict = {"name": "小明","age": 20,"gender": "男",}print(my_dict)

使用get()方法访问字典中的值

  • 使用 get() 方法访问字典中的值,格式为 字典名.get(键, 默认值)。

  • 例如,访问字典 xiaoming 中的年龄信息:

xiaoming = {"name": "小明", "age": 20, 'years':2025}xiaoming_tall = xiaoming.get('tall',)print(xiaoming_tall)

好处在于,即使键不存在,也不会引发错误,而是返回一个默认值(如果提供了默认值的话)。

xiaoming = {"name": "小明", "age": 20, 'years':2025}print(xiaoming['tall'])

遍历字典

  • 使用 for 循环遍历字典的键、值或键值对。

遍历所有键值对

例如,遍历字典 xiaoming 的键和值:

xiaoming = {"name": "小明", "age": 20, "gender": "男"}for key in xiaoming:print(f"{key}:")

遍历所有键

使用 for 循环遍历字典的所有键: 1、keys()方法来遍历输出所有的键

xiaoming = {"name": "小明", "age": 20, "gender": "男"}for keys in xiaoming.keys():print(keys)

在这个例子中,keys() 方法返回字典中的所有键,然后通过 for 循环逐个输出每个键。其实也可以直接通过字典变量来遍历输出所有的键,因为字典默认遍历的是键。

xiaoming = {"name": "小明", "age": 20, "gender": "男"}for key in xiaoming:print(key)

遍历所有值

使用 for 循环遍历字典的所有值:1、values()方法来遍历输出所有的值在这个例子中,values() 方法返回字典中的所有值,然后通过 for 循环逐个输出每个值。

xiaoming = {"name": "小明", "age": 20, "gender": "男"}for value in xiaoming.values():print(value)

2、当字典中有大量值且包含重复值时,可以使用集合(set)来去重后遍历输出所有唯一的值。例如:

scores = {"Alice": 85, "Bob": 90, "Charlie": 85, "David": 92 , 'Amy':90}unique_scores = set(scores.values())for score in unique_scores:print(score)

字典嵌套

字典套字典

  • 字典的值可以是另一个字典,从而实现嵌套结构。
  • 例如,创建一个包含多个学生信息的字典:
students = {"001": {"name": "小明", "age": 20},"002": {"name": "小红", "age": 19}, }student_name = students["001"]["name"]print(student_name) 

字典套列表

  • 字典的值也可以是一个列表,从而实现更复杂的数据结构。
  • 例如,创建一个包含多个学生成绩的字典:
students_scores = {"小明": [85, 90, 78],"小红": [92, 88, 95],"小刚": [75, 80, 70]}print(students_scores['小明'][1])

作业1

1、请创建一个字典,包含三位学生的姓名和对应的成绩列表。然后,遍历字典,输出每位学生的姓名及其所有成绩的平均分。2、创建多个表示宠物的字典,每个字典都包含宠物的类型和名字、其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将有关每个宠物的所有信息打印来,输出格式为 'xx(宠物名)是一条xx(宠物类型),它的主人是xx(主人的名字)'。3、创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键,并存储每个人喜欢的 1~3 个地方。。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来。

grades = {'a':{'name':'001', 'grade':[12,12,11]},'b':{'name':'002', 'grade':[12,32,11]},'c':{'name':'003', 'grade':[42,12,11]}}for key in grades:    value_1 = grades[key]    name_for_print = value_1['name']    socre = value_1['grade']    socre_for_print = sum(socre)/3print(f'{name_for_print}的平均成绩是{socre_for_print}')
001的平均成绩是11.666666666666666002的平均成绩是18.333333333333332003的平均成绩是21.666666666666668

whlie循环和用户输入

使用input()函数获取用户输入

  • 使用 input() 函数获取用户输入,格式为 变量名 = input(提示信息)。

  • 例如,获取用户的姓名并打印问候语:
  • 注意:input()函数的提示信息是可选的。如果不提供提示信息,程序将等待用户输入而不显示任何提示。

name = input("请输入你的名字:")print("你好," + name + "!")

注意事项

  1. 输入的数据类型:input() 函数获取的用户输入默认是字符串类型。如果需要其他类型的数据(如整数或浮点数),需要进行类型转换。例如,使用 int() 将输入转换为整数:

age = int(input("请输入你的年龄:"))print(age,type(age))

2、当提示信息过长时,可以使用多行字符串(用三引号括起来的字符串)作为提示信息,以提高可读性。例如:

prompt = "请输入以下信息: 1. 你的姓名 2. 你的年龄 3. 你的城市"user_info = input(prompt)print("你输入的信息是:", user_info)

while循环

  • while循环是一种控制流语句,用于重复执行一段代码块,直到指定的条件不再满足为止。

  • 基本语法

while 条件:# 循环体代码块

下面是一个使用 while 循环打印数字 1 到 5 的示例:

count = 1while count <= 5:print(count)    count = count + 1for i inrange(1,6):print(i)
  1. 首先,计算条件的值。如果条件为真(True),则执行循环体代码块。
  2. 执行完循环体代码块后,重新计算条件的值。
  3. 如果条件仍为真,重复步骤 2;如果条件为假(False),则退出循环,继续执行循环后面的代码。

使用break语句退出循环

  • 使用 break 语句可以提前退出循环,无论条件是否满足。

  • 例如,使用 break 语句在用户输入 "exit" 时退出循环:

whileTrue:    user_input = input("请输入命令(输入 'exit' 退出):")if user_input.lower() == "exit":print("退出循环。")breakelse:print(f"你输入的命令是:{user_input}") 

使用continue语句跳过当前迭代

  • 使用 continue 语句可以跳过当前迭代,直接进入下一次循环。

  • 例如,使用 continue 语句跳过偶数,只打印奇数:

count = 0while count < 10:    count = count + 1if count % 2 == 0:continueprint(count)

作业2

1、编写一个循环,提示用户输入一系列比萨配料,并在用户输入 'quit' 时结束循环。每当用户输入一种配料后,都打印一条消息,指出要在比萨中添加这种配料。、

2、以不同的方式完成题目1,在程序中采取如下做法:-在 while 循环中使用条件测试来结束循环。-使用变量 active 来控制循环结束的时机。-使用 break 语句在用户输入 'quit' 时退出循环。

最新文章

随机文章