Python允许在数字中间以_分隔,因此,写成10_000_000_000和10000000000是完全一样的。
python还提供列表、字典等多种数据类型,还允许自定义数据类型
变量可以是任意数字类型
变量在程序中使用一个变量名进行表示,变量名由大小写字母、数字和下划线组成,数字不能开头。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言。
常量就是不能改变的变量,Python中使用大写变量名来表示常量
# / 除法计算结果是浮点数,即使是两个整数运算
# // 称为地板除,除法结果只取整数部分
ord("A")
# 输出65
chr(66)
# 输出B
# python用带有字母“b”前缀的单引号或双引号表示bytes类型的数据
# 有无前缀的区别是字符占的字节数
x = b"ABC"
'ABC'.encode('ascii')
# 输出b'ABC'
b'ABC'.decode('ascii')
# 输出'ABC'
中文显示问题,当源代码中包含有中文时,一定要保存为UTF-8编码
| 占位符 | 替换内容 |
|---|---|
| %d | 整数 |
| %f | 浮点数 |
| %s | 字符串 |
| %x | 十六进制整数 |
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数。
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
# 输出
# 3-01
#3.14
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
# 输出
# 'Hello, 小明, 成绩提升了 17.1%'
使用以f开头的字符串,称之为f-string,字符串如果包含{xxx},就会以对应的变量替换
>>> r = 2.5
>>> s = 3.14 * r ** 2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62
s1=72
s2=85
up=(s2-s1)/s1*100
# %占位符
print("小明成绩变化的百分点是%.2f%%"%up)
# format方法
print("小明成绩变化的百分点是{0:.2f}%".format(up))
# f-string
print(f"小明成绩变化的百分点是{up:.2f}%")
list和tuple是python内置的有序集合,一个可变,一个不可变。
#定义列表
list = [1,2,3,"木头人"]
# 列表末尾增加元素
list.append('元素')
# 列表指定位置i处插入元素
list.insert(i,'元素')
# 删除列表末尾元素
list.pop()
# 删除列表指定位置i处元素
list.pop(i)
# 列表某个位置替换元素,直接赋值进行覆盖
# 列表索引从0开始
L = [
['Apple', 'Google', 'Microsoft'],
['Java', 'Python', 'Ruby', 'PHP'],
['Adam', 'Bart', 'Lisa']
]
# 打印Apple
print(L[0][0])
# 打印Python
print(L[1][1])
# 打印Lisa
print(L[2][2])
# 定义元组
tuple = (1,2,3,"木头人")
# 定义只有一个元素的元组时,要加逗号,避免歧义
tuple = (1,)
根据Python的缩进原则,if和else进行匹配,自上而下进行判断,当满足条件时,后面的elif和else都不再执行。
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
Python的循环有两种,一种是for…in循环,依次把list或tuple中的每个元素迭代出来。第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。
L = list(range(1,10))
sum = 0
for x in L:
sum = sum + x
print(sum)
只要满足条件,就一直循环。条件不满足时退出循环。
# 计算100以内所有奇数的和
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
# 依次打印出“Hello,xxx”
L = ['Bart', 'Lisa', 'Adam']
while len(L) != 0:
print("Hello,%s!" % L.pop(-len(L)))
python内置了字典,在其他语言中成为map,使用键值对存储,具有极快的查找速度,dict内部存放的顺序和key放入的顺序没有关系。
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
>>> d['Adam'] = 67
>>> d['Adam']
67
# 要避免key不存在的错误,有两种办法
# 1.通过in判断key是否存在:
>>> 'Thomas' in d
False
# 2.通过get()方法,如果key不存在,可以返回None或者指定的value
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}
| list | dict |
|---|---|
| 查找和插入的时间随着元素的增加而增加 | 查找和插入的速度极快,不会随着key的增加而变慢 |
| 占用空间小,浪费内存很少 | 需要占用大量的内存,内存浪费多 |
key一定是不可变对象,在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key。
# 要创建一个set,需要提供一个list作为输入集合:
>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}
set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}