使用工具:
Python3.9编译器 (Windows商城下载
pycharm
输出函数print
print(520)
print("helloworld")
print(3+3)
print("3+3")
520
helloworld
6
3+3
输出到文件中
fp=open('D:/text.txt','a+') //a+含义:如果文件不存在就创建,存在就在文件的后面进行追加
print("hello",file=fp)
fp.close()
将hello输出到D盘中的text.txt文件中
转义字符
反斜杠+实现转移功能的首字母
换行:\n
print('hello\nwwwww')
结果:
hello
wwwww
回的:\r
print('hello\rwwwww')
结果:
wwwww //输入完hello之后,回到这行的开头再输入wwwww,wwwww将hello顶掉了
水平制表符:\t
print('hello\twwwww')
结果:
hello wwwww
退格:\b
print('hello\bwwwww')
结果:
hellwwwww
如果想输出\\,那么需要输入\\\\
print("\\\\")
结果:
\\
查看保留字
输入
import keyword
print(keyword.kwlist)
结果:
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的定义和使用
name="maliya"
print("值", name)
print("标识",id(name))
print("类型",type(name))
结果:
值 maliya
标识 2709058027760
类型 <class 'str'>
变量的多次赋值
name="小明"
name="小红"
print(name)
结果:
小红
name="小明"
print(name)
name="小红"
print(name)
结果:
小明
小红
数据类型
- 整数类型 int
n1=90
n2=-76
print(n1,type(n1))
print(n2,type(n2))
print("十进制",123)
print("二进制",0b110101) //前面输入0b 八进制,十六进制自行百度
90 <class 'int'>
-76 <class 'int'>
十进制 123
二进制 53
- 浮点数类型 float
n1=3.1
n2=3.2
print(n1,type(n1))
print(n2,type(n2))
print(n1+n2)
结果
3.1 <class 'float'>
3.2 <class 'float'>
6.300000000000001 //因为按二进制计算,浮点数会存在误差
解决办法:
from decimal import Decimal
print(Decimal('3.1')+Decimal('3.2'))
结果:
6.3
- 布尔类型 bool true=1 flase=0
注意点:Python里面bool类型可以转化为整数值进行计算
f1=True //注意要大写,保留字的原因
f2=False
print(f1,type(f2))
print (f1+10) //true是1,10+1=11
结果:
True <class 'bool'>
11
- 字符串类型 str 常用的数据类型
可以使用单引号、双引号、三引号来定义
区别:单引号、双引号定义的只能在一行,三引号的能连续多行
strf1="rooter"
str1="123"
print(strf1,type(strf1))
print(str1,type(str1))
输出:
rooter <class 'str'>
123 <class 'str'>
数据类型转换
name="田所"
age=24
print(name,type(name)) #name与age数据类型不相同
print(age,type(age))
print("我叫"+name+",今年"+age+"岁") #报错,因为不能连接str和int
print("我叫"+name+",今年"+str(age)+"岁") #将int转换为str类型
print("我叫"+name+",今年",age,"岁") #使用逗号隔开
田所 <class 'str'>
24 <class 'int'>
我叫田所,今年24岁
我叫田所,今年 24 岁
注意str类型转int时,字符串必须为数字串,非数字串不允许转换
注释:
使用 # 开头 快捷键:
Ctrl+/
输入函数input
作用:接受来自用户的输入
a1=input("输入第一个数")
a2=input("输入第二个数")
print("结果为:",a1+a2)
结果:
输入第一个数3
输入第二个数4
结果为: 34 这里是因为a1a2为字符串类型
修改:
a1=input("输入第一个数")
a2=input("输入第二个数")
print("结果为:",int(a1)+int(a2))
结果:
输入第一个数3
输入第二个数4
结果为: 7
运算符
算数运算符 基本运算
print(1+1)
print(2-1)
print(2*3)
print(11/2) #加减乘除
print(11//2) #整除
print(11%2) #取余
print(2**4) #乘方运算 表示2*2*2*2,即2的四次方
结果:
2
1
6
5.5
5
1
16
一些公式:
赋值运算符
解包赋值:
a,b,c=20,30,40
print(a,b,c)
20 30 40
数值交换:
a,b=20,30
print(a,b)
a,b=b,a //直接交换
print(a,b)
20 30
30 20
比大小:
a,b=10,20
print(a>b)
print(a>=b)
print(b>=a)
print(a==b)
print(a!=b)
False
False
True
False
True
a=10
b=10
print(id(a),id(b)) //查看id
print(a==b) //A和B的value,也就是10这个值相等
print(a is b) //A和B的id标识,也就是地址相等
结果:
1787543972432 1787543972432
True
True
布尔运算
a="helloworld"
print("w" in a)
print("w" not in a)
True
False
位运算符
位与、位或
print(4&8)
print(4|8)
结果:
0
12
解析:
转化为二进制
4: 0 0 0 0 0 1 0 0
8: 0 0 0 0 1 0 0 0
&:位与,上下相位与,对位数位必须全是1,才是1,否则是0;
4: 0 0 0 0 0 1 0 0
8: 0 0 0 0 1 0 0 0
4&8 0 0 0 0 0 0 0 0
位与下来是00000000,所以是0
|:位或,上下相位或,对位只要有1,那就是1,否则都是0;
4: 0 0 0 0 0 1 0 0
8: 0 0 0 0 1 0 0 0
4|8 0 0 0 0 1 1 0 0
位或下来是00001100,所以是12
位运算
print(4<<1)
print(16>>2)
结果:8 4
解析:
转化二进制
4: 0 0 0 0 0 1 0 0
16:0 0 0 1 0 0 0 0
向左移一位,变为
4: 0 0 0 0 0 1 0 0
4<<1:0 0 0 0 0 1 0 0 //多出来的删掉,少的补0
0 0 0 0 1 0 0 0 //等于8
同理16向右移两位,从00010000变成00000100
分支结构
if-else写法
if 条件表达式:
条件执行体1
else :
条件执行体2
取款机:
money=int(1000) #余额
print("目前余额",money)
s=int(input("请输入取款金额") ) #取款金额,注意转化类型
# 判断余额
if money>=s:
money=money-s
print("取款成功,余额为:",money)
else:print("取款失败,目前余额",money)
结果:
目前余额 1000
请输入取款金额12000
取款失败,目前余额 1000
目前余额 1000
请输入取款金额 690
取款成功,余额为: 310
分辨奇数偶数:
a=int(input("输入一个整数")) //注意将a转化成int类型
if a%2==0:
print(a,"是偶数")
else:print(a,"是奇数")
结果:
输入一个整数12
12 是偶数
输入一个整数9
9 是奇数
多if-else写法(与java不同)
注意是elif
分数:
a=int(input("输入你的成绩"))
if a>=90 and a<=100:
print("A")
elif a<90 and a>=80:
print("B")
elif a<80 and a>=70:
print("C")
elif a<70 and a>=60:
print("D")
else:
print("不及格")
Python专属写法:
a=int(input("输入你的成绩"))
if 90<=a<=100:
print("A")
elif 80<=a<=89:
print("B")
elif 70<=a<=79:
print("C")
elif 60<=a<=69:
print("D")
else:
print("不及格")
嵌套
打折问题:
answer=input("你是会员吗?输入是否")
if answer=="是":
print("是会员啊,输入你的消费金额")
money=float(input())
if money >=200:
print(money*0.5)
else:print(money)
else:
print("不是哦,那输入你的消费金额")
money = float(input())
if money >= 200:
print(money * 0.8)
else:
print(money)
你是会员吗?输入是否 否
不是哦,那输入你的消费金额
1000
800.0
条件表达式
比大小:
num1=int(input("输入第一个整数"))
num2=int(input("输入第二个整数"))
# 比大小
if num1>num2:
print(num1,">" ,num2)
else:
print(num1,"<" ,num2)
Python特殊写法:
print( str(num1)+'>'+str(num2) if num1>num2 else str(num1)+'<'+str(num2))
输入第一个整数20
输入第二个整数10
20>10
pass语句
answer=input("你是会员吗?输入是否")
if answer=="是":
pass
else:
pass
总结
循环
range函数
是内置函数,可以直接使用,用于生成一个序列; 返回值是一个迭代器对象
1、
r=range(10) //什么都不设置,默认全初始
print(r) #(0,10)
print(list(r)) #用于查看range中的序列
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
-------------------------------------------------------------
2、
r=range(1,10) //1~10
print(r)
print(list(r))
range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
----------------------------------------------------------------
3、
r=range(1,10,2) //1~10 步长为2
print(r)
print(list(r))
range(1, 10, 2)
[1, 3, 5, 7, 9]
print(10 in r) //判断10是否在序列里面
是就True
不是就False
while循环
a=0
while a<10:
a+=1
print(a)
结果:
1
2
3
4
5
6
7
8
9
10
1~100之间的偶数和:
a=0
sum=0
while a<10:
a+=1
sum+=a
print(sum
a=1
sum=0
while a<=100:
if a%2!=0:
sum+=a
a+=1 //注意这里的空格,不能和上一段对齐,Python中对缩进要求很严格
print(sum)
结果:
2550
for-in循环
for a in "123345": //第一次取出1,将1赋值给a,输出a
print(a)
结果:
1
2
3
3
4
5
for item in range(10): //range函数也可以
print(item)
结果:
0
1
2
3
4
5
6
7
8
9
for _ in range(1,3): //如果在循环体内不需要使用到自定义变量,可以写为“_”
print("人生苦短")
结果:
人生苦短
人生苦短
1~100之间的偶数和:
sum=0
for a in range(0,101): //注意这里要取到101,不然100不算在内
if a%2==0:
sum+=a
print("1~100之间的偶数和",sum)
结果:
2550
水仙花数:
print("水仙花数:")
for item in range(100,1000):
a=item%10 #个位
b=item//100 #百位,注意整除是双斜杠//
c=(item//10)%10 #十位
if a**3+b**3+c**3==item:
print(item)
结果:
水仙花数:
153
370
371
407
流程控制语句break
ATM机输入密码
for _ in range(3):
pwd=input("输入密码")
if pwd=="8888":
print("密码正确")
break
else:
print("密码错误")
结果:
输入密码13
密码错误
输入密码123
密码错误
输入密码5
密码错误
a=0
while a<3:
pwd=input("输入密码")
if pwd=="8888":
print("密码正确")
break
else:
print("密码错误")
a+=1 #注意要写a+=1,不然会一直循环
流程控制语句continue
输出1~50之间,所有5的倍数
正常写法:
for item in range(1,51):
if item%5==0:
print(item)
continue写法:
for item in range(1,51):
if item%5!=0:
continue
print(item)
else语句
for item in range(3):
pwd=input("输密码")
if pwd=="8888":
print("yes")
break
else:
print("no")
else:
print("输入达到上限,明天再说吧")
嵌套循环
矩形
for hang in range(1,4): #行表,执行3次,所以3行
for lie in range(1,3): #每行执行2次
print("*",end="\t") #不换行输出
print() #换行
* *
* *
* *
三角形
for hang in range(1,5): #行表,执行3次,所以3行
for lie in range(1,hang+1): #每行执行2次
print("*",end="\t") #不换行输出
print() #换行
*
* *
* * *
* * * *
九九乘法表
for hang in range(1,10): #行表,执行9次
for lie in range(1,hang+1): #每行执行2次
print(lie,"*",hang,"=",hang*lie,end="\t") #不换行输出
print() #换行
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
二重循环中的break和continue
break
for i in range(5):
for j in range(1,10):
if j%2==0:
break
print(j) #从1开始,1÷2的余数不等于0,所以输出1,然后跳2,2÷2余0,break,进入第二个循环
结果:
1
1
1
1
1
----------------------------------------------------------------------------
for i in range(5):
for j in range(10): #这里是从0开始,0取余2一直为0,所以break,break五次之后输出空白
if j%2==0:
break
print(j)
结果:
空白
----------------------------------------------------------------------------------------
for i in range(5):
for j in range(1,10):
if j%3==0:
break
print(j,end="\t")
print()
结果:
1 2
1 2
1 2
1 2
1 2
continue
for i in range(5):
for j in range(1,10):
if j%3==0: #遇到三的倍数就跳过,不是就输出
continue
print(j,end="\t")
print()
结果:
1 2 4 5 7 8
1 2 4 5 7 8
1 2 4 5 7 8
1 2 4 5 7 8
1 2 4 5 7 8
总结
列表
变量存储:
列表储存:
列表的创建删除
lst=["123","312"]
print(lst)
lst2=list(["qweqweqwe","qweqwe"])
print(lst2)
结果:
['123', '312']
['qweqweqwe', 'qweqwe']
列表特点:
列表查询操作
lst=["hello","world",98,"hello"]
print(lst.index("hello")) #返回列表中元素的索引值,如果列表中有相同元素,那只返回第一个
print(lst.index("hello",1,4)) #在列表1~4的范围中查找hello,找到的是索引为3的“hello”
print(lst[0]) #通过索引获取列表里的值
print(lst[2])
print(lst[-3]) #负数就是从第一个元素0开始,往最后倒数,比如这里最后一个hello是-1,98是-2,world是-3
print(lst[10]) #超出范围 IndexError: list index out of range
print(lst[-10]) #超出范围 IndexError: list index out of range
结果:
0
3
hello
98
world
error
error
切片:
lst=[10,20,30,40,50,60,70,80]
print(lst[0:4]) //从0开始
print(lst[1:6])
结果:
[10, 20, 30, 40]
[20, 30, 40, 50, 60]
lst=[10,20,30,40,50,60,70,80]
print(lst[0:4])
lst2=lst[1:6]
print(id(lst),lst) #查看id
print(id(lst2),lst2)
结果:
[10, 20, 30, 40]
2329551515136 [10, 20, 30, 40, 50, 60, 70, 80] //切出来的是一个新的列表
2329551357120 [20, 30, 40, 50, 60]
lst=[10,20,30,40,50,60,70,80]
print(lst[7:1:-1]) #反着来,从最后往前
结果;
[80, 70, 60, 50, 40, 30]
判断对象是否存在:
lst=[10,20,30,40,50,60,70,80]
print(10 in lst)
print(100 in lst)
print(100 not in lst)
结果:
True
False
True
遍历:
lst=[10,20,30,40,50,60,70,80]
for item in lst:
print(item)
10
20
30
40
50
60
70
80
列表增删改操作
增添:
lst=[10,20,30,40,50,60,70,80]
lst.append(90) #添加90进入lst
lst2=["heelo"]
lst2.append(2) #添加2进入lst2
lst.append(lst2) #将lst2作为一个元素添加进lst
print(lst)
结果:
[10, 20, 30, 40, 50, 60, 70, 80, 90, ['heelo', 2]]
lst=[10,20,30,40,50,60,70,80]
lst.append(100)
lst.insert(1,90) #在1的位置添加90,原来是1位置的20向后移一位
print(lst)
结果:
[10, 90, 20, 30, 40, 50, 60, 70, 80, 100]
删除:
lst=[10,20,30,40,50,60,70,80]
lst.remove(30) #删除30
print(lst)
结果:
[10, 20, 40, 50, 60, 70, 80, 100]
lst=[10,20,30,40,50,60,70,80]
lst.pop(5) #移除索引为5的元素,如果不指定参数索引,默认删除最后一个元素
print(lst)
[10, 20, 30, 40, 50, 70, 80] #60被移走了
lst=[10,20,30,40,50,60,70,80]
lst[1:5]=[] #将1后面四个元素替换为空
print(lst)
结果:
[10, 60, 70, 80]
lst.clear() #清除列表内容
del lst #注意写法,这个是直接删除整个列表
修改:
lst=[10,20,30,40,50,60,70,80]
lst[1]=9
print(lst)
结果:
[10, 9, 30, 40, 50, 60, 70, 80]
lst=[10,20,30,40,50,60,70,80]
lst[1:3]=[100,200,400] #将1~3元素切片(不包括3),替换为100,200,400
print(lst)
结果:
[10, 100, 200, 400, 40, 50, 60, 70, 80]
列表元素排序
lst=[10,20,100,30,70,80,40,50,60]
print(lst,id(lst))
lst.sort()
print(lst,id(lst))
lst.sort(reverse=True) #降序排序,T要大写
print(lst)
lst1=sorted(lst) #内置函数sorted,升序
结果:
[10, 20, 100, 30, 70, 80, 40, 50, 60] 1871606000768
[10, 20, 30, 40, 50, 60, 70, 80, 100] 1871606000768
[100, 80, 70, 60, 50, 40, 30, 20, 10]
[10, 20, 30, 40, 50, 60, 70, 80, 100]
列表生成式
lst1=[i for i in range(0,10)] #创建一个i列表,为0~10,赋予lst1,输出i
lst2=[i*2 for i in range(0,6)] #创建一个i列表,为0~6,赋予lst2,输出i*2,1234变成2468
lst3=[i*i for i in range(0,6)]
print(lst1)
print(lst2)
print(lst3)
结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10]
[0, 1, 4, 9, 16, 25]