Python入门全攻略(三)

时间:2025-02-13 11:49:58

字典

初识字典

字典是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)
  1. 当使用 and 运算符连接两个布尔值时,只有当两边的布尔值都为 True 时,整个表达式的结果才为 True,否则结果为 False

  2. 在这个例子中,e and f 的结果是 False,因为 eTrue,但 fFalse。当一个条件为假时,整体结果就为假。

  • 逻辑或(or)
  1. 当使用 or 运算符连接两个布尔值时,只要两边的布尔值中有任意一个是 True,整个表达式的结果就是 True,只有当两边都为 False 时结果才为 False

  2. 在这个例子中,e or f 的结果是 True,因为虽然 fFalse,但 eTrue,只要有一个条件为真,整体结果就为真。

  • 逻辑非(not)
  1. not是一个单目运算符,它作用于一个布尔值上,反转其逻辑状态。

  2. 在这个例子中,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)  # 判断键是否在字典中

身份运算符

isis 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字符串中,一些常见的转义字符包括:

  1. \n:换行符,它告诉Python在输出字符串时在此处换行。

  2. \t:制表符,插入一个制表符宽度的空白(通常是四个空格)。

  3. \r:回车符,将光标移至当前行首(在某些系统中与\n组合使用实现换行)。

  4. \':单引号,用于在单引号包围的字符串中插入一个单引号字符。

  5. \":双引号,用于在双引号包围的字符串中插入一个双引号字符。

  6. \\:反斜杠,用于插入一个反斜杠字符。

  7. \a:响铃(BEL)字符,在某些终端中发出声音提示。

  8. \b:退格(BS),在某些上下文中删除前一个字符。

  9. \f:换页符(FF),在老式打印机中可能引起换页动作。

  10. \v:垂直制表符(VT)。

另外,Python中还有原始字符串(Raw String)的概念,原始字符串通过在字符串前面添加rR前缀来定义,其中的反斜杠不会被解释为转义字符,而是保持原样输出。例如:

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