修改(开启)文件的访问权限
chmod u+x filename
跳转到某个目录,打开某个文件
cd 路径
python3 ./文件名
假设变量a=10,变量b=21
+ | 加 | |
- | 减 | |
* | 乘 | |
/ | 除 | |
% | 取模:返回除法的余数 | b%a为1 |
** | 幂:返回x的y次幂 | a**b为10的21次方 |
// | 取整除 | 9//2为4,-9//2为-5 |
- continue:本次循环提前结束,跳过本次循环中continue之后的所有语句
- break:结束整个while循环
i=0
while i<10:
i += 1
print("-"*30)
if i==5:
continue/break #说明了continue和break的区别
print(i)
打印9*9乘法表(while循环+for循环):
#while循环
a = 0
while a<9:
a += 1
b = 0
while b<9:
b += 1
print("%d*%d=%d"%(a,b,a*b))
#for循环
for a in range(1,10):
for b in range(1,10):
print("%d*%d=%d"%(a,b,a*b))
字符串
str = "chengdu"
print(str)
print(str[0])
print(str[1])
print(str[1:5])
print(str[0:10:2]) #[起始位置:结束位置:步进值]
输出结果:
chengdu |
c |
h |
heng |
cegu |
print(str + ",你好") #字符串连接使用"+"号
print(str * 3)
print("hello\nworld") #使用反斜杠,实现转义字符的功能
print(r"hello\nworld") #在字符串前面加r,表示直接显示原始字符串(后面的字符串内所有"\"号不进行解释,直接输出)
字符串的常见操作:
数组/列表
列表遍历:
namelist = ["小张","小王","小李"]
#for循环遍历
for name in namelist:
print(name)
#while循环遍历
length = len(namelist) #len()可以表示列表的长度
i = 0
while i < len(namelist):
print(namelist[i])
i += 1
1⃣️append:在列表末尾追加一个整体元素
namelist = ["小张","小王","小李"]
#增:【append】
print("---增加前,名单列表的数据---")
for name in namelist:
print(name)
nametemp = input("请输入添加学生的姓名:")
namelist.append(nametemp) #append:在末尾追加一个元素
print("---增加后,名单列表的数据---")
for name in namelist:
print(name)
2⃣️extend:将b列表中每个元素,逐一追加到a列表中
#增:extend
a = [1,2]
b = [3,4]
a.append(b) #将b列表当作一个元素,加入到a列表中
print(a)
#输出结果:[1,2,[3,4]] #列表的嵌套/二维列表
a = [1,2]
b = [3,4]
a.extend(b) #将b列表中每个元素,逐一追加到a列表中
print(a)
#输出结果:[1, 2, 3, 4]
3⃣️insert:指定下标位置插入元素
#增:insert
a = [1,2,3]
a.insert(1,3) #指定下标位置插入元素:第一个变量表示下标,第二个变量表示插入的元素
print(a)
#输出结果:[1,3,2,3]
4⃣️del:在指定位置删除一个元素
5⃣️pop:弹出(删除)末尾元素
6⃣️remove:直接删除指定内容的元素
moviename = ["海贼王","斗罗大陆","第一滴血","速度与激情","小时代"]
print("---删除前,电影名单列表的数据---")
for name in moviename:
print(name)
#删:del
del moviename[2] #在指定位置删除一个元素
#删:pop
moviename.pop() #弹出(删除)末尾元素
#删:remove
moviename.remove("斗罗大陆") #直接删除指定内容的元素(涉及重复数据时删除遍历到的第一个)
print("---删除后,电影名单列表的数据---")
for name in moviename:
print(name)
7⃣️改
#改
namelist[1] = "小红" #直接指定位置修改元素
8⃣️in,not in
#查:in和not in
namelist = ["小张","小王","小李"]
findname = input("请输入你要查找的学生姓名:")
if findname in namelist:
print("在学员名单中找到了相同的名字")
else:
print("没有找到")
9⃣️index:可以在指定下标(位置)范围查找目标元素,并返回目标元素下标(位置)
#查:index
mylist = ["a","b","c","a","b"]
print(mylist.index("a",1,4)) #在位置1-4的范围内查"a"
#输出结果:3
print(mylist.index("a",1,3)) #范围区间:左闭右开 [1,3),找不到会报错
#输出结果:报错
🔟count:
#查:count
mylist = ["a","b","c","a","b"]
print(mylist.count("b")) #统计列表中某个元素出现几次
#输出结果:2
排序和反转
#排序和反转
a = [3,2,4,1]
a.reverse() #反转(直接修改a,不是临时的)
print(a)
a.sort() #排序:升序
print(a)
a.sort(reverse=True) #排序:降序
print(a)
题目:将八个老师随机放入三个办公室,并输出
#错误代码
import random
office = [[],[],[]]
names = ["A","B","C","D","E","F","G","H"]
i = 0
for i in range(0,len(names)):
office[random.randint(0,2)][random.randint(0,7)] = names[i]
i += 1
print(office)
#正确代码
import random
offices = [[],[],[]]
names = ["A","B","C","D","E","F","G","H"]
for name in names: #每个名字逐一取出
index = random.randint(0,2)
offices[index].append(name)
#输出
i = 1
for office in offices: #第一层
print("办公室%d的人数为:%d"%(i,len(office)))
i += 1
for name in office: #第二层
print(name,end="\t")
print("\n")
print("-"*20)
#T1代码
products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
print("-"*6,"商品列表","-"*6)
i = 0
for i in range(0,5):
print(i,products[i][0],products[i][1],end="\n")
#T2代码
products = [["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
buylist = []
indexlist = []
for i in range(0,6):
index = input("您需要购买的商品是:")
if index == "q":
break
else:
index = int(index)
indexlist.append(index)
buylist.append(products[index])
i += 1
print("-"*6,"商品列表","-"*6,end="\n")
for i in indexlist:
print(i,products[i][0],products[i][1],end="\n")
元组
查看类型:type()
访问最后一个元素:list[-1]
步进:list[1:3] #左闭右开,进行切片
#增 (连接:并不是在原有基础上增,而是全部赋值到新的空间里面,并且连接了起来)
tup1 = (12,34,56)
tup2 = ("abc","xyz")
tup = tup1 + tup2
print(tup)
#删
tup = (12,34,56)
del tup #删除了整个元组变量
#改 不能改
tup = (12,34,56)
tup[0] = 100 #报错,不允许修改
#查
直接访问:print
字典
info = {"name":"吴彦祖","age":18}
print(info["name"])
print(info["age"])
print(info["gender"]) #一个不存在的键:直接报错
print(info.get("gender")) #使用get方法,没有找到对应的键,默认返回:None
print(info.get("gender","M")) #没找到的时候,可以设定默认值
1⃣️增
#增
info = {"name":"吴彦祖","age":18}
newID = input("请输入新的学号")
info["id"] = newID
print(info["id"])
2⃣️删
#删:del
info = {"name":"吴彦祖","age":18}
print("删除前:%s"%info["name"]) #能正常打印
del info["name"] #删除了整个指定键值对
print("删除后:%s"%info["name"]) #报错
#删:del
info = {"name":"吴彦祖","age":18}
print("删除前:%s"%info) #能正常打印
del info #删除了整个字典
print("删除后:%s"%info) #报错
#删:clear
info = {"name":"吴彦祖","age":18}
print("清空前:%s"%info)
info.clear()
print("清空后:%s"%info)
3⃣️改
#改
info = {"name":"吴彦祖","age":18}
info["age"] = 20
print(info["age"])
4⃣️查
#查(理解为遍历)
info = {"id":1,"name":"吴彦祖","age":18}
print(info.keys()) #得到所有的键(列表形式)
print(info.values()) #得到所有的值(列表形式)
print(info.items()) #得到所有的项(列表形式),每个键值对是一个元组
info = {"id":1,"name":"吴彦祖","age":18}
#遍历所有的键
for key in info.keys():
print(key)
#遍历所有的值
for value in info.values():
print(value)
#遍历所有的项
for item in info.items():
print(item)
#遍历所有的键值对
for key,value in info.items():
print("key=%s,value=%s"%(key,value))
#使用枚举函数,同时拿到列表中的下标和元素内容
mylist = ["a","b","c","d"]
for i,x in enumerate(mylist):
print(i,x)
输出结果:
函数
#函数的定义
def printinfo():
print("-"*20)
print(" 人生苦短,我用Python ")
print("-"*20)
#函数的调用
printinfo()
#带参数的函数
def add2Num(a,b):
c = a + b
print(c)
#函数的调用
add2Num(11,22)
#带返回值的函数
def add2Num(a,b):
return a+b #通过return来返回运算结果
#函数的调用
#1
print(add2Num(11,22))
#2
result = add2Num(11,22)
print(result)
#返回多个值的函数
def divide(a,b):
shang = a//b
yushu = a%b
return shang,yushu #多个返回值用逗号分隔
sh,yu = divide(5,2) #需要使用多个值来保存返回内容
print("商:%d,余数:%d"%(sh,yu))
#第一题
def lineprint():
print("-"*20)
lineprint()
#第二题
def linePrint(): #打印一条横线
print("-"*20)
def lineprint(a): #根据用户输入的数字,打印相应数量的线条
i = 0
while i < a:
linePrint()
i += 1
lineprint(5)
#第三题
def sum(a,b,c):
return a+b+c
print(sum(1,2,3))
#第四题
def sum(a,b,c):
return (a+b+c)/3
print(sum(1,2,3))
#第四题
def sum(a,b,c):
return a+b+c
def ave(a,b,c):
result = sum(a,b,c)/3
return result
print(ave(1,2,3))
局部变量和全局变量
- 变量名相同时,局部变量优先使用
- 没有局部变量,默认使用全局变量
global a #声明全局变量在函数中使用的标识符
文件操作
#write
f = open("test.txt","w") #打开文件,w模式(写模式),文件不存在就新建
f.write("hello,world!") #将字符串写入文件中
f.close() #关闭文件
#read:读取指定的字符,开始时定位在文件头部,每执行一次向后移动指定字符数
f = open("test.txt","r")
content = f.read(10)
print(content)
content = f.read(2)
print(content)
f.close()
#readlines
f = open("test.txt","r")
content = f.readlines() #一次性读取全部文件为列表,每行一个字符串元素
i = 1
for temp in content:
print("%d:%s"%(i,temp))
i += 1
f.close()
#readline
f = open("test.txt","r")
content = f.readline()
print("1:%s"%content,end="")
content = f.readline()
print("2:%s"%content)
f.close()
#文件重命名
import os
os.rename("test.txt","test1.txt")
#删除文件
import os
os.remove("test.txt")
#创建文件夹
import os
os.mkdir("test")
#获取当前目录
import os
os.getcwd()
#改变默认目录
import os
os.chdir("../")
#获取目录列表
import os
os.listdir("../")
#删除文件夹
import os
os.rmdir("test")
异常处理
#捕获异常
try:
print("---test 1---")
f = open("test.txt","r") #报错:不存在的文件
print("---test 2---")
except IOError: #文件没找到,属于IO异常(输入输出异常)
print("出现异常") #捕获异常后执行的代码
#捕获异常
try:
print("---test 1---")
f = open("test.txt","r") #报错:不存在的文件,属于IO异常(输入输出异常)
print("---test 2---")
print(num) #报错:不存在的变量
except (IOError,NameError): #将可能产生的所有异常类型,都放到这里的小括号中
print("出现异常") #捕获异常后执行的代码
#as result
try:
print("---test 1---")
f = open("test.txt","r") #报错:不存在的文件,属于IO异常(输入输出异常)
print("---test 2---")
print(num) #报错:不存在的变量
except (IOError,NameError) as result:
print("出现异常") #捕获异常后执行的代码
print(result)
#捕获所有的异常
try:
print("---test 1---")
f = open("test.txt","r") #报错:不存在的文件,属于IO异常(输入输出异常)
print("---test 2---")
print(num) #报错:不存在的变量
except Exception as result: #Exception可以承接任何异常
print("出现异常")
print(result)
poem = open("gushi.txt","w")
poem.write("春眠不觉晓,\n处处闻啼鸟。\n夜来风雨声,\n花落知多少。")
poem.close()
def read(a):
readContent = open(a,"r")
return readContent.readlines() #print()是打印的行为,return才有返回值,这里返回一个列表
def copy(b,c):
copyContent = open(c,"w")
for line in read(b): #write不能写入list,只能写入str,所以用for遍历列表将字符串逐个写入
copyContent.write(line)
copy("gushi.txt","copy.txt")
print("复制完毕")