python学习目录:python学什么?python基础

Day02 - 语言元素

程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制
变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换
数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码
运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级
应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年


一、程序和进制

指令和程序有何区别?简介指令的执行过程?

指令:指令是指计算机执行某种操作的命令,它由一串二进制数码组成。计算机执行了一指令序列,便可完成预定的任务,这一指令序列就称为程序;
程序:程序是计算机所以指令的集合,称为该计算机的指令系统; 指令的执行过程分为四步:1.取指令;2.分析指令;3.执行指令;4.完成上述操作后,指令计数器加1,为执行下一条指令做准备。

冯·诺依曼体系结构
美籍匈牙利数学家冯·诺伊曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺伊曼理论的要点是:计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯·诺伊曼的这个理论称为冯·诺伊曼体系结构。

【python语言基础】Day02-python语言元素


二、系列数据类型

一、Python系列数据概述
1、数组

  • 一种数据结构,用于储存和处理大量数据。
    2、系列数据类型
  • 一组有序列的元素的组合。
  • 包括:元组、列表、字符串和字节数据。

二、系列数据的基本操作
1、系列的长度、最大值、最小值、求和

  • len()、max()、min()、sum()

2、系列的索引访问操作

  • 通过索引下标访问的可迭代对象。
    3、系列切片操作
  • 截取系列s的一部分。
    4、系列连接和重复操作
  • 通过连接符+,可以连接两个系列,形成新的系列对象。
  • 通过连接符*,可以重复系列n次。
    5、系列的成员关系操作
  • 判断一个元素x是否存在于系列s中。
    6、系列的比较运算操作
  • 两个系列支持比较运算符(<、<=、==、!=、>、>=),字符串比较运算按顺序逐个元素进行比较。
    7、系列的排序操作
  • 通过内置函数sorted(),可以返回系列的排序表格。
  • 通过类reversed构造函数,可以返回系列的反序的迭代器。
    8、内置函数all()和any()
  • 通过内置函数all()和any(),可以判断系列的元素是否全部和部分为true。
    9、系列拆封
  • 1、变量个数和系列长度相等:使用赋值语句,可将系列值拆封,然后赋值给多个变量。
  • 2、变量个数和系列长度不等:系列长度未知,可使用 * 元组变量,将多个值作为元组赋值给元组变量。
  • 一个赋值语句中,* 变量只允许出现一次,否则导致错误。
  • 3、使用临时变量_ :只需要部分数据,系列其他位置可以使用临时变量"_"。

三、元组
1、使用元组字面创建元组实例对象

  • 元组字面量采用圆括号中用逗号分隔的项目定义。圆括号可以省略。
    2、使用tuple对象创建实例对象
    3、元组的系列操作
  • 元组支持系列的基本操作,包括索引访问、切片操作、连接操作、重复操作、成员关系操作、比较运算操作、以及求元组长度、最大值、最小值等。

四、列表
1、使用列表字面创建元组实例对象

  • 列表字面量采用方括号中用逗号分隔的项目定义。
    2、使用list对象创建元组实例对象
    3、列表的系列操作
  • 列表支持系列的基本操作,包括索引访问、切片操作、连接操作、重复操作、成员关系操作、比较运算操作、以及求元组长度、最大值、最小值等。
    4、list对象的方法
  • s.append(x)把对象x追加到列表s尾部。
  • s.clear()删除所有元素。相当于del s[:]
  • s.copy()复制列表。
  • s.extend(t)把系列t附加到s尾部。
  • s.insert(i, x)在下标i位置插入对象x。
  • s.pop([i])返回并移除下标i的位置对象,省略i时为最后对象。若超出下标,将导致错误。
  • s.remove(x)移除列表中第一个出现的x。若对象不存在,将导致错误。
  • s.reverse()列表反转。
  • s.sort()列表排序。
    5、列表解析表达式
  • 可处理迭代对象,并生成结果列表。

五、字符串
1、字符串的系列操作

  • 字符串支持系列的基本操作,包括索引访问、切片操作、连接操作、重复操作、成员关系操作、比较运算操作、以及求元组长度、最大值、最小值等。
    2、字符串编码
    3、字符串格式化

