文章目录
- 第一章
- 输入输出print
- 转义字符
- 字符编码
- 标识符和保留字
- 变量
- 数据类型
- 整形
- 浮点型
- 布尔类型
- 字符串类型
- 数据类型转换
- 注释
- 第二章
- input()函数
- 运算符
- 算术运算符
- 赋值运算符
- 比较运算符
- 布尔运算符(逻辑运算符)
- 位运算符
- 运算符的优先级
- 第三章
- 顺序结构
- 对象的布尔值
- 单分支结构
- 双分支结构
- 多分支结构
- 嵌套分支
- 三元表达式
- pass语句
- 内置函数range()
- 循环
- while循环
- for-in循环
- break
- continue
- 和循环搭配之用的else
- 嵌套循环中的break和continue
第一章
输入输出print
print函数的作用是向目的地输出内容
内容可以是: 字符串,数字,表达式
目的地可以是:控制台,文件
print可以在控制台输出字符串
print("Hello World!")
输出数字
print(114514)
输出含有运算符的表达式
print(114000 + 514)
向文件输出,就是编写文件内容
fp = open("D:/Project/Python/study/day01/text.txt", "a+")# 第一个变量是文件路径,第二个变量表示续写文件
print("hello world", file = fp)
fp.close() #关闭文件
不换行输出
print("114","514")
print(114,"514")
print(114,514)
print("114514", end="") # 这种才是真正的不换行输出
转义字符
大多数编程语言会有一些特殊字符:回车,换行,制表符…,这些字符可以通过转义字符反斜杠在字符串中表示出来:\
换行符,可以让字符串多行输出
print("第一行\n第二行")
回车,回车和换行符不一样会,回车会让回车符之前的字符串不输出
print("hello\rworld")
制表符
print("hello\tworld")
print("helloooo\tworld")
一个制表符代表四个空格,但是制表符前面的字符数不是4的整数倍,制表符会补全空格,使字符总数变成4的整数倍
退格,退格会把退格字符前一个字符去掉
print("hello\bworld")
双引号、单引号、反斜杠
print("这是一个单引号\'")
print("这是一个双引号\"")
print("这是一个反斜杠\\")
在字符串之前写一个r可以让程序忽视转义字符,但是字符串最后的字符不能是单数个反斜杠
print(r"这是两个反斜杠\\") # 这是两个反斜杠\\
print(r"a\"a") # a\"a
print(r""") # 这个会报错
字符编码
chr()函数是Python中的一个内置函数,它接受一个整数参数,并返回对应的Unicode字符。
ord()函数是另一个Python中的内置函数,它接受一个Unicode字符作为参数,并返回对应的整数值。
chr()函数和ord()函数是互逆的,即ord(chr(x)) == x和chr(ord©) == c。它们可以在需要将整数和字符之间进行转换的情况下使用。请注意,chr()函数和ord()函数只适用于Unicode字符,而不适用于ASCII字符或其他字符集。
print(chr(23002)) # 姚
print(ord("姚")) #23002
标识符和保留字
我们给变量、函数、类、模块和其它对象起名名字叫标识符
在python中一些单词本赋予了特殊的含义,标识符不能使用这些特殊单词,这些单词就叫做保留字(关键字)
定义标识符的规则:
可以使用字母(大小写)、数字、下划线
不能以数字开头
不能是保留字
严格区分大小写
使用keyword库中的keyword变量即可查看有哪些保留字
import keyword
print(keyword.kwlist)
变量
变量由三部分组成,id,类型,值。id是该变量在内存中的唯一地址
定义变量: 变量名 = 值,python中定义变量不需要写变量的类型
name = "张三"
可以通过函数来获取变量的id和类型
print(id(name)) # 2644770188400
print(type(name)) # <class 'str'>
变量可以多次赋值
name = '张三'
print(name) # 张三
name = '李四'
print(name) # 李四
数据类型
整型 int 114514
浮点型 float 114.514
布尔型 bool True(代表真) ,False(代表假)
字符串类型 str “张三” ‘张三’
整形
整形 integer 简写为int 可以表示正整数、负整数和零
整数有不同的表达方式:
十进制->默认的进制
二进制->以0b开头
八进制->以0o开头
十六进制->以0x开头
a = 123 #123
b = 0b101010 #42
c = 0o177 #127
d = 0x1ae #430
print(a,b,c,d)
浮点型
浮点数由整数部分和小数部分组成
但浮点数存在不精确性
a = 1.1
b = 2.2
print(a + b) #3.3000000000000003
解决不精确的方法:导入decimal模块
from decimal import Decimal
print(Decimal('1.1') + Decimal('2.2')) # 3.3
# 主要这里的1.1和2.2是字符串类型
布尔类型
布尔类型只有两个值,一个是真:True,一个是假:False,可以在判断语句中使用
布尔类型数据可以转换成数字,Ture可转换为1,False可转换成0
bool1 = True;
bool2 = False;
print(bool1,type(bool1)) #True <class 'bool'>
print(bool2,type(bool2)) #False <class 'bool'>
字符串类型
字符串类型是非常常见的数据类型,它可以用单引号,双引号,三引号来表示
三引号就是三个单引号或者三个双引号,用三引号可表示多行字符串
str1 = '张三' # 单引号
str2 = "李四" # 双引号
str3 = r'''王五
赵六''' # 三个单引号的三引号
str4 = """王五
赵六""" # 三个双引号的三引号
print(str1,type(str1)) #张三 <class 'str'>
print(str2,type(str2)) #李四 <class 'str'>
print(str3,type(str3))
#王五
# 赵六 <class 'str'>
print(str4,type(str4))
#王五
# 赵六 <class 'str'>
数据类型转换
不同数据类型的数据可以相互转换
int数据可以由字符串或者float数据转换(使用int()函数)
float数据可以由int或者字符串数据转换(使用float()函数)
字符串数据也可以由int或者float类型数据转换(使用str()函数)
布尔类型数据也可以转换成int类型数据,True代表1,False代表0
int()
a = "1"
b = '-1'
c = 1.1
d = True
print(int(a),type(int(a)))# 1 <class 'int'>
print(int(b),type(int(b)))# -1 <class 'int'>
print(int(c),type(int(c)))# 1 <class 'int'>
print(int(d),type(int(d)))# 1 <class 'int'>
float()
a = 1
b = '-1'
c = "1.12"
print(float(a),type(float(a)))# 1.0 <class 'float'>
print(float(b),type(float(b)))# -1.0 <class 'float'>
print(float(c),type(float(c)))# 1.12 <class 'float'>
str()
a = 122
b = 1.11
c = True
print(str(a),type(str(a)))# 122 <class 'str'>
print(str(b),type(str(b)))# 1.11 <class 'str'>
print(str(c),type(str(c)))# True <class 'str'>
注释
注释即为嵌入在程序中的,对程序没有影响的,对代码有标注性意义的文本。(这是我给注释下的定义)
注释可分为单行注释和多行注释
单行注释用井号来表示"#"
python中没有多行注释,但是你可以写一个多行字符串,不给他添加变量来代替多行注释
# 单行注释
"""
多行注释
"""
还有一个特殊类型注释,中文编码声明注释,声明该文件的编码格式
注意:该行代码需要写在文件的第一行
# coding: gbk
第二章
input()函数
参数:在控制台的提示文字
作用:input函数数用于获取标准输入(通常是键盘)获取用户的输入,它的返回值就是用户的输入
返回值:input函数的返回值都是str类型,如果需要其他类型的数据,就使用类型转换函数进行转换
str = input("请输入一个字符串:"); # bianys
print(str,type(str)) #bianys <class 'str'>
str = input("请输入一个数字:"); # 2
print(str,type(str)) #2 <class 'str'>
可以看到,就算输入的是数字,返回的也是字符串类型的数据。
运算符
算术运算符
print(1+1) #加法运算符:+
print(1-1) #减法运算符:-
print(1*1) #乘法运算符:*
print(3/2) #除法运算符:/ 1.5
print(3//2) #整除运算符://,返回值向下取整 1
print(9//-4) # -3
print(-9//4) # -3
print(5 % 3) #取余运算符:%,余数 = 被除数 - 除数*商
print(-5 % 3) # 1
print(5 % -3) # -1
print(2**3) #幂运算符:**,该表达式表示2的三次方
赋值运算符
赋值运算符就是给变量赋值的,用直接赋值,链式赋值,参数赋值,解包赋值
直接赋值
a = 3
print(a)
链式赋值
a=b=c= 20
print(a,b,c) # 20 20 20
参数赋值
a=10
a+=5
print(a)# 15
a-=5
print(a)# 10
a*=5
print(a)# 50
a/=5
print(a)# 10.0
a//=5
print(a)# 2.0
a%=5
print(a)# 2.0
解包赋值,按照顺序赋值
a,b,c = 10,20,30
print(a,b,c) # 10 20 30
a,b = b,a
print(a,b)# 20 10
比较运算符
比较运算符是一类给变量的大小、真假进行判断的运算符,返回布尔类型数据
a,b = 10,20
print(a>b)#False
print(a>=b)#False
print(a>=b)#False
print(a>=b)#False
print(a<=b)#True
print(a<b)#True
print(a==b)#False
print(a!=b)#True
== 和 is
判断变量是否同有两种方式,一种是==,另一种是is
== 是对变量的值进行比较
is 和 is not 是针对变量的地址,也就是id进行比较
a = 10
b = 10
print(a==b,id(a),id(b)) #True 140732815369288 140732815369288
print(a is b,id(a),id(b)) #True 140732815369288 140732815369288
a = [1,2,3]
b = [1,2,3]
print(a==b,id(a),id(b)) # True 2014458369216 2014460169280
print(a is b,id(a),id(b)) # False 2014458369216 2014460169280
print(a is not b,id(a),id(b)) # True 2014458369216 2014460169280
in 与 not in
in判断一个变量是否在另一个变量集合中,这个变量集合其实就是数组(字符串可当作字符数组)
in 与 not in 正好相反,判断一个变量是否不在另一个变量集合中
list = [1,2,3,4]#这是一个数组
print(1 in (1,2,3))#True
print(5 in list)#False
print(1 not in [1,2,3])#False
print(8 not in [1,2,3])#True
布尔运算符(逻辑运算符)
对布尔类型数据进行计算的运算符是布尔运算符,返回值也是布尔类型的值
都有and、or、not 分别对应着与、或、非,运算逻辑不多展示。
print(True and False) # False
print(True and True) # True
print(True or False) # True
print(False or False) # False
print(not True) # False
print(not False) # True
位运算符
python中的位运算符有 &(与)、|(或) 、<<(左移运算)、>>(右移运算)
print(4 & 3) # 按位相与:0
print(4 | 3) # 按位相或:7
print(129 << 1) # 4左移1位,逻辑左移:258
print(4 >> 1) # 8又移2位,逻辑右移:2
print(255 >> 2) # 逻辑右移:63
运算符的优先级
算数符的优先级
小括号>算术运算>位运算>比较运算符>布尔运算符>赋值运算符(=)
** > (*,/,//,%) > (+,-) > (<<,>>,&,|) > (>,<,==,>=,<=.is,is not,in) > (and,or,not) > (=)
a = 2**2 * 3 + 1 > 1 << 4 and True
b = 2**2 * 3 + 1
c = 1 << 4
print(a)# False
print(b)# 13
print(c)# 16
第三章
程序的运行结构分为三种,顺序结构,选择结构,循环结构
顺序结构
顺序结构就是程序由上到下,由左到右依次执行。
print("开始把大象放入冰箱")
print("1-打开冰箱")
print("2-把大象放进冰箱")
print("3-关闭冰箱")
print("结束")
"""输出结果
开始把大象放入冰箱
1-打开冰箱
2-把大象放进冰箱
3-关闭冰箱
结束
"""
对象的布尔值
在python中,任何东西都是对象,所有的对象都有一个对应的布尔值,可以通过内置函数bool()来获取对象的布尔值
除了以下几个对象的布尔值是False,其他对象的布尔值都是True
False,0,0.0,“”,‘’,None,空列表[],list(),空元组(),tuple(),空字典{},disc(),空集合set()
# 以下输出返回值全是False
print(bool(False)) # False
print(bool(0)) # 零
print(bool(0.0))# 零点零
print(bool(""))# 空字符串
print(bool(None))# 空对象
print(bool([]))# 空列表
print(bool(list()))# 空列表
print(bool(()))# 空元组
print(bool(tuple()))# 空元组
print(bool({}))# 空字典
print(bool(dict()))# 空字典
print(bool(set()))# 空集合
单分支结构
介绍
单分支结构就是,如果满足某个条件,就做某件事
语法
if 布尔表达式:
缩进(一般是4格)要做的事
缩进(一般是4格)要做的事
缩进(一般是4格)要做的事
…
例如
money = 2000000
if money > 114514: #注意这里有个冒号
print("土豪啊")
双分支结构
介绍
双分支结构就是,如果满足某个条件,就做某件事,否则就做另一件事
语法
if 布尔表达式:
缩进(一般是4格)要做的事
缩进(一般是4格)要做的事
缩进(一般是4格)要做的事
else:
缩进(一般是4格)另一件事
缩进(一般是4格)另一件事
缩进(一般是4格)另一件事
…
例如
height = 190;
if height >= 180:
print("长得真高啊")
else:
print("长的真低啊")
多分支结构
介绍
如果满足某个条件,就执行某件事,如果不满足,否则,如果满足另一个条件,就执行另一件事,否则…,最后所有条件都不满足,执行某一件事。
语法
if 布尔表达式1:
代码1
elif 布尔表达式2:
代码2
elif 布尔表达式3:
代码3
… …
else:
代码n
例如
if 100 <= score >= 90:
print("真厉害,不愧是我的儿子")
elif score >= 80:
print("这回考得不错")
elif score >= 70:
print("正常发挥,还行")
elif score >= 60:
print("这回考的不行,给你一个大比兜")
elif 0 <= score < 60:
print("龟孙贼,来来来,看你能不能看到明天的太阳!")
else:
print("这逼老师,瞎几把判的分吧")
嵌套分支
分支结构是可以嵌套的,分支结构里面也可以写分支结构
例如
money = int(input("消费金额:"))
haveCard = input("是否有会员卡(y/n):")
if haveCard == "y":
if money >= 200:
print("打8折,消费:", money * 0.8, "元")
elif money >= 100:
print("打9折,消费:", money * 0.9, "元")
else:
print("不打折,消费:", money, "元")
else:
if money >= 100:
print("打九五折,消费:", money * 0.95, "元")
else:
print("不打折,消费:", money, "元")
三元表达式
条件表达式是一个表达式,是表达式它返回的就是一个值
他会根据条件的不同返回两个不同的值
语法
值1 if 条件表达式 else 值2 # 如果布尔表达式为True,返回值1,否则返回值2
a = 10
b = 20
print("a>b" if a > b else "a<=b")
pass语句
pass代表空语句,当我们在一个地方必须要代码,否则会报错的时候,我们可以暂时用pass来代替
if True:
#这个地方必须写代码,否则会报错
else:
#这个地方必须写代码,否则会报错
# 这样就不会报错了
if True:
pass
else:
pass
内置函数range()
range返回一个range类型的对象,range对象可以通过list函数转换成一个数组
根据参数的不同返回的集合也不同
range(int a) # a代表返回从0到a-1的一个数组,每个数之间的间隔为1
range(int a,int b) # a代表返回从a到b-1的一个数组,每个数之间的间隔为1
range(int a, int b, int c) # a代表返回从a到b-1的一个数组,每个数之间的间隔为c
r = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(r))
r = range(2, 10) # [2, 3, 4, 5, 6, 7, 8, 9]
print(list(r))
r = range(2, 7, 2) # [0, 2, 4, 6, 8]
print(3 in r) # False
print(4 in r) # True
print(5 not in r) # True
注意:range()函数返回的只是一个range类型的对象,并不是一个数组,因此在内存中占空间是比较小的,当使用list()函数将其转换成一个数组后,他才是一个真正的数组。
循环
py中循环分为两类,while循环和for-in循环
while循环
语法
while 条件表达式:
循环体
示例1:依次输出0-10
a = 1
while a <= 10: # 当a>10的时候就会退出循环
print(a)
a += 1 # a自增1
示例2:1到100的偶数和
a = 1
result = 0;
while a <= 100:
if a % 2 == 0:
result += a
a += 1
print(result)
for-in循环
for-in循环又称为遍历,把一个数组或者集合的对象都拿出来,做相关操作
语法
for 变量 in 可迭代的对象:
循环体
执行图
示例
list = [1, 2, 4, 3, 4]
for item in list:
print(item)
如果循环体不需要访问变量,则可以将变量改为下划线 _
# 说十次你好
for _ in range(10):
print("你好")
练习:返回水仙花数(水仙花数,也被称为阿姆斯特朗数,是一个三位数,其各个数字的立方和等于它本身)
#方法一(单个循环)
for i in range(100,1000):
bai = int(i / 100)
shi = int((i / 10) % 10)
ge = i % 10
if bai**3 + shi**3 + ge**3 == i:
print(i)
# 方法二(循环嵌套)
for i in range(1, 10):
for j in range(0, 10):
for k in range(0, 10):
if i**3 + j**3 + k**3 == i*100 + j*10 + k*1:
print(str(i)+str(j)+str(k))
练习:输出九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
if j == i:
print(j, "*", i, "=", j * i)
else:
print(j, "*", i, "=", j * i, end=" ")
break
break是一个结束循环的语句。在循环过程中,如果发生某种情况,我们想立刻结束整个循环,我们可以使用break保留字
示例:当用户输入正确密码时,结束循环
i = 0
password = "114514"
while i < 3:
i += 1
pwd = input("请输入你的密码:")
if pwd == password:
print("密码正确")
break
else:
print("密码错误")
continue
continue适用于结束当前的循环,直接开始下一个循环。continue通常和if语句一同使用
示例
moneys = [80,20,90,110,30,300]
for money in moneys:
if money >= 100:
print("打九折,消费:", money * 0.9)
continue # 当金钱大于等于100时,打九折,然后处理下一个人的消费
print("不打折,消费:", money)
和循环搭配之用的else
不同于其他语言,python中while循环、for循环可以和else搭配使用。
在循环结束后,如果整个循环没有被break打断,那么执行else语句中的代码
语法
while/for循环:
循环语句
else:
代码
示例:还是输入密码的问题,如果整个循环没有被break打断,证明用户密码输入三次都不正确。
i = 0
password = "114514"
while i < 3:
i += 1
pwd = input("请输入你的密码:")
if pwd == password:
print("密码正确")
break
else:
print("密码错误")
else:
print("嘤嘤嘤,密码都输错三次了,不能再输了耶!(。♥‿♥。)")
其实,这种else语法是可以被代替的,只需要在循环外加一个变量即可
i = 0
password = "114514"
flag = False #加一个变量
while i < 3:
i += 1
pwd = input("请输入你的密码:")
if pwd == password:
print("密码正确")
flag = True #当密码正确时,变为True
break
else:
print("密码错误")
if not flag: # 循环结束后判断密码是否输入正确
print("嘤嘤嘤,密码都输错三次了,不能再输了耶!(。♥‿♥。)")
嵌套循环中的break和continue
在嵌套循环中,break和continue只会作用于本层循环,不会作用于外层循环。
示例:内层循环会跳过3,到7时就会结束内存循环,但外层循环不会结束。外层循环到11就会结束,自然内层循环不会继续执行。
for i in range(1, 20):
if i == 11:
break
print("外层循环i=", i)
for j in range(i + 1):
if j == 3:
continue
elif j == 7:
break
print("\t\t内层循环j=", j)