python学习笔记,快速了解上手python,代码+注释+例题

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)

























































你可能感兴趣的:(python,数据类型)