[1].%元算符形式

  • 格式字符串的标志符:
  • (1)‘0’:数值类型格式化结果左边用零填充。
  • (2) ‘_’:结果左对齐。
  • (3)’ ':对于正值,结果中将包括一个前导空格。
  • (4)’+’:数值结果总是包括一个符号(+或-)。(5) ‘#’:使用另一种转换方式。
  • 格式化类型字符:
  • (1) %d或%i:有符号整数(十进制)。
  • (2) %o:有符号整数(八进制)。
  • (3) %u:同%d,已过时。
  • (4) %x:有符号整数(十六进制,小写字符),标志符为#时,输出前缀’0x’。
  • (5) %X:有符号整数(十六进制,大写字符),标志符为’#‘时,输出前缀’0X’。
  • (6) %e:浮点数字(科学记数法,小写e),标志符为’#'时,总是带小数点。
  • (7) %E:浮点数字(科学记数法,大写E),标志符为’#'时,总是带小数点。
  • (8) %f或%F:浮点数字(用小数点符号),标志符为’#'时,总是带小数点。
  • (9) %g:浮点数字(根据值的大小采用%e或%f),标志符为’#'时,总是带小数点,保留后面0。
  • (10)%G:浮点数字(根据值的大小采用%E或%F),标志符为’#'时,总是带小数点,保留后面0。
  • (11)%c:字符及其ASCII码。
  • (12)%r:字符串,使用转换函数repr(), 标志符为#且指定precision 时, 截取precision个字符。
  • (13)%s;:字符串,使用转换函数str0,标志符为"且指定pecision时,截取precision个字符。
  • (14)%a: 字符串,使用转换函数ascio,标志符为#且指定pecision时,截取precision个字符。
  • (15) %:百分号标记。

[2].format内置函数

  • 格式化类型字符:
  • (1) b:二进制数。
  • (2) c: 字符,整数转换为对应的Unicode。(3) d:十进制数。
  • (4) 0:八进制数。
  • (5) x:十六进制数,小写字符,标志符为#时,输出前缀’0x’。
  • (6) X:十六进制数,大写字符,标志符为#时,输出前缀0X。
  • (7) e:浮点数字(科学记数法,小写e),标志符为"并时,总是带小数点。
  • (8) E:浮点数字(科学记数法,大写E),标志符为并时,总是带小数点。
  • (9) f或F;浮点数字(用小数点符号),标志符为#时,总是带小数点。
  • (10)g:浮点数字(根据值的大小采用e或f),标志符为半时,总是带小数点,保留后面0。
  • (11) G:浮点数字(根据值的大小采用E或F),标志符为发时,总是带小数点,保留后面0。
  • (12) n:数值,使用本地千位分隔符。
  • (13) s: 字符串,使用转换函数str(), 标志符为’#'且指定precision时,截取precision个字符。
  • (14) %:百分比。

[3].字符串的format方法

六、字节系列
1、bytes常量

  • 使用字母 b加单引号或双引号括起来的内容,是byes常量。bytes 常量与字符串定义方式类似,
  • (1)单引号(b’ )。包含在单引号中的字符串,其中可以包含双引号。
  • (2)双引号(b" ")。 包含在双引号中的字符串,其中可以包含单引号。
  • (3)三单引号(b" ")。包含在三单引号中的字符串,可以跨行。
  • (4)三双引号(b*"" "*)。 包含在三双引号中的字符串,可以跨行。
    2、创建bytes对象
  • (1)bytes() # 创建空pytes对象
  • (2)bytes(n) # 创建长度为n(整数)的bytes对象,各字节为0
  • (3)bytes(iterable) # 创建bytes对象,使用iterable中的字节整数
  • (4)bytes(object) # 创建bytes对象,复制object字节数据
  • (5)bytes([source[, encoding[, errors]]]) # 创建bytes对象
    3、创建bytearray对象
  • (1bytearray() # 创建空bytearray对象
  • (2)bytearray(n) # 创建长度为n(整数)的bytearray对象,各字节为0
  • (3)bytearray(iterable) # 创建bytearray对象,使用iterable中的字节整数
  • (4))bytearray(object) # 创建bytearray对象,复制object字节数据
  • (5))bytearray([source[, encoding[, errors]]]) # 创建bytearray对象

