python 学习(一)基础知识

数据类型和变量

数据类型

整数

  • 十六进制用0x前缀和0-9,a-f表示。
  • 允许在数字中间以_分隔,如10_000_000_000、0xa1b2_c3d4。
  • 整数运算永远是精确。
  • //地板除,只取结果的整数部分,两个整数的除法仍然是整数。
  • %余数运算,可以得到两个整数相除的余数。

浮点数

  • 因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。
  • 浮点数运算则可能会有四舍五入的误差。
  • /除法计算结果是浮点数,两个整数恰好整除,也是浮点数。

字符串

  • 以单引号'或双引号"括起来的任意文本,如'abc'"xyz"
  • 如果'本身也是一个字符,那就可以用""括起来,如"I'm OK"
  • 字符串内部既包含'又包含"可以用转义字符\来标识。
  • 转义字符\可以转义很多字符,如\n:换行,\t:制表符,\\\本身。
  • r''表示''内部的字符串默认不转义。
  • 内部有很多换行,用\n写在一行或'''...'''的格式表示多行内容。

布尔值

  • andornot运算。

空值

  • None表示,不能理解为00有意义,而None是一个特殊的空值。

列表list

  • 有序的集合,可以随时添加和删除其中的元素。
  • len()可获得list元素的个数。
  • 索引来访问list每一个位置元素,从0开始;-1直接获取最后一个元素。
  • 索引超出范围,报IndexError错误
# list 可变有序表
classmates = ['Michael', 'Bob', 'Tracy']
# 索引从0开始;-1直接获取最后的元素
classmates[0]
classmates[-1]
# 追加元素到末尾
classmates.append('Adam')
# 指定位置插入元素
classmates.insert(1, 'Jack')
# 删除末尾元素
classmates.pop()
# 删除指定位置元素
classmates.pop(1)
# 某元素替换成别的元素,赋值对应索引位置
classmates[1] = 'Sarah'
  • 元素数据类型不限,可以是list
  • listL=[]

tuple

  • 不可变有序表。
  • tuple只有1个元素,定义时必加一个逗号,消除歧义。
  • tuple中可放listlist的内容可变。

字典dict

  • 键-值(key-value)存储,具有极快的查找速度。
  • key不存在,dict报错。
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
# 通过in判断key是否存在
'Thomas' in d
# 通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value
d.get('Thomas')
d.get('Thomas', -1)
  • 删除一个key,用pop(key)方法。
  • dict内部存放顺序和key放入顺序是无关。
  • 与list比:查找和插入的速度极快,不会随着key的增加而变慢;占用大量的内存,内存浪费多。
  • 通过key计算位置的算法称为哈希算法(Hash)。key必须是不可变对象

set

  • 一组key的集合,但不存储value。无序无重复元素集合。key必须是不可变对象
  • 创建一个set,需要提供一个list作为输入集合。
  • add(key)方法可以添加元素到set
  • remove(key)方法可以删除元素。
  • & 交集,并集
  • 不变对象调用对象自身的任意方法不会改变该对象自身内容,会创建新的对象并返回保证不可变对象不可变。

变量

  • 变量名必须是大小写英文数字_的组合,且不能用数字开头。
  • 等号=是赋值语句,可把任意数据类型赋值给变量,同一变量可反复赋值不同类型的数据。
  • 变量本身类型不固定的语言——动态语言;定义变量时必须指定变量类型——静态语言
a = 'ABC'
#Python解释器干了两件事情:
#在内存中创建了一个'ABC'的字符串;
#在内存中创建了一个名为a的变量,并把它指向'ABC'。

常量

  • 用全部大写的变量名表示常量。

小结

  • 任何数据都看成一个“对象”,变量指向数据对象的,赋值是把数据和变量关联。
  • x = y是把变量x指向是变量y指向的对象。随后对y的赋值不影响变量x的指向。
  • Python整数没有大小限制。
  • Python浮点数没有大小限制,超出一定范围直接表示为inf(无限大)。

字符串和编码

  • 8个比特(bit)=一个字节(byte),一个字节能表示的最大整数255(二进制11111111)
  • ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122
  • Unicode把所有语言都统一到一套编码,UCS-16编码,用两个字节表示一个字符。
  • “可变长编码”的UTF-8编码,节省空间,支持ASCII编码。

 Python的字符串

  • ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
  • 知道字符的整数编码,可用十六进制写str
  • 在网络上传输或保存到磁盘上,要把str变为以字节为单位的bytes
  • bytes类型的数据用带b前缀的单引号或双引号表示,每个字符都只占用一个字节。
  • str通过encode()方法可以编码为指定的bytes
  • strASCII编码为bytes,内容一样;中文的str可以用UTF-8编码为bytes
  • bytes中,无法显示为ASCII字符的字节,用\x##显示。
  • 从网络或磁盘上读取了字节流,数据bytes。把bytesstr,用decode()方法。
  • bytes包含无法解码的字节,decode()方法报错;传入errors='ignore'忽略错误的字节。
'ABC'.encode('ascii')
'中文'.encode('utf-8')
b'ABC'.decode('ascii')
b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
  • len()可用于计算str包含字符数,bytes包含字节数。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# 第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
# 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则源代码中写的中文输出可能会有乱码。

格式化

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数

  • %s永远起作用,它会把任何数据类型转换为字符串。
  • %%%本身
  • 字符串format()方法,它会用传入的参数依次替换字符串内的占位符{0}{1}……
  • 用以f开头的字符串:f-string字符串包含{xxx},就会以对应的变量替换。
# 格式化
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
# 字符串格式化形式
'Age: %s. Gender: %s' % (25, True)
# format方法
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
# f-string
r = 2.5
s = 3.14 * r ** 2
print(f'The area of a circle with radius {r} is {s:.2f}')

条件判断

# 注意冒号
# 从上往下判断,对应的语句执行后,忽略剩下的elif和else
if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>
  • input()读取用户的输入,返回的数据类型是str
  • int()str转换成整数。

循环

  • for x in ...循环:依次把list或tuple中的每个元素代入变量x,然后执行缩进块的语句。
  • range()可生成一个整数序列,list()可将其转换为list
  • while循环,条件满足,不断循环。
  • break:提前结束循环,必须配合if语句。
  • continue:提前结束本轮循环,并直接开始下一轮循环,必须配合if语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值