文章目录
p4
没有编译的过程
源码和输入得到输出
静态语言:编译型
脚本语言:解释型
p5
又叫做胶水语言
p7
p8
p10
p12
p13
python是动态语言
变量的类型可以改变
p14
整数类型是python中的不可变数据类型
p15
第二章
print函数
#print的完整格式为:print(value, ..., sep = '', end = '\n', file=None)
a=100
b=50
#直接输出变量
print(a)
print(b)
#输出字符串
print("aaaa")
#也可以是单引号,或者三个单引号或者三个双引号
print('aaaa')
print('''aaaa''')
print("""aaaa""")
#使用逗号实现同一行输入
print(a, b, "aaabbb")
#会发现a, b, 和字符串"aaabbb" 之间是以空格为间距的
#print的完整格式为:print(value, ..., sep = '', end = '\n', file=None)
#逗号之间的间隔符由sep指定,可以为空'',结束符由end指定,file指定要写入的文件
#linux下python文件无法包含中文解决方法:在代码开头加上 # -*- coding: utf-8 -*-
#使用ascii码输出字符,需要用到内置函数chr
print('b')
print(chr(98))
#chr()的逆函数ord()
print(ord('b'))
print(chr(ord('D')))
#chr()和ord()可以完成
#1、acsii字符和码的转换
#2、汉字unicode字符和码的转换
print(chr(ord('江')), chr(ord('苏')), sep = '=')
#将数据输出到文件当中
#借助open, print两个内置函数
fp = open('note.txt', 'w') #打开文件,w是写的意思
print('123456zz', file = fp)
fp.close() #关闭文件
#使用连接符 + 来连接两个字符串(字符串和数字不能连,只能连两个字符串)
print('abc' + '123')
input函数
'''
语法结构:
x = input('提示文字')
无论输入的数据是什么,input返回的数据类型都是字符串型
'''
name = input('请输入您的姓名:')
print('我叫' + name)
'''
如果想要接收整数类型,并把它保存到变量中,需要使用内置函数 int()
'''
num = input('输入数字:')
print('数字为:' + num)
print('数字为:' + int(num)) #此处会报错,因为+只能连接字符串,int(num)已经是整数了
注释
#单行注释
'''
多行注释1
多行注释2
'''
"""
多行注释1
多行注释2
"""
缩进
通过缩进来体现语句之间的逻辑关系
# 类的定义
class student:
pass
# 函数的定义
def fun():
pass
第三章 数据类型和运算符
保留字和标识符 p12
保留字
具有特殊意义的单词,
不可以做为变量、函数、类、模块或其他对象名来使用
使用keyword函数来查看保留字
import keyword
print(keyword.kwlist) # 获取保留字的列表
print(len(keyword.kwlist)) # 获取保留字的个数
保留字严格区分大小写
标识符
就是一个名字
主要给变量、函数、类、模块或其他对象名来使用
标识符不能使用保留字
由字符(英文、中文)、下划线、数字组成;
不能由数字开头
尽量不要使用下划线开头,一般是有特殊意义的才用
区分大小写
包名全小写,不要使用下划线
类名采用单词首字母大写形式(Pascal风格),如MyClass
模块内部的类采用下划线 + Pascal风格的类名组成,如 _InnerClass
常量命名全大写,可以下划线
下面三条先了解
使用单下划线开头的模块、变量、函数是受保护的,不能被import导入
使用双下划线开头的实例变量或方法是类私有的
使用双下划线开头和结尾是Python的专用标识,如__init__()表示初始化函数
变量和常量 p12
变量
变量的类型是可以变化:可以先赋值一个int型,后面也可以赋值一个字符串给它
因此python叫动态语言
a=100 # 创建一个整型变量a,并赋值为8
print(a)
a='123aaa'
print(a)
使用内置函数type()来确定变量的类型
a=100 # 创建一个整型变量a,并赋值为8
print(a)
b='123aaa' # 创建一个字符串变量b,并赋值为
print(b)
# 借助内置函数type() 来确定一个变量的类型
print('a的数据类型是',type(a), type(b))
print('a的数据类型是'+type(a)) # 此行会报错,可见type()返回不是字符串类型
python如何动态修改数据类型?
很简单。赋给同一个变量不同的值就可以
代码块见上两个
python中允许连等号
a=b=1024
通过内置函数id()查看变量的内存地址
a=b=1024
print('a:',id(a))
print('b:',id(b))
# 可以看到两个内存地址是一样的
a=666
print(b)
print(id(a),id(b)) # 此时b还是原值1024,并且a,b的内存地址不一样了
变量是标识符的一种,
因此命名首先要遵循标识符的规范
不能使用保留字
尽量别用大写字母I和字母o
选择有意义的单词做为变量名
常量
python中,没有专门定义常量的关键字
只要在变量命名时,所有字母都是大写(可以有下划线),就认为它是常量
常量约定定义完了就不要去改它的值,硬要改也可以
数值类型 p13
整数类型,浮点数类型,复数类型
整数类型
没有小数部分的数
包含:正整数,负整数和0
进制种类 | 引导符号 | 描述 |
---|---|---|
十进制 | 无 | 123,1024 |
二进制 | 0b或者0B | 由字符0和1组成,0b101 |
八进制 | 0o或者0O | 由字符0到7组成,如0o127456 |
十六进制 | 0x或0X | 由字符0-9, a-f, A-F组成,0x10f |
数值型、整数类型时不可变数据类型(详见后面)
代码示例
num=987 # 十进制
num2=0b10101101
num3=0o765
num4=0xabf
print(num)
print(num2)
print(num3)
print(num4)
# 可以看到默认是以十进制输出的
浮点数类型
表示有小数点的数值,由整数部分和小数部分组成
10是整数类型,10.0是浮点数类型
代码示例:
# 使用type内置函数来查看变量的数据类型
height=187.6
print(height, type(height))
x=1
y=1.0
print('x的数据类型:',type(x))
print('y的数据类型:',type(y))
两个浮点数类型的数在进行运算时,有一定的概率运算结果后增加一些不确定的尾数
print(0.1+0.2)
print(round(0.1+0.2, 1))
round()是python自带的一个函数,用于数字的四舍五入。
使用方法:round(number,digits)
digits>0,四舍五入到指定的小数位
digits=0, 四舍五入到最接近的整数
digits<0 ,在小数点左侧进行四舍五入
如果round()函数只有number这个参数,等同于digits=0
科学计数法
x=1.99E141
print('科学计数法:',x,' x的数据类型:',type(x))
# 依然是浮点数类型
复数
由实部和虚部组成
x=123+456j
print('实数部分:',x.real,type(x.real))
print('虚数部分:',x.imag,type(x.imag))
# 实数和虚数部分默认都是float类型
常用的数值类型转换函数
int() :把浮点数、字符串(串内并须是整数的字符表示,否则int会报错)转成整型
float():链接
str():str( )函数能将int类型、float类型的数据转换成字符串类型。 str(100) 、str(100.0)
字符串类型 p15
连续的字符序列
包括计算机所能识别的一切字符
字符串的界定符:单引号、双引号、三引号
# 单引号、双引号、三三引号、三双引号
city='天津'
addr="大街3号"
num='''200a'''
age="""18"""
print(city)
print(addr)
print(num)
print(age)
字符串类型也是不可变数据类型
多行字符串使用三个单引号或者三个双引号表示
info='''aaa
bbb
ccc
'''
info2="""aaa
bbb
ccc
"""
转义字符
转义字符 | 描述说明 |
---|---|
\n | 换行符 |
\t | tab键相当于是 |
\" | 双引号 |
\’ | 单引号 |
\\ | 一个反斜杠 |
print('北京')
print('欢迎您')
print('北京\n欢迎您')
输出单引号、双引号、斜杠
print('\'') # 输出单引号
print('\"') # 输出双引号
print('\\') # 输出斜杠
使转义字符失效的字符:r或者R
print(r'北\n京\n欢\n迎\n你')
print(R'北\n京\n欢\n迎\n你')
索引
对字符串中某个字符的检索称为索引
两种下标记法:
1、从最左边开始:0,1,2,3,…
2、从最右边开始:…,-4,-3,-2,-1
s='HELLOWORLD'
print(s[0],s[-10]) # 都表示字符H
print('北京欢迎你'[4]) # 直接把上面的s替换成字符串
print('北京欢迎你'[-1]) # 下标为负数,从最左边开始检索,为你
切片
对字符串中某个子串或区间的检索
s='HELLOWORLD'
# 注意,包含2,不包含7
print(s[2:7]) # 从2开始到7结束 LLOWO
print(s[-8:-3]) # 从右向左切片,注意还是不包含右边的,从-4开始,还是LLOWO
print(s[:5]) # 不加开始,默认从0开始
print(s[1:]) # 不加末尾,默认到最后结束
常用的字符串操作
操作符 | 描述说明 |
---|---|
x+y | 将字符串x和y连接起来 |
xn 或 nx | 赋值n次字符串x |
x in s | 若x是s的子串,返回True,否则返回False |
x='2022年'
y='北京冬奥会'
print(x+y)
print('北京' in y)
print('上海' in y)
print(x*10)
布尔类型 p16
使用保留字True和False来表示真和假
x='2022年'
y='北京冬奥会'
print(x+y)
print('北京' in y)
print('上海' in y)
print(x*10)
使用内置函数bool()去测试一个对象的布尔值
#非0的数值都是True
print(bool(18))
print(bool(-1))
print(bool(0))
print(bool(0.1))
#非空字符串的布尔值是True
print(bool('北京欢迎你'))
print(bool(''))
#False和None的布尔值是Flase
print(bool(False))
print(bool(None))
布尔值为False的情况如下:
1、Flase 或者 None
2、数值中的0,0.0,虚数0
3、空序列,包含字符串、空元素、空列表、空集合
4、自定义对象的实例 bool()返回Flase,或者 len()返回0的
eval函数 p18
内置函数(不需要使用任何前缀,直接使用)
用于去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符串
一般和input函数一起使用
s='3.14+3'
print(type(s))
x=eval(s) # 此时,变量x就表示 3.14+3
print(x,type(x))
# eval()函数一般与input()一起使用,用来获取用户输入的数值型
age=eval(input('请输入您的年龄:'))
print(age,type(age))
hello='北京欢迎你'
print(hello)
print(eval('hello'))
print(eval('北京欢迎你')) # 此处会报错,因为去掉引号后,变成 打印 北京欢迎你,系统将其视为变量,但此变量未背定义
算术运算符 p19
用于处理四则运算的符号
运算符 | 描述说明 | 示例 | 结果 |
---|---|---|---|
+ | 加法 | 1+1 | 2 |
- | 减法 | 1-1 | 0 |
* | 乘法 | 2*3 | 6 |
/ | 除法(结果是浮点型) | 10/2 | 5.0 |
// | 整除(结果是整型) | 10//3 | 3 |
% | 取余 | 10%3 | 1 |
** | 幂运算 | 2**4 | 16 |
运算优先级由高到低:
第一级:**
第二级:*、/、%、//
第三级:+、-
赋值运算符 p20
为变量进行赋值操作
=
延申:+=、-=、*=、/=、//=、…
x=20 # 直接赋值
y=10
x=x+y # 等效于 x+=y
print(x)
x+=y # 40
print(x) # x变为40
x-=y # 30
X*=y # 300
x/=y #注意此时x变为30.0,发生了类型转换,变为float类型
x%=2 # 0.0 30.0和2取余,是0.0
Python支持链式赋值
a=b=c=100
字符串分解赋值 p26
a,b,c,d='room' # 字符串分解赋值
# 等效于下面
a='r'
b='o'
c='o'
d='m'
Python支持系列解包赋值
a,b=10,20 # 相当于执行了a=10, b=20
利用系列解包赋值 交换两个变量的值
a,b=b,a
a,b,c=b,c,a # 也是可以的
比较运算符 p21
又叫关系运算符
比较的结果是True或False
==
!=
>
<
>=
<=
(上面这几个用法和c差不多)
逻辑运算符 p22
对真和假两种布尔值再进行运算,结果依然是一个布尔值
运算符 | 描述说明 | 用法 | 结合方向 |
---|---|---|---|
and | 逻辑与 | 表达式1 and 表达式2 | 从左到右 |
or | 逻辑或 | 表达式1 or 表达式2 | 从左到右 |
not | 逻辑非 | not 表达式 | 从右到左 |
print(True and True)
print(True and False)
print(not False)
print('-'*40)
print(8>7 and 7>6)
print(8<7 and 10/0) # 当第一个表达式报错时,and的第二个表达式就没必要计算了
位运算和运算符的优先级 p23
位运算
位运算符把数字看作二进制数来计算
进行位运算时需要先把两个数转换成2进制
按位与计算 (&)
0000 0000 0000 1100
& 0000 0000 0000 1000
------------------------
0000 0000 0000 1000
按位或运算 (|)
0000 0000 0000 0100
| 0000 0000 0000 1000
-------------------------
0000 0000 0000 1100
按 位异或 运算 (^) 对应位置上的数,相同为0,相异为1
0000 0000 0001 1111
^ 0000 0000 0001 0110
------------------------
0000 0000 0000 1001
按 位取反 运算 (~)
~ 0000 0000 0111 1011
----------------------
1111 1111 1000 0100
左移位运算 (<<)
将一个二进制数向左移动指定的位数,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充
右移位运算 (>>)
将一个二进制数向右移动指定的位数,右边(低位端)溢出的位被丢弃;左边(高位端)的空位端,若最高位是0(正数)左侧空位填0,若最高位是1(负数),左侧空位填1
print('按位与运算:',12&8)
print('按位或运算:',4|8)
print('按位异或运算:',31^32)
print('按位取反运算:',~123)
print('左移位运算',2<<3) # 表示2向左移动3位
print('右移位运算',8>>2)
print('右移位运算', -8》》2) # -2
补码相关运算:
负数的反码=其自身的原码除符号位以外取反
负数的补码=其自身的反码+1
一个数的补码的补码还是自己
运算符的优先级
运算符 | 描述说明 |
---|---|
** | 幂运算 |
~、+、- | 取反、正号、负号 |
*、/、//、% | 算术运算符 |
+、- | 算术运算符 |
<<、>> | 移位运算符 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
<、<=、>、>=、!=、== | 比较运算符 |
= | 赋值运算符 |
第4章 程序的流程控制 p25
程序的描述方式 p25
程序有三种描述方式:
1、自然语言:
使用人类语言,直接描述程序
2、流程图
图形体现:流程
3、伪代码
介于自然语言和编程语言之间的一种算法描述语言
程序的组织结构:
1、顺序结构
截图待补充
2、选择/分支结构
截图待补充
3、循环结构
截图待补充
顺序结构 p26
从上到下,依次执行
# 赋值运算符的顺序 从右到左
name='张三'
age=20
a=b=c=d=100 # 链式赋值
a,b,c,d='room' #字符串分解赋值
print(a)
print(b)
print(c)
print(d)
选择结构 p27
又叫做分支结构
按照条件选择执行不同的代码段
单分支结构
格式
# 冒号和缩进至关重要
if 表达式:
语句块
代码实例:
number=eval(input('请输入您的六位中奖号码:'))
if number==987654:
print('中奖了')
if number!=987654:
print('没中奖')
if 后面可以是布尔型,也可是其他值
if a%2:
print
注意 if not 表达式:
用法
n=98
if n%2:
print(n,'为奇数')
if not n%2:
print(n,'为偶数')
判断是否是空字符串:
x=input('请输入一个字符串:')
if x: # 在Python中一切皆对象,每个对象都有一个布尔值。非空字符串的布尔值是True,空字符串的布尔值是False
print(x,'为非空字符串')
在使用if语句时,若语句块中只有一句代码,可以将语句块直接写在冒号后面:
n=98
if n%2:print(n,'为奇数')