From IT私塾五天快速上手python 纯手打学习笔记,代码+注释+例题
# -*- codeing =utf-8 -*-
# @Time : 2021/3/18 13:49
# @Author : David
# @File : DEMO1.py
# @Software :PyCharm
'''
print("标准化输出字符串")
a=18
print("这是变量:",a)
'''
#格式化输出
age=22
print("我的名字是%s,我的国籍是%s"%("David","中国")) #%s引用字符串,%d引用数字
print("我的年纪是:%d 岁"%age)
#输出显示
print("aaa","bbb","ccc")
print("www","baidu","com",sep=".")
print("hell",end="")
print("world",end="\t")
print("python",end="\n")
print("end")
#输入
password= input("请输入密码")
print("您刚刚输入的密码是:",password)
#测试变量类型
a=input("输入:") #默认输入的是字符串
b=int(input("输入:")) #强制类型转化
print("输入了一个数:%d"%b)
#强制类型转化基础代码
a=int("123")
b=a+100
print(type(b))
#条件判断语句
if 1:
print("True")
else:
print("False")
print("end")
#例子1
score = int(input("请输入成绩:"))
if score>=90 and score<=100:
print("本次考试等级为A")
elif score>=80 and score<90:
print("本次考试等级为B")
elif score>=70 and score<80:
print("本次考试等级为C")
elif score>=60 and score<70:
print("本次考试等级为D")
else:
print("本次考试等级为E")
#例子2
xingbie =0 #1代表男生,0代表女生
danshen=0 #1代表单身,0代表有男朋友或女朋友
if xingbie==1:
print("男生",end=',')
if danshen==1:
print("我给你介绍一个女朋友")
else:
print("你给我介绍一个吧")
else:
print("女生",end=',')
if danshen==1:
print("我给你介绍一个男朋友")
else:
print("你给我介绍一个吧")
#例子3(石头剪子布游戏)
import random #引入随机库
a=int(input("请输入:剪刀(0)、石头(1)、布(2):"))
if a==0:
print("你的输入为:剪刀(0)")
elif a==1:
print("你的输入为:石头(1)")
elif a==2:
print("你的输入为:布(2)")
x = random.randint(0,2) #随机生成[0,2]
print("随机生成数为:%d"%x)
if a==0 and x==1:
print("哈哈,你输了:)")
elif a==1 and x==2:
print("哈哈,你输了:)")
elif a==2 and x==0:
print("哈哈,你输了:)")
elif a==0 and x==0:
print("平局,再来一局")
elif a==1 and x==1:
print("平局,再来一局")
elif a==2 and x==2:
print("平局,再来一局")
else:
print("你赢了")
#循环控制语句
for i in range(5):
print(i)
for i in range(0,14,3):
print(i)
for i in range(-10,-100,-30):
print(i)
name="chengdu"
for x in name:
print(x,end="\t")
a=["aa","bb","cc","dd"]
for i in range(len(a)):
print(i,a[i])
i = 0
while i<5:
print("当前是第%d次执行循环"%(i+1))
print("i=%d"%i)
i += 1
#例子(累加器,求1加到100)
a=0
i=0
while i<=100:
a=a+i
i+=1
print("1到100的和为%d"%a)
#or
a=0
for i in range(101):
a=a+i
print("1到100的和为%d"%a)
#while&else
count=0
while count<=5:
print(count,"小于5")
count +=1
else:
print(count,"大于或等于5")
#pass例子
for letter in "room":
if letter =="o":
pass
print("pass")
else:
print(letter)
#循环例子
i=0
while i<10:
i=i+1
print("-"*30)
if i==5:
break #结束整个循环
print(i)
i=0
while i<10:
i=i+1
print("-"*30)
if i==5:
continue #结束本次循环
print(i)
#循环实战
a=1
while a<=9:
b=1
while b<=a:
print("%d*%d=%d\t"%(b,a,b*a),end=(""))
b+=1
print()
a+=1
for a in range(1,10):
for b in range(1,a+1):
print("%d*%d=%d\t"%(b,a,b*a),end=(""))
print()
#字符串
a="hello"
b="wrold"
print("a+b的输出结果:",a+b)
print("a[1:4]的输出结果为:",a[1:4]) #左闭右开原则,选中第一位不包括第四位
word='字符串'
sentence="这是一个句子"
paragraph="""
这是一个段落
可以由多行组成
"""
print(word)
print(sentence)
print(paragraph)
my_str='I\'m a student' #\为转译字符,表示在字符串中转译
print(my_str)
my_str="Jason said \"I like you\""
print(my_str)
str="chengdu"
print(str[1:5])
print(str[:5])
print(str[5:])
print(str+",你好")
print((str+"\n")*3) #\n表示换行再,\t表示空格,
print(r"hello\nchengdu") #字符串前面有r代表正则表达式,引号内的转译符号失效,变为字符串的一部分
#bytes.decode(encoding="utf-8",errors="strict") 读取时候,解码成utf-8
#decode(encoding="utf-8",erroes="strict") 输出时候,解码成strict
#列表
list=['abcd',786,2.23,'runoob',70.2]
print(list[1:3])
tinylist=[123,'runoob']
print(list+tinylist)
namelist=[] #定义一个空列表
namelist=["小张","小王","小李"]
print(namelist[0])
testlist=[1,"测试"] #列表中可以存储混合类型,保持固有类型
print(type(testlist[0]))
print(type(testlist[1]))
namelist=["小张","小王","小李"]
#循环输出
for name in namelist:
print(type(name),end="\t")
print("")
a=0
length=len(namelist)
print(len(namelist)) #len函数可以输出列表的长度
while a<length:
print(type(namelist[a]),end="\t")
a+=1
#增
#新增数据至列表尾部
namelist=["小张","小王","小李"]
nametemp=input("请输入学生姓名:")
namelist.append(nametemp)
print(namelist)
#列表的追加
namelist=["小张","小王","小李"]
spacelist=[1,2,3,4]
namelist.extend(spacelist)
print(namelist)
#数据的插入
namelist=["小张","小王","小李"]
namelist.insert(1,"小赵") #插入在第几位,或者理解为在第几位之前插入
print(namelist)
namelist.reverse()
print(namelist)
#列表的删除
#1.delete的方法
namelist=["小张","小王","小李"]
del namelist[0] #删除该列表第0位
print(namelist)
#2.remove的方法
namelist=["小张","小王","小李"]
namelist.remove("小张") #移除列表中指定值,只移除第一个匹配值
print(namelist)
#3.pop的方法
namelist=["小张","小王","小李"]
namelist.append("小赵")
print(namelist)
print(namelist.pop(0)) #与delete类似,但是删除后可以返回删除的元素,没有默认值则删除列表最后一位
print(namelist)
#改
namelist=["小张","小王","小李"]
print(namelist)
a=int(input("请输出需要修改的元素下标(0-2):"))
b=input("请输出修改后的元素:")
print(b)
namelist[a]=b #修改器的基本结构
print(namelist)
#查
namelist=["小张","小王","小李"]
findName= input("请输入你要查找的学生姓名:")
if findName not in namelist: #一般配合条件判断语句使用
print("没有找到")
else:
print("在学员名单中找到了相同的名字")
#索引查询
mylist=["a","b","c","a","b"]
print(mylist.index("a",1,4)) #可以查找指定下标范围的元素,并找到对应数据的下标,遵循左闭右开原则
print(mylist.count("b")) #统计列表中某个元素出现几次
#排序和反转
a=[1,4,2,3]
print(a)
a.reverse() #将列表所有元素反转
print(a)
a.sort() #将列表所有元素按升序排序
print(a)
a.sort(reverse=True) #将列表所有元素按降序排序
print(a)
#嵌套
schoolNames=[[],[],[]] #有三个元素的空列表,每个元素都是一个空列表
schoolName=[["北京大学","清华大学"],["南开大学","天津大学","天津师范大学"],["山东大学","中国海洋大学"]]
print(schoolName[0][0])
a=len(schoolName[0])
print(a)
#创建一个循环,使其一次输出schoolname中的某个元素中的元素
schoolName=[["北京大学","清华大学"],["南开大学","天津大学","天津师范大学"],["山东大学","中国海洋大学"]]
a=int(input("请输入你想选择的位置(0,1,2):"))
b=0
if a not in [0,1,2]:
print("输入错误,请重新输入")
else:
while b<len(schoolName[a]):
print(schoolName[a][b],end="\t")
b+=1
#创建一个循环,使其将所有元素都依次输出
schoolName=[["北京大学","清华大学"],["南开大学","天津大学","天津师范大学"],["山东大学","中国海洋大学"]]
for i in range(0,3):
c=0
while c<len(schoolName[i]):
print(schoolName[i][c],end="\t")
c+=1
print(" ")
i+=1
#例题:有3个办公室,有8个老师,将这8个老师随机分配到这三个办公室中,并输出某个办公室分别有几人,分别是谁
offices=[[],[],[]]
names=["A","B","C","D","E","F","G","H"]
import random
a=0
while a<len(names):
index=random.randint(0,2)
offices[index].append(names[a])
a+=1
print(offices)
b=int(input("请输入需要查询的办公编号(0,1,2):"))
if b in [0,1,2]:
print("办公室的人数为:%d"%(len(offices[b])))
print("办公室里的人为:",offices[b])
else:
print("输入有误")
#for语句,输出每个办公室有谁
offices=[[],[],[]]
names=["A","B","C","D","E","F","G","H"]
import random
for name in names:
index=random.randint(0,2)
offices[index].append(name)
print(offices)
i=1
for office in offices:
print("办公室%d里的人数为:%d"%(i,len(office)))
i+=1
print("办公室里有:",end="\t")
for name in office:
print(name,end="\t")
print(" ")
print("-"*30)
#作业
#法一:while循环
products=[["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
print("-"*10," 商品列表 ","-"*10)
i=0
while i<len(products):
print(i,end="\t")
print(products[i][0],end="\t")
print(products[i][1],end="\t")
print(" ")
i+=1
print("-"*35)
shopping=[]
m=0
while 1: #无限循环
question="请问您想买点什么?请填商品代码加入购物车,退出请按q"
a=input("%s"%question)
if a!="q":
b=int(a)
shopping.append(products[b])
m+=1
else:
break
print("这是您的购物车,欢迎下次光临")
m=0
while m<len(shopping):
print("-" * 30)
print(shopping[m][0],end="\t")
print(shopping[m][1],end="\n")
m+=1
print("-" * 30)
#法二:for循环
products=[["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
print("-"*10," 商品列表 ","-"*10)
i=0
for product in products:
print(i,end="\t")
print(product[0],end="\t")
print(product[1],end="\t")
print(" ")
print("-"*35)
shopping=[]
m=0
while 1: #无限循环
question="请问您想买点什么?请填商品代码加入购物车,退出请按q"
a=input("%s"%question)
if a!="q":
b=int(a)
shopping.append(products[b])
m+=1
else:
break
print("这是您的购物车,欢迎下次光临")
m=0
while m<len(shopping):
print("-" * 30)
print(shopping[m][0],end="\t")
print(shopping[m][1],end="\n")
m+=1
print("-" * 30)
#元组(tuple)
t=('abcd',786,2.23,'runnoob',70.2)
t1=(1,) #单个元素必须要加逗号
t2=('a','b',['A','B'])
t2[2][0]='X' #元组的元素不可以修改,若元素为列表,则可以修改
print(t2)
tup1=() #创建空元组
tup2=(50) #整型
tup3=(50,)
print(tup3)
print(type(tup3))
tup1=("abc","def",2000,2020,333,444,555)
print(tup1[-1]) #访问最后一个元素
print(tup1[1:5]) #遵循左闭右开进行切片
#增(连结)
tup1=(12,34,56)
tup2=("abc","xyz")
tup=tup1+tup2
print(tup)
#删
tup1=(12,34,56)
print(tup1)
del tup1 #删除了整个元组变量
print("删除后:")
print(tup1)
#改
tup1=(12,34,56) #不允许修改
tup1[0]=100
#tuple() 将其他类型的对象转换成元组
#字典(dict) 字典是无序的对象集合,使用键-值(key-value)存储,具有极快的查找速度
#键盘(key)必须使用不可变类型
#同一个字典中,键(key)必须是唯一的
d={
"Michael":95,"Bob":75,"Tracy":85}
print(d["Michael"])
#字典的定义
info={
"name":"吴彦祖","age":18}
#字典的访问
print(info["name"])
#访问了不存在的键
print(info["gender"]) #直接访问会报错
info={
"name":"吴彦祖","age":18}
print(info.get("gender")) #使用get来访问不存在的键,默认返回None
info={
"name":"吴彦祖","age":18}
print(info.get("gender","m")) #没找到的时候,可以设定默认值
print(info.get("age","20")) #如果找到了值,则默认值不起效
#增
info={
"name":"吴彦祖","age":18}
newID=input("请输入新学号")
info["id"]=newID
print(info["id"])
#删
#del
info={
"name":"吴彦祖","age":18}
print("删除前:%s"%info["name"])
del info["name"] #---删除键和键对应的值,再次访问会报错
print("删除后:%s"%info["name"])
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)
#改
info={
"name":"吴彦祖","age":18}
info["age"]=20
print(info)
#查
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)
#遍历所有的值
info={
"id":1,"name":"吴彦祖","age":18}
for values in info.values():
print(values)
#遍历所有的键值对
info={
"id":1,"name":"吴彦祖","age":18}
for key,values in info.items():
print("key=%s"%key,"values=%s"%values)
#使用枚举函数,同时拿到列表中的下标和元素内容
mylist =["a","b","c","d"]
for i,x in enumerate(mylist):
print(i+1,x)
#集合:类似只存储key的列表,输出格式为{},元素不能重复
s1=set([1,2,3])
print(s1)
s2=set([4,4,5,5,6,6])
print(s2)
s1.update(s2)
print(s1)
s1.add(7)
print(s1)
print(type(s1))
a=s1.pop() #set是无序的,所以不能选择弹出哪个数
print(a)
print(s1)
a=set([1,2,3])
b=set([2,3,4])
print(a&b)
print(a|b)
print(a-b)
#函数
def printinfo():
print("------------------")
print("人生苦短,我用Python")
print("------------------")
#函数的调用
printinfo()
#带参数的函数
def add2Num(a,b):
c=a+b
print(c)
add2Num(11,22)
#带返回值的函数
def add2Num(a,b):
return a+b #通过return返回运算结果
print(add2Num(11,22))
result=add2Num(11,22)
print(result)
#返回多个值的函数
def divid(a,b):
shang = a//b
yushu = a%b
return shang,yushu #多个返回值用逗号分隔
sh,yu=divid(5,2) #需要使用多个值来保存返回内容
print("商:%d余:%d"%(sh,yu))
#练习
#打印一条横线
def printOneline():
print("-"*30)
printOneline()
num=int(input("请问需要打印几条横线:"))
#打印多条横线
def printNline(a):
b=0
while b<a:
printOneline()
b+=1
printNline(num)
#求3个数的和
num1=int(input("请输入第一个数字:"))
num2=int(input("请输入第二个数字:"))
num3=int(input("请输入第三个数字:"))
def sum3Number(a,b,c):
return(a+b+c)
print("他们的总和是:",sum3Number(num1,num2,num3))
#求3个数的平均数
def ave3Number(a,b,c):
sumResult=sum3Number(a,b,c)
aveResult=sumResult/3
return aveResult
print("他们的平均数是:",ave3Number(num1,num2,num3))
#局部变量和全局变量
a= 100
def test1():
global a
a=200 #局部变量优先使用
print("test1--------------修改前:a=%d"%a)
a=300
print("test1--------------修改后:a=%d"%a)
def test2():
a = 500 #不同函数,可以定义相同的名字,彼此无关
print("test1--------------修改前:a=%d"%a)
def test3():
print(a) #没有局部变量,则调用全局变量a
'''
def test4():
print(a) #如果先调用全局变量,再定义一个和全局变量相同名称的变量,该函数将报错
a=400
'''
test1()
test2()
test3()
#文件操作
f = open("test.txt") #打开文件,不加打开模式,默认是只读模式"r",如果该文件不存在,将报错
f.close() #关闭文件
f = open("test.txt","w") #打开文件(w模式:只写入,会覆盖原来文件,文件不存在就新建)
f.close()
f = open("test","a") #打开文件,(a模式,指针将在文件结尾,追加内容,如果文件不存在将新建)
f.close()
#后面加b,表示以二进制打开文件
#r+打开一个文件用于读写,指针放在文件开头
#w+打开一个文件用于读写,如果已存在将覆盖,没有则新建
#a+打开一个文件用于读写,指针放在文件结尾,如果不存在将新建
#后面加b,表示以二进制打开文件
f = open("test.txt","w")
f.write("hello world,i am here!") #将字符串写入
f.close()
#read 读取指定的字符
f=open("test.txt","r")
content= f.read(5) #读文件的前五个字符
print(content)
content= f.read(5) #没有关闭之前,指针仍在上次读取的位置
print(content)
f.close()
#
f=open("test.txt","r")
content=f.readlines() #输出为整个文档,形成一个列表,文档每一行当作列表的一个元素
print(content)
i=1
for temp in content: #输出每一行的内容
print("%d:%s"%(i,temp))
i+=1
f.close()
#
f=open("test.txt","r")
content=f.readline() #第一次出现,读取第一行
print("1:%s"%content)
content=f.readline() #第一次出现,读取第二行
print("2:%s"%content)
f.close()
#os模块(操作系统模块)
'''
import os #引入os模块
os.rename("test.txt","test-pyxuexi.txt") #更改文件名
os.remove("test.txt") #删除文件
os.mkdir("张三") #创建文件夹
os.getcwd() #获取当前目录(路径)
os.chdir(".../") #改变默认目录(路径)
os.listdir("./") #获取目录列表(显示该路径下所有文件)
os.rmdir("张三") #删除文件夹
'''
#异常处理
#捕获异常
try:
print("----------test1---------")
f=open("123test.txt.","r") #只读模式用打开了一个不存在的文件,报错
print("----------test2---------")
except IOError: #文件没有找到,属于IO异常(输入输出异常)
pass #捕获异常后,执行的代码
#
try:
print(num)
except NameError: #变量没有定义属于nameerrro 异常类型想要被捕获,需要一致,
print("产生错误了")
#
try:
print("----------test1---------")
f=open("123test.txt.","r")
print("----------test2---------")
print(num)
except (NameError,IOError): #如果有多种错误,应该把所有可能的错误类型都写入except中
print("产生错误了")
#
try:
print("----------test1---------")
f=open("test123.txt.","r")
f.close()
print("----------test2---------")
print(num)
except(NameError,IOError) as result: #了解错误在哪句代码及原因,当遇到一个错误以后程序将不再往下执行
print("产生错误了")
print(result)
#
try:
print("----------test1---------")
f = open("test.txt.", "r")
f.close()
print("----------test2---------")
print(num)
except Exception as result: #Exception表示所有异常类型
print("发生错误了")
print(result)
#try....finally 和嵌套
#finally一定会执行 except如果发生异常执行
import time #引入time模组
try:
try:
f = open("test.txt", "r")
while 1:
content=f.readline()
if len(content)==0:
break
time.sleep(2) #间隔两秒执行
print(content)
finally:
f.close()
print("文件关闭")
except Exception as result:
print("发生异常")
finally:
f.close()
print("文件关闭")
#1.应用文件操作的相关知识。通过python新建一个文件gushi.txt,选择一首古诗写入文件中。
#2.另写一个函数,读取指定文件gushi.txt,将内容复制到cpoy.txt中,并在控制台输出“复制完毕”
#3.提示:分别定义两个函数,完成读文件和写文件的操作(尽可能完善代码,添加异常处理。)
f=open("gushi.txt","w")
f.write("窗前明月光\n")
f.write("疑是地上霜\n")
f.write("举头望明月\n")
f.write("低头思故乡")
f.close()
def readFile(filename1):
try:
f=open(filename1,"r")
try:
global content #引用全局变量,使原文本的数据得以传输出去
content=f.readlines()
print(content)
finally:
f.close()
except Exception as result:
print("出现报错1:%s"%result)
finally:
f.close()
def writeFile(filename2):
try:
m=open(filename2,"w")
for i in content:
m.write(i)
print("复制完毕")
except Exception as result:
print("出现报错2:%s"%result)
finally:
m.close()
a=input("请输入需要复制的文件:")
b=input("请输入复制拷贝文本的名称:")
readFile(a)
writeFile(b)