python入门三:字典、输入、while循环

1 字典

在Python中,字典是一系列键值对。每个键都与一个值关联,可以使用键来访问与之关联的值。值可以是数字、字符、列表、字典本身等,实际上,可以将任意Python对象用作字典的值。

在Python中,字典用{key1:value1,key2:value2}格式表示。键值对包含两个互相关联的值。当指定键时,Python将返回与之关联的值。在字典中,想存储多少个键值对都可以。

1.1 访问字典中的值

要获取值的内容,可以指定字典名并把键放在后面的方括号内。示例:

python 复制代码
person = {'name' : '张三', 'age' : 20}
print(f"姓名:{person['name']},年龄:{person['age']}")

1.2 添加键值对

字典是一种动态结构,可随时在其中动态添加键值对。要添加键值对,可依次指定字典名、用方括号括起来的键与该键关联的值。在上面的示例中添加键值对:

python 复制代码
person = {'name' : '张三', 'age' : 20}
person['birthday'] = '1988-06-19'
person['性别'] = '男'
print(f"姓名:{person['name']},年龄:{person['age']},生日:{person['birthday']},性别是:{person['性别']}")
print(person)

字典会保留定义时的元素排列顺序。

1.3 创建字典

首先创建一个空字典,然后添加键值对。示例:

python 复制代码
person = {}
person['姓名'] = '张三'
person['性别'] = 20
print(person)

1.4 修改字典的值

要修改字典值,可依次指定字典名、用方括号括起来的键和与键关联的新值。

python 复制代码
person = {}
person['姓名'] = '张三'
person['性别'] = 20
print(f"修改前:{person}")
person['性别'] = 30
print(f"修改后:{person}")
python 复制代码
person = {}
person['姓名'] = '张三'
person['年龄'] = 15
if person['年龄'] < 18:
    print(f"{person['姓名']},你未满18周岁")
else:
    print(f"{person['姓名']},你已满18周岁")
person['年龄'] = 30

if person['年龄'] < 18:
    print(f"{person['姓名']},你未满18周岁")
else:
    print(f"{person['姓名']},你已满18周岁")

1.5 删除键值对

使用del语句删除键值对。使用del时,必须指定字典名和要删除的键。

python 复制代码
person = {'name' : '张三', 'age' : 20}
print(f"删除前:{person}")
del person['age']
print(f"删除后:{person}")

1.6 使用字典存储类型的对象

可以使用字典存储众多对象的同一类信息。

python 复制代码
likes = {
    '张三' : '看电影',
    '李四' : '打游戏',
    '王五' : '听音乐'
}
if likes['张三'] == '看电影':
    print(f"张三请你看{likes['张三']}")
if likes['李四'] == '打游戏':
    print(f"李四请你打{likes['李四']}")

1.7 使用get()访问值

上面的示例中使用方括号内的键从字典中取值,如果键不存在则报错。

python 复制代码
person = {'name' : '张三'}
print(person['age'])

为了避免字典中出现这种报错,可使用get()方法在指定的键不存在时,返回一个默认值。get()方法的第一个参数用于指定键,不可缺少。第二个参数当指定的键不存在时要返回的值,可选。

python 复制代码
person = {}
print(person.get('name'),'无名')
print(person.get('age'))

2 遍历字典

遍历字典时,可以遍历所有的键值对,也可以只遍历键或值。

2.1 遍历所有的键值对

python 复制代码
likes = {
    'zhangsan' : 'movie',
    'lisi' : 'music',
    'wangsu' : 'food'
}
for key,value in likes.items():
    print(f"\nKeys:{key}")
    print(f"values:{value}")

2.2 遍历字典中所有的键

python 复制代码
likes = {
    'zhangsan' : 'movie',
    'lisi' : 'music',
    'wangsu' : 'food'
}
for key in likes.keys():
    print(key.title())

注意:在遍历字典时,会默认遍历所有的键。上面代码可以简化为:

python 复制代码
likes = {
    'zhangsan' : 'movie',
    'lisi' : 'music',
    'wangsu' : 'food'
}
for key in likes:
    print(key.title())

2.3 遍历字典中的所有值

使用value()方法获取字典中的值。它会返回一个值列表。

python 复制代码
likes = {
    'zhangsan' : 'movie',
    'lisi' : 'music',
    'wangsu' : 'food',
    'zhangsi' : 'movie'
}
for value in likes.values():
    if value == 'movie':
        print(f"{value}")

可以看到,value()方法会获取所有的值,不会去重。如果要去重,可以使用集合set。

python 复制代码
likes = {
    'zhangsan' : 'movie',
    'lisi' : 'music',
    'wangsu' : 'food',
    'zhangsi' : 'movie'
}
for value in set(likes.values()):
    if value == 'movie':
        print(f"{value}")

3 嵌套

将多个字典存储到列表中或将列表作为值存储到字典中,称为嵌套。可以在列表中嵌套字典,在字典中嵌套列表,字典中嵌套字典。

3.1 字典列表

python 复制代码
zhangsan = {'age' : 25 , 'birthday' : '1997-01-01'}
lisi = {'age' : 26 , 'birthday' : '1997-01-02'}
wangwu = {'age' : 27 , 'birthday' : '1997-01-03'}
students = [zhangsan, lisi, wangwu]
for student in students:
    print(student)

实际开发中,有时候需要创建一个空列表,动态生成字典添加到列表中。

