python与C++的一些区别以及一些新的东西
- 第一个Python程序
- 输入与输出
- Python基础
- 数据类型和变量
- 字符串和编码
- 使用list和tuple
- 条件判断
- 模式匹配
- 循环
- 使用dict和set
第一个Python程序
输入与输出




Python基础
数据类型和变量














字符串和编码





第一行代码的输出如下

解释如下:
'%2d-%02d'是格式化字符串。%2d表示一个整数(d代表十进制),它至少占用2个字符的宽度。如果整数不足2位,则默认在左侧填充空格以达到2位的宽度。-%02d表示一个整数,它至少占用2个字符的宽度,如果整数不足2位,则在左侧填充0以达到2位的宽度。注意,-是字符串的一部分,用于在两个数字之间添加连字符。




使用list和tuple
这里直接全部看原文,全是新东西
条件判断





模式匹配





也就是使用第一行的args会匹配到第二个case,使用第二行的args会匹配到第三个case,使用第三行的args会匹配到第一个case
这里可能会产生一个疑问,就是为什么这里不用在后面写上一个if而是可以直接变量绑定了?实际上,tuple和list都可以这么做,比如下面的代码是OK的
point = (1, 2)
match point:
case (0, 0):
print("Origin")
case (x, 0):
print(f"Point on the x-axis: {x}")
case (0, y):
print(f"Point on the y-axis: {y}")
case (x, y):
print(f"Point: ({x}, {y})")
循环


如果执行print(range(5))会输出range(0,5)



使用dict和set
Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。




当然如果存在,get()就返回键对应的值


也就是说list真的是链表而不是数组

也就是说,对于一个作为键的对象(也就是一个变量,注意在Pyhton中,一切皆对象)指向的值如果改变了的话,我们重新计算这个对象的hash值肯定就会改变,就没有办法在字典中找到这个键对应的值了(实际上在Python中,可变对象的哈希值是不可计算的)



在Python中可变对象的哈希值是不可计算的,而set需要通过哈希值去判重,一个不可计算的东西怎么能用呢?所以set不可以放入可变对象。并且有如下代码
a = (1, 2, 3)
b = (1, [2, 3])
s = set()
s.add(a)
print(s)
#没问题,正常输出{(1,2,3)}
ss = set(b)
print(ss)
#不行,因为b里面的[2,3]是一个可变的元素,所以会报错
#剩下换成dict再试一遍同理



