字典
初识字典
字典是Python中的一种数据结构,它是一个键值对的集合,其中键是唯一的,用于定位相应的值。字典是无序的,这意味着你无法通过索引来访问元素,而是通过键来访问。字典用大括号 {}
包围,键值对之间用逗号 ,
分隔,每个键值对则由键和值通过冒号 :
连接。
# 创建字典
my_info = {
"name": "17Lin",
"age": 18,
"address": {
"street": "159 Main ST.",
"city": "New York"
}
}
字典操作-增加
- 直接插入键值对
my_info["phone_number"] = "123-456-789"
- 使用updata()添加多个键值对
new_info = {
"Grade": 7,
"Class": 8
}
my_info.update(new_info)
字典操作-删除
- 使用del关键字
del my_info["phone_number"]
- 使用pop()方法
removed_info = my_info.pop("name")
字典操作-修改
通过直接赋值来修改即可
my_info["age"] = 26
字典操作-查询
- 通过键获取值
age = my_info["age"]
- 使用get()方法
class = my_info.get("Class")
字典操作-其它
- keys()方法返回一个包含所有键的集合
keys = my_info.keys()
for key in keys:
print(key)
- values()方法返回一个包含所有值的集合
values = my_info.values()
for value in values:
print(value)
- items()方法返回一个包含所有键值对的集合
items = my_info.items()
for item in items:
print(item)
- popitem()方法随机删除并返回一个键值对
# 删除并返回一个键值对,未指定时,默认删除并返回最后一个键值对
key, value = my_info.popitem()
print(f"key:{key} value:{value}")
- clear()方法清空字典
# 清空
my_info.clear()
print(my_info)
- copy()方法浅拷贝字典
# 浅拷贝
my_newInfo = my_info.copy()
print(my_newInfo)
- setdefault()方法检查键是否存在,不存在则添加键值对并返回值
# 如果键“country”已存在,直接返回他的值,否则添加键值对并返回值
country = my_newInfo.setdefault("country", "England")
# 如果"city"已有值,那么setdefault不会改变原有值
city = my_newInfo["address"].setdefault("city", "Beijing")
运算符
算术运算符:
a = 10
b = 8
print(a + b) # 加法
print(a - b) # 减法
print(a * b) # 乘法
print(a / b) # 除法
print(a // b) # 整数除法(向下取整)
print(a % b) # 取模运算
print(a ** b) # 幂运算
比较运算符:
对于任何可以比较的数据类型(包括数值、字符串等):
c = 10
d = 8
print(c > d) # 大于
print(c < d) # 小于
print(c == d) # 等于
print(c != d) # 不等于
print(c >= d) # 大于等于
print(c <= d) # 小于等于
逻辑运算符:
对于布尔类型或表达式结果为布尔值的情况:
- 逻辑与(and):
-
当使用
and
运算符连接两个布尔值时,只有当两边的布尔值都为True
时,整个表达式的结果才为True
,否则结果为False
。 -
在这个例子中,
e and f
的结果是False
,因为e
是True
,但f
是False
。当一个条件为假时,整体结果就为假。
- 逻辑或(or):
-
当使用
or
运算符连接两个布尔值时,只要两边的布尔值中有任意一个是True
,整个表达式的结果就是True
,只有当两边都为False
时结果才为False
。 -
在这个例子中,
e or f
的结果是True
,因为虽然f
是False
,但e
是True
,只要有一个条件为真,整体结果就为真。
- 逻辑非(not):
-
not是一个单目运算符,它作用于一个布尔值上,反转其逻辑状态。
-
在这个例子中,
not e
的结果是False
,因为e
本来是True
,对其进行否定后得到False
。
t = True
f = False
print(t and f) # 逻辑与 因为两边并非都为 True
print(t or f) # 逻辑或 因为至少一边为 True
print(not t) # 逻辑非 因为对 True 进行了否定
成员运算符:
-
对于序列类型(如列表、元组)和映射类型(如字典):
list1 = [1, 2, 3]
print(1 in list1) # 判断元素是否在列表中
print('a' not in 'abc') # 判断字符是否在字符串中
dict1 = {'name': 'Alice', 'age': 25}
print('name' in dict1) # 判断键是否在字典中
身份运算符:
is
和is not
用于判断两个对象是否指向内存中的同一处:
g = h = 5
print(g is h) # 输出True,因为g和h指向同一个对象
索引和切片运算符:
-
主要用于序列类型:
str1 = "Hello, World!"
print(str1[0]) # 索引操作,获取字符串的第一个字符
print(str1[1:5]) # 切片操作,获取字符串的一部分
赋值运算符:
-
对变量进行赋值,同时也有一些复合赋值运算符,如+=,-=,*=,/=,%=等:
i = 10
i += 5 # 相当于 i = i + 5
print(i) # 输出15
转义字符
转义字符是在编程语言或文本格式中,用来表示特殊意义字符或控制字符的一种方式。
在Python字符串中,一些常见的转义字符包括:
-
\n
:换行符,它告诉Python在输出字符串时在此处换行。 -
\t
:制表符,插入一个制表符宽度的空白(通常是四个空格)。 -
\r
:回车符,将光标移至当前行首(在某些系统中与\n
组合使用实现换行)。 -
\'
:单引号,用于在单引号包围的字符串中插入一个单引号字符。 -
\"
:双引号,用于在双引号包围的字符串中插入一个双引号字符。 -
\\
:反斜杠,用于插入一个反斜杠字符。 -
\a
:响铃(BEL)字符,在某些终端中发出声音提示。 -
\b
:退格(BS),在某些上下文中删除前一个字符。 -
\f
:换页符(FF),在老式打印机中可能引起换页动作。 -
\v
:垂直制表符(VT)。
另外,Python中还有原始字符串(Raw String)的概念,原始字符串通过在字符串前面添加r
或R
前缀来定义,其中的反斜杠不会被解释为转义字符,而是保持原样输出。例如:
raw_text = r"C:\Users\username\Desktop"
print(raw_text)
流程控制
条件控制
单分支结构
if 条件:
执行代码
双分支结构
if 条件:
执行代码1
else:
执行代码2
多分支结构
if 条件1:
执行代码1
elif 条件2:
执行代码2
elif 条件3:
执行代码3
....
elif 条件n:
执行代码n
else:
执行代码
循环控制
for循环
for 循环变量 in 迭代器对象:
执行代码块
while循环
while 条件判断:
执行代码块 # 条件为真时
循环控制语句
break:立即退出当前循环,不再执行后续迭代。
continue:跳过当前循环迭代中的剩余代码,进入下一次循环迭代。
代码练习
实现一个猜数字游戏,程序随机生成一个1-10之间的整数,用户有三次机会猜测,如果猜中则输出“恭喜你,猜对了!”并结束游戏,否则输出“很遗憾猜错了,你还有n次机会。”(n代表剩余猜测次数)。当次数用完还未猜对则输出“很遗憾没猜对,正确答案是X。”
import random
random_int = random.randint(1, 10)
count = 1
while count < 4:
guess = int(input("请输入你猜测的数字:"))
if guess == random_int:
print("恭喜你,猜对了!")
break
else:
print(f"很遗憾猜错了,你还有{3 - count}次机会!")
if count == 3:
print(f"很遗憾没猜对,正确答案是{random_int}")
break
count += 1