4、bytes和bytearray的系列操作

  • 注意:bytes和bytearray的方法不接受字符串参数,只接受bytes和bytearray的参数,否则导致错误。

5、字节编码和解码

  • 通过str.encode()方法编码为字节码:通过bytes和bytearray的decode()方法解法码为字符串。

存在的问题即思考:

  • s[i]访问系列s在索引i处的元素,得到结果为英文字母,索引下标不是整数则出错。
  • bytes((123, 456))# bytearray((123, 456)) 如果iterable中包含0<=x<256的整数,则导致错误
  • bytes和bytearray的方法不接受字符串参数,只接受bytes和bytearray的参数,否则导致错误。


三、Python 基本数据类型 (变量、数字、字符串、列表、元组、集合、字典)

1、变量(Ariable)

  • 等号(=)用来给变量赋值。
  • 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值
  • 赋值之后才能使用,否则会报错,当赋予了一次值后,在赋予一次别的值,值就会改变
  • 命名规则:
    • 只能包含字母、数字、下划线,可以用中文(但是尽量别用可能会出错)
    • 不能以数字开头
    • 不能适用Python的关键字,比如print、true等
关键字 解释
False 布尔类型的值,表示假,与 True 相反
None None 比较特殊,表示什么也没有,它有自己的数据类型 - NoneType。
True 布尔类型的值,表示真,与 False 相反
and 用于表达式运算,逻辑与操作
as 用于类型转换
assert 断言,用于判断变量或者条件表达式的值是否为真
break 中断循环语句的执行
class 用于定义类
continue 跳出本次循环,继续执行下一次循环
def 用于定义函数或方法
del 删除变量或序列的值
elif 条件语句,与 if、else 结合使用
else 条件语句,与 if、elif 结合使用。也可用于异常和循环语句
except except 包含捕获异常后的操作代码块,与 try、finally 结合使用
finally 用于异常语句,出现异常后,始终要执行 finally 包含的代码块。与 try、except 结合使用
for for 循环语句
from 用于导入模块,与 import 结合使用
global 定义全局变量
if 条件语句,与 else、elif 结合使用
import 用于导入模块,与 from 结合使用
in 判断变量是否在序列中
is 判断变量是否为某个类的实例
lambda 定义匿名函数
nonlocal 用于标识外部作用域的变量
not 用于表达式运算,逻辑非操作
or 用于表达式运算,逻辑或操作
pass 空的类、方法或函数的占位符
raise 异常抛出操作
return 用于从函数返回计算结果
try try 包含可能会出现异常的语句,与 except、finally 结合使用
while while 循环语句
with 简化 Python 的语句
yield 用于从函数依次返回值

