【Python学习笔记】(一)Python基础

语法采用缩进方式,语句以:结尾时,缩进的语句视作代码块

数据类型和变量

数据类型

整数

  1. 除法计算:
    /精确的,结果为浮点数
    //地板除,得到整数

浮点数

字符串

表示:“”或‘’或’‘’ ‘’'(可表示多行字符串)括起来的文本

转义字符:\

默认不转义字符串:r''

布尔值

取值:True 和False

运算: and``or``not

空值

None

变量

  1. 由于python为动态语言,同一变量可被赋不同类型的值

常量

书写:全部字母大写

字符串和编码

字符编码

  1. ASCII编码
    只有一个字节,不能表示很多字符
  2. Unicode编码
    两个或多个字节,对于短小的字符浪费存储空间
  3. UTF-8编码
    可变长,包含了ASCll编码,汉字是3个字节

【Python学习笔记】(一)Python基础_第1张图片

在计算机内存中统一使用Unicode编码,当需要将数据保存到硬盘或需要传输时,转换为UTF-8编码

Python中的字符串(str

Unicode编码

  1. 编码和字符之间的转换(ord()chr()
print(ord('A'))# 65
print(chr(66))# 'B'
  1. 字符串的编码和解码
    str在内存中以Unicode形式编码,需要传输或保存到磁盘上时,变为以字节为单位的bytes
print('ABC'.encode('ascii'))
#b'ABC' 占3个字节,而不是3个字符6个字节
print('中文'.encode('utf-8'))
#含有中文的字符不可以用ascii编码

#解码
print(b'ABC'.decode('utf0-8'))
#当bytes中韩有一小部分无效字节时,使用`error = 'ignore'` 忽略
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')

#计算字符数或字节数
len('ABD')#得到字符数
len(b'ABD')#得到字节数

#小栗子
print(len('中文'))# 2
print(len('中文'.encode('utf-8')))# 6,一个中文字符经utf-8编码之后占3个字节

格式化字符串:

  1. 占位符格式化
    %用于占位和将字符串与参数分隔开
    字符串中的%%%表示
  2. format()格式化方法
    format()里面的参数依次替换字符串中的{0}, {1}, {2},…
  3. f-string方法
    f'xxx'中的{xxx}会用相应的变量替换
#占位符格式化方法
print('Hello, %s' % 'world')# Hello, world
print('Hi, %s, you have $%d.' % ('Michael', 1000000)) # Hi, Michael, you have $1000000.
#指定补位和小数位数
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.124234)
#%s永远起作用
print('Age: %s. Gender: %s' % (25, True))# %s将任何数据类型转换为str

#format()方法
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)) # 第二个参数使用:限制小数位数

#f-string方法
r = 2.5
s = 3.14 * r ** 2
print(print(f'The area of a circle with radius {r} is {s:.2f}'))

使用列表(list)和元组(tuple)

列表(list)

操作集:

  1. len()获得元素个数
  2. 使用索引访问元素,访问越界有IndexError
    -1索引直接访问最后一个元素
    使用索引可以修改值
  3. append(key)方法追加元素到末尾
  4. insert(pos, key)方法插入元素到指定位置
  5. pop(i)删除指定位置的元素,默认为最后一个元素
  6. 空list L = []
  7. .sort()排序

注意:

  1. list中元素数据类型可以不同
#建立list
classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)
#len()
print(len(classmates))
#索引访问
print(classmates[0])
print(classmates[-2])
classmates[0] = 'Sarah'
#追加
classmates.append("Adan")
#插入
classmates.insert(1, "Jack")
#删除
classmates.pop()
classmates.pop(3)
#list中元素可为不同类型
s = ['python', 'java', ['asp', 'php'], 'scheme']
#排序
a = ['c', 'b', 'a']
a.sort()
print(a)

元组(Tuple)

操作集
与list类似,但tuple不可变,没有insert,append,pop等方法

注意事项:

  1. 空tuple t = ()
  2. 只有一个元素的tuple t = (1, ),使用,将只有一个元素的tuple和元素本身区分,()可理解为运算符号
  3. tuple的不可变性指的是,元素的指向不变,但如果tuple的元素可变,此时得到了一个可变的tuple
t = (1,)
print(t)
#可变的tuple
t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'
print(t)

【Python学习笔记】(一)Python基础_第2张图片

条件判断

条件判断

非零数值,非空字符串,非空list等都为True

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

input

input()得到的返回值为str类型,需要使用强制类型转换变成我们需要的类型

s = input('birth: ') #使用int()强制类型转换
birth = int(s)
if birth < 2000:
    print('00前')
else:
    print('00后')

循环

for…in循环

使用:

  1. 依次将llist或tuple中的每个元素迭代出来
  2. 使用range()函数进行迭代
    range()函数生成的序列是左闭右开的
names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

sum = 0
for x in range(101):
    sum = sum + x
print(sum)

while循环

使用breakcontinue语句

#计算100以内的所有奇数和
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

使用字典(dict)和集合(set)

字典(dict)

使用键值对(key-value)存储,查找速度快(通过key得到value的存储地址),占用内存大,空间换时间

操作

  1. 初始化
  2. 通过key索引放入键值对
  3. in判断key是否存在
  4. get(key, default)判断是否存在,不存在返回default值,default默认为None
  5. pop(key)删除元素

注意事项

  1. 一个key只对应一个value,后面放入的值会冲掉前面的
  2. 下标访问时,key不存在会报错
  3. key必须是不可变对象
#创建dict
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print(d['Michael'])
#使用索引插入
d['Adam'] = 67
#使用in关键字判断
print('Thomas' in d)
#使用get方法
print(d.get('Thomas', -1))
#删除
d.pop('Bob')
print(d)
#使用可变对象list作为key
key = [1, 2, 3]
d[key] = 'a list'#报错:TypeError

集合(set)

set元素为key,不能重复,但不存储value

操作集:

  1. set的创建,传入一个list
  2. add(key)添加元素
  3. remove(key)删除元素
  4. 求交并

注意事项:

  1. 不可以有可变对象
  2. 创建时,有重复元素将被过滤掉
#set的创建
s = set([1, 2, 3])
print(s)
#含有重复元素的创建
s = set([1, 1, 2, 2, 3, 3])
#添加元素
s.add(4)
print(s)
#删除元素
s.remove(4)
print(s)
#集合的交并运算
s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
print(s1 & s2)

关于不可变对象

a = 'abc'
a.replace('a', 'A')
print(a)
#等价代码
a = 'abc'
b = a.replace('a', 'A')
print(b)
print(a)

代码分析
replace()方法是创建了一个新的字符串,并且让被赋值的变量指向它
改变的是变量的指向

对于不可变对象:
调用对象自身的任意方法都不会改变对象自身的内容

你可能感兴趣的:(Python,python)