python 复制代码
persons = []
for person in range(20):
    new_person = {'name' : 'zhangsan','age' : 20}
    persons.append(new_person)
for person in persons:
    print(person)

3.2 在字典中存储列表

有时候,需要将列表存储到字典中。

python 复制代码
colours = ['red', 'green', 'blue', 'yellow', 'purple']
languages = ['Python', 'Java', 'JavaScript', 'JavaScript']
all_ = {'colours': colours, 'languages': languages}
for key, value in all_.items():
    print(key, value)

3.3 字典中存储字典

python 复制代码
persons = {'zhangsan' : 20, 'lisi' : 21}
students = {'info' : persons , 'class'  : '三年二班'}
for key, value in students.items():
    print(key, value)

4 用户输入

4.1 input()函数的工作原理

input()函数让程序暂停运行,等待用户输入一些文本。获取用户输入后 ,Python将其赋给一个变量,后续使用。

python 复制代码
message = input('请输入姓名:')
print(message)

4.2 使用int()获取数值

在使用input()函数时,Python会将用户输入的内容默认为字符串。如果用户希望输入数值类型,可以使用int()函数把字符串转换为数值。

python 复制代码
age = input("请输入年龄: ")
if int(age) >= 18:
    print(f"你的年龄是{int(age)},已成年")
else:
    print(f"你的年龄是{int(age)},未成年")

4.3 求模运算符

在处理数值信息时,求模运算符(%)会经常用到,它将两个数相除并返回余数。例如,可以使用求模运算符判断数字是偶数还是奇数。

python 复制代码
message = input('请输入一个数字: ')
if int(message) % 2 == 0:
    print(f"{int(message)},是偶数")
else:
    print(f"{int(message)},是奇数")

5 while循环

for循环针对集合中的某个元素执行一个代码块,while循环则不断地执行,直到指定的条件不满足为止。

python 复制代码
num = 1
while num <= 10:
    print(num)
    num += 1

5.1 让用户选择何时退出

定义一个退出值,只要用户输入的不是这个值,程序就一直运行。

python 复制代码
message = ''
while message != 'exit':
    message = input('请输入退出值: ')
    print(message)

5.2 使用标志

上面的示例中,让程序在满足指定条件时执行特定的任务。但在更复杂的程序中,有很多不同的事件会导致程序停止运行。这时,可以定义一个变量,用于判断整个程序是否处于活动状态。这边变量称为标志。如果标志为True时,循环继续运行,如果标志为False,则退出循环。使用标志对上面程序进行改造。

python 复制代码
flag = True
while flag:
    message = input('请输入退出值: ')
    if message == 'exit':
        flag = False
        print('退出程序')
    else:
        print(message)

5.3 使用break退出循环

不管条件测试的结果如何,想立即退出循环,可使用break语句。break语句用户控制程序流程,可用来控制哪些代码将执行,哪些代码不再执行。

python 复制代码
while True:
    message = input('请输入退出值: ')
    if message == 'exit':
        break
    else:
        print(message)

5.4 continue语句

如果要退出本次循环,继续执行下次循环,可使用continue语句。例如,打印从1到10之间的奇数:

python 复制代码
num = 0
while num < 10:
    num += 1
    if num % 2 == 0:
        continue
    print(num)

5.5 使用while循环处理列表和字典

使用for循环遍历列表时,不应该在循环的同时修改列表,否则导致Python难以跟踪其中的元素。如果想再遍历列表的同时还可以修改列表,可以使用for循环。

5.5.1 在列表之间移动元素

定义一个有值的列表和一个空列表,使用while循环移动列表元素

python 复制代码
colours = ['blue', 'green', 'red', 'yellow', 'purple', 'brown']
colours_new = []
while colours:
    colours_new.append(colours.pop())
print(f"colours的内容{colours}")
print(f"colours_new的内容{colours_new}")

5.5.2 删除列表元素指定的值

前面的内容中,使用remove()函数可以删除列表中指定的值,之所以可行是因为要删除的值在列表中只出现一次。如果要删除的值在列表中出现多次,可以使用while循环删除。

python 复制代码
colours = ['blue', 'green','blue', 'red','blue','yellow','blue', 'purple','blue', 'brown','blue']
while 'blue' in colours:
    colours.remove('blue')
    print(colours)
print(colours)
相关推荐
牛油果子哥q2 小时前
【C++ this指针】C++ this指针深度精讲:this底层本质、存储位置、调用机制、const this指针、空指针调用、面试坑点与工程实战
开发语言·c++·面试
胡萝卜的兔2 小时前
go使用voidint实现版本切换
开发语言·chrome·golang
思麟呀2 小时前
C++11核心特性(二):constexpr
开发语言·c++
程序员二叉2 小时前
【Java】String 全套高频面试题详解
java·开发语言·面试
阿里嘎多学长2 小时前
2026-06-07 GitHub 热点项目精选
开发语言·程序员·github·代码托管
字节高级特工2 小时前
C++11(三)终极指南:可变参数模板与包装器详解
java·开发语言·c++·后端
川冰ICE3 小时前
JavaScript高级④|类(class)与面向对象,ES6现代写法
开发语言·javascript·es6
Sirius Wu3 小时前
Agent模型冷启动问题
开发语言·javascript·人工智能·机器学习·ecmascript·aigc
Irissgwe3 小时前
十、LangGraph能力详解:LangGraph 的其他特性
python·ai·langchain·langgraph