2、数字(Number)

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型
  • 加减乘除:用小数点进行计算的时候有的时候不一定全部都正确,因为是电脑主机的原因
    • 在使用除法时用(/)结果是有小数点,所以这时候要采用(//)双斜杠,就没有小数点;
  • 平方:
    • 2的平方:2**2》4
    • 2的三次方:2**3》8
    • 2的四次方:2**4》16
  • 求余:用符号%
    • 7%5》2
    • 4%3》1

3、字符串(Characte String)

  • 要用引号包裹,引号不会显示,单双引号都行,前后一致
  • “ I’m the winer! ”再用英文时,单双引号不要弄混,只用双引号包裹最好
  • 当需要在字符中使用特殊字符时,Python用反斜杠\转义字符、print()转义字符
    • print(‘hello’)》》hello》去掉引号
    • ‘I’m liushishi’》》“I’m liushishi”》让字母中的引号只是普通的英文字符

链接字符:使用加号(+),但是占更多内存,影响速度

  • a = ‘hello’

  • b = ‘world’

  • a + b

    • ‘helloworld’
  • a = 'hello ’

  • b = ‘world’

  • a + b

    • ‘hello world’(在hello的后面加一个空格,单词就会隔开)

格式化字符串:f-string

  • name = ‘xiaohong’

  • age = 18

  • f’ xiaohong {age} ’

    • ’ xiaohong 18 '(用双引号一样)
  • print(f’ xiaohong {age} ')

    • xiaohong 18

字符串方法(method),如:upper

  • ‘xiaohong’.upper()

    • ‘XIAOHONG’(全部变为大写)

索引(index),要用[]方括号

  • a = ‘hello’

  • a[1]

    • ‘e’
  • a[-1]

    • ‘o’
  • a[-2]

    • ‘l’
  • a[-3]

    • ‘l’
  • a[-4]

    • ‘e’(用负数就是倒过来开始)
  • a[1:3]

    • ‘el’
  • a[0:5]

    • ‘hello’
  • a[0:4]

    • ‘hell’(从第h开始的4个字母,这里的0就相当于第一个字母)

4、列表(List)

  • 由特定的的元素组成,方括号包裹,逗号分隔,可以装多种元素
  • [:n]从开头开始到第n-1个元素,[n:]从第n个元素开始到最后
  • a = [1,2,3,4,5]

  • a[:3]

    • [1,2,3]
  • a[2:]

    • [3,4,5]
  • 修改元素
  • a = [1,2,3,4,5]

  • a[0] = 300

  • a

    • [300, 2, 3, 4, 5]
  • 添加元素(append方法)直接添加到最后,添加文字时,要添加单引号或者双引号,数字除外
  • 添加元素(insert方法)插入添加插入数字,插入到所选的前面,a.insert(n,m),结果在n的前面
  • 删除元素(pop方法)
  • 查数段len(),查里面总共有多少数字

5、元组(Tuple)

  • 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
  • 元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取
  • 与字符串一样,元组的元素不能修改。
  • 元组也可以被索引和切片,方法一样。
  • 注意构造包含0或1个元素的元组的特殊语法规则。
  • 元组也可以使用+操作符进行拼接。

6、集合(Set)

  • 集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
  • 基本功能是进行成员关系测试和删除重复元素。
  • 可以使用大括号 { } 或者 set() 函数创建集合。
  • 创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

7、字典(Dictionary)

  • 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
  • 运用赋值时用“[]”
  • 构造函数 dict() :要“dict([])”
  • 字典是一种映射类型,它的元素是键值对。
  • 字典的关键字必须为不可变类型,且不能重复。
  • 创建空字典使用 { }。

四、运算符

1、[算术运算符]

  • % :取模 - 返回除法的余数

2、[比较运算符]

  • 运用“if函数”
    • == 等于 - 比较对象是否相等
    • != 不等于 - 比较两个对象是否不相等
    • “ >” 大于 - 返回x是否大于y
    • ”<“ 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
    • “>=” 大于等于 - 返回x是否大于等于y。
    • “<=” 小于等于 - 返回x是否小于等于y。

3、[赋值运算符]

  • 运用“if函数”

    • = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
    • += 加法赋值运算符 c += a 等效于 c = c + a
    • -= 减法赋值运算符 c -= a 等效于 c = c - a
    • *= 乘法赋值运算符 c *= a 等效于 c = c * a
    • /= 除法赋值运算符 c /= a 等效于 c = c / a
    • %= 取模赋值运算符 c %= a 等效于 c = c % a
    • “**=” 幂赋值运算符 c **= a 等效于 c = c ** a
    • //= 取整除赋值运算符
  • 这个运算过程不能放在print()里面,运算最好print()里面有不同的文字,这样好区分,也可以让运算结果更准确,要不然就每个分开输入

4、[位运算符]

  • 运用“if函数”
    • & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100
    • | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101
    • ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    • ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。
    • “<<” 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000
    • ”>>“ 右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111

5、[逻辑运算符]

  • 运用“if函数”
    • and 。。。。x and y “与” - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
    • or 。。。。x or y “或” - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10。
    • not 。。。。not x “非” - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

6、[成员运算符]

  • 运用“if函数”
    • in 如果在指定的序列中找到值返回 True,否则返回 False。
    • not in 如果在指定的序列中没有找到值返回 True,否则返回 False。

7、[身份运算符和运算符优先级]

  • 运用“if函数”
  • 运算符优先级 print()要定格

相关文章: