Python基础语法

基础常识

保证字体正常

#-*- coding: utf-8 -*-

添加可自动生成相关数据,方便将来查阅

@author:freshman2233
@software:${PRODUCT_NAME}
@file:${NAME}.py
@time:${DATE} ${TIME}

注释

#注释

这是我的第一个python程序


print("hello,world")#这是单行注释

'''
这是一行注释
这是两行注释
'''

变量

#变量
a=5
print("这是变量:",a)

t_007="T007"
print(t_007)

这是变量: 5
T007 

格式化输出

#格式化输出
age=18
print("我的年龄是%d岁"%age)
print("我的名字是%s,我的国籍是%s"%("小张","中国"))

我的年龄是18岁
我的名字是小张,我的国籍是中国 

特殊输出

#特殊输出
print("aaa","bbb","ccc")
print("www","baidu","com",sep=".")
print("hello",end="")
print("world",end="\t")
print("python",end="\n")
print("end")

当print()函数,指定end参数为空字符后,print()函数就不再主动添加换行符了。并且,hello和world之间也不存在任何空格 

aaa bbb ccc
www.baidu.com
helloworld      python
end

输入

#输入
password=input("请输入密码")#默认为字符串类型
print("您刚刚输入的密码是:",password)

请输入密码123456
您刚刚输入的密码是: 123456

 测类别

#测类别
a=10
print(type(a))

<class 'int'>

强制类型转换

#强制类型转换
a=int("123")
print(type(a))
b=a+100
print(b)

<class 'int'>
223

c=int(input("输入数字"))
print(c)

输入数字123456
123456

条件判断

#条件判断
if True:
    print("True")
    print("Answer")
else:
    print("False")
print("end")

True
Answer
end

score=77
if score>=90 and score<=100:
    print("本次考试,等级为A")
elif score>=80 and score<90:
    print("本次考试等级为B")
else:
    print("本次考试,等级为E")

本次考试,等级为E

引入随机数

import random   #引入随机数
x=random.randint(0,2)   #0-2的随机数

循环 

for循环

#for循环
for i in range(5):
    print(i)# 0 1 2 3 4

0
1
2
3
4

for i in range(0,10,3):#从0开始,10结束,每次加3
    print(i)#0 3 6 9

0
3
6
9

for i in range(-10,-100,-30):
    print(i)#-10 -40 -70 -100

-10
-40
-70

name="chengdu"
for x in name:
    print(x,end="\t")

c       h       e       n       g       d       u        

a=["aa","bb","cc","dd"]
for i in range(len(a)):
    print(i,a[i])

0 aa
1 bb
2 cc
3 dd

 while循环

#while循环
i=0
while i<5:
    print("当前是第%d次循环"%(i+1))
    print("i=%d"%i)
    i+=1

当前是第1次循环
i=0
当前是第2次循环
i=1
当前是第3次循环
i=2
当前是第4次循环
i=3
当前是第5次循环
i=4

1-100求和 

#1-100求和-for
sum=0
for i in range(101):
    sum+=i
print(sum)

#1-100求和-while
n=100
sum=0
counter=1
while counter<=n:
    sum+=counter
    counter+=1
print("1到%d的和为:%d"%(n,sum))

5050
1到100的和为:5050 

while中不满足条件执行else 

#while中不满足条件执行else
count=0
while count<5:
    print(count,"小于5")
    count+=1
else:
    print(count,"大于或等于5")

0 小于5
1 小于5
2 小于5
3 小于5
4 小于5
5 大于或等于5

break continue pass

#break continue pass
i=0
while i<10:
    i+=1
    print("-"*30)
    if i==5:
        break   #结束循环
    print(i)

------------------------------
1
------------------------------
2
------------------------------
3
------------------------------
4
------------------------------

i=0
while i<10:
    i+=1
    print("-"*30)
    if i==5:
        continue    #结束本次循环
    print(i)

------------------------------
1
------------------------------
2
------------------------------
3
------------------------------
4
------------------------------
------------------------------
6
------------------------------
7
------------------------------
8
------------------------------
9
------------------------------
10

 homework-剪刀石头布

import random   #引入随机数
x=random.randint(0,2)   #0-2的随机数

print("剪刀0 石头1 布2")
while True:
    try:
        user=int(input("你的输入为:"))
        print("随机生成数字为:%d"%x)
    except ValueError:
        print("Man,learn to type a number")
        continue
    break

if x==user:
    print("平局")
elif (x==0 and user==1)or(x==1 and user==2)or(x==2 and user==0):
    print("用户赢")
else:
    print("电脑赢")

剪刀0 石头1 布2
你的输入为:1
随机生成数字为:1
平局

homework-九九乘法表

#九九乘法表-for
for i in range(1,10,1):
    for j in range(1,10,1):
        if i<j:
            break
        print("%d*%d=%d"%(i,j,i*j),end="\t")
        if i==j:
            print("\n")

1*1=1

2*1=2   2*2=4

3*1=3   3*2=6   3*3=9

4*1=4   4*2=8   4*3=12  4*4=16

5*1=5   5*2=10  5*3=15  5*4=20  5*5=25

6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36

7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49

8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64

9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81

#while
i=1
j=1
n=9
while i<=n:
    j=1
    while j<=n:
        if i<j:
            break
        print("%d*%d=%d"%(i,j,i*j),end="\t")
        if i==j:
            print("\n")
        j+=1
    i+=1

1*1=1

2*1=2   2*2=4

3*1=3   3*2=6   3*3=9

4*1=4   4*2=8   4*3=12  4*4=16

5*1=5   5*2=10  5*3=15  5*4=20  5*5=25

6*1=6   6*2=12  6*3=18  6*4=24  6*5=30  6*6=36

7*1=7   7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49

8*1=8   8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64

9*1=9   9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81

字符串

#字符串
word='字符串'
sentence="这是一个橘子"
paragraph="""
这是一个段落
可以由多行组成
"""

print(word)
print(sentence)
print(paragraph)

字符串

这是一个橘子

这是一个段落

可以由多行组成


' 和"区别(需要使用转义字符\)

#' 和"区别(需要使用转义字符\)
my_str="I'm a student"
print(my_str)
my_str='I\'m a student'
print(my_str)
my_str="Jason said\"I like you\""
print(my_str)
my_str='Jason said"I like you"'
print(my_str)

I'm a student
I'm a student
Jason said"I like you"
Jason said"I like you"

字符串截取[起始位置(取得到):结束位置(取不到):步进值]

#字符串截取[起始位置(取得到):结束位置(取不到):步进值]
str="chengdu"
print(str)
print(str[0])   #c
print(str[0:5]) #cheng
print(str[1:7:2])   #hnd
print(str[:5])  #cheng
print(str[5:])  #du

chengdu
c
cheng
hnd
cheng
du

字符串连接

#字符串连接
print(str+",你好")    #chengdu,你好
print(str*3)    #chengduchengduchengdu

使用转移字符,用r表示直接展示原始字符串,使全部转移字符失效

#使用转移字符,用r表示直接展示原始字符串,使全部转移字符失效
print("hello\nchengdu") #hello
                        #chengdu
print(r"hello\nchengdu")    #hello\nchengdu

hello
chengdu
hello\nchengdu

列表list

  • 列表可以完成大多数集合类的数据结构实现。
  • 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
  • 列表是写在[]之间、用逗号分隔开的元素列表。
  • 列表索引值以0为开始值,-1为从末尾的开始位置。
  • 列表可以使用+操作符进行拼接,使用*表示重复。

列表的定义与打印 

#列表的定义与打印
namelist=[] #定义一个空的列表
 
namelist=["小张","小王","小李"]
print(namelist[0])
print(namelist[1])
print(namelist[2])

小张
小王
小李

列表可以存储混合类型

testlist=[1,"测试"]    #列表可以存储混合类型
print(testlist[0])
print(testlist[1])
print(type(testlist[0]))    #<class 'int'>
print(type(testlist[1]))    #<class 'str'>

1
测试
<class 'int'>
<class 'str'>

遍历列表

namelist=["小张","小王","小李"]
for name in namelist:
    print(name)

小张
小王
小李

 len()可以得到列表的长度

namelist=["小张","小王","小李"]
print(len(namelist))    #len()可以得到列表的长度
length=len(namelist)
i=0
while i<length:
    print(namelist[i])
    i+=1

3
小张
小王
小李

列表list的增删改查

增加: [append]在末尾追加一个元素

#增加: [append]在末尾追加一个元素
namelist=["小张","小王","小李"]
print("-----增加前,名单列表的数据")
for name in namelist:
    print(name)
 
nametemp=input("请输入添加学生的姓名:")
namelist.append(nametemp)   #在末尾追加一个元素
 
print("-----增加后,名单列表的数据")
for name in namelist:
    print(name)

-----增加前,名单列表的数据
小张
小王
小李
请输入添加学生的姓名:小鸡
-----增加后,名单列表的数据
小张
小王
小李
小鸡

增加: [extend]把b列表中的每一个元素,逐一追加到a列表中

#增: [extend]
a=[1,2]
b=[3,4]
a.append(b) #把列表当成一个元素,加到a列表中
print(a)    #[1, 2, [3, 4]]
 
a.extend(b) #把b列表中的每一个元素,逐一追加到a列表中
print(a)    #[1, 2, [3, 4], 3, 4]

[1, 2, [3, 4]]
[1, 2, [3, 4], 3, 4]

增加: [insert]第一个变量表示下标,第二个变量表示对象元素

#增加: [insert]
a=[0,1,2]
a.insert(1,3)   #第一个变量表示下标,第二个变量表示对象元素
print(a)    #[0, 3, 1, 2]

[0, 3, 1, 2]

删  [del]   在指定位置删除一个元素

#删  [del]   [pop]
 
movieName=["加勒比海盗","骇客帝国","第一滴血","指环王","速度与激情","指环王"]
 
print("-----删除前,名单列表的数据")
for name in movieName:
    print(name)
 
del movieName[2]    #在指定位置删除一个元素

print("-----删除后,名单列表的数据")
for name in movieName:
    print(name)

-----删除前,名单列表的数据
加勒比海盗
骇客帝国
第一滴血
指环王
速度与激情
指环王
-----删除后,名单列表的数据
加勒比海盗
骇客帝国
指环王
速度与激情
指环王

删 [pop]弹出末尾最后一个元素

movieName=["加勒比海盗","骇客帝国","第一滴血","指环王","速度与激情","指环王"]
 
print("-----删除前,名单列表的数据")
for name in movieName:
    print(name)
 
movieName.pop() #弹出末尾最后一个元素

print("-----删除后,名单列表的数据")
for name in movieName:
    print(name)

-----删除前,名单列表的数据
加勒比海盗
骇客帝国
第一滴血
指环王
速度与激情
指环王
-----删除后,名单列表的数据
加勒比海盗
骇客帝国
第一滴血
指环王
速度与激情

删  remove 直接删除指定内容的第一个元素

movieName=["加勒比海盗","骇客帝国","第一滴血","指环王","速度与激情","指环王"]
 
print("-----删除前,名单列表的数据")
for name in movieName:
    print(name)

movieName.remove("指环王") #直接删除指定内容的第一个元素

print("-----删除后,名单列表的数据")
for name in movieName:
    print(name)

-----删除前,名单列表的数据
加勒比海盗
骇客帝国
第一滴血
指环王
速度与激情
指环王
-----删除后,名单列表的数据
加勒比海盗
骇客帝国
第一滴血
速度与激情
指环王

改:修改指定下标的内容

#改
namelist=["小张","小王","小李"]
print("-----增加前,名单列表的数据")
for name in namelist:
    print(name)
 
namelist[1]="小红"    #修改指定下标的内容
 
print("-----增加后,名单列表的数据")
for name in namelist:
    print(name)

查:【in ,not in】

#查:【in ,not in】
namelist=["小张","小王","小李"]
findName=input("请输入你要查找的学生姓名:")
if findName in namelist:
    print("在学院名单中找到了相同的名字")
else:
    print("没有找到")

请输入你要查找的学生姓名:小李
在学院名单中找到了相同的名字

查找指定下标范围的元素index , count

#查找指定下标范围的元素
mylist=["a","b","c","a","b"]
 
print(mylist.index("a",1,4)) #可以查找指定下标范围的元素,并返回找到对应数据的下标
 
#print(mylist.index("a",1,3))#范围区间,左闭右开【1,3)
                       #找不到会报错:异常:'a' is not in list
print(mylist.count("c"))  #统计某个元素出现几次

3
1

排序:reverse将列表所有元素反转/sort升序or降序

#排序
a=[1,4,2,3]
print(a)
a.reverse() #将列表所有元素反转
print(a)
 
a.sort()    #升序
print(a)
 
a.sort(reverse=True)    #降序
print(a)

[1, 4, 2, 3]
[3, 2, 4, 1]
[1, 2, 3, 4]
[4, 3, 2, 1]

多维数组

#多维数组
schoolNames=[[],[],[]]  #有3个元素的空列表,每个元素都是一个空列表
schoolName=[["北京大学","清华大学"],["南开大学","天津大学","天津师范大学"],["山东大学"]]
print(schoolName[0][0])

北京大学

homework-8个人随机分到3个办公室

#8个人随机分到3个办公室
import random
office=[[],[],[]]
names=["A","B","C","D","E","F","G","H"]
for name in names:
    index=random.randint(0,2)
    office[index].append(name)
 
i=1
for office in office:
    print("办公室%d 的人数为:%d"%(i,len(office)))
    i+=1
    for name in office:
        print("%s"%name,end="\t")
    print("\n")
    print("-"*20)

办公室1 的人数为:4
A       B       D       E

--------------------
办公室2 的人数为:3
F       G       H

--------------------
办公室3 的人数为:1
C

--------------------

homework-购物车模拟

#购物车模拟
products=[["iphone",6888],["MacPro",14800],["小米6",2499],["Coffee",31],["Book",60],["Nike",699]]
 
print("-"*6+" 商品列表 "+"-"*6)
 
for line in range(5):
    print("%d %s       %d"%(line,products[line][0],products[line][1]))
 
buycar=[]
while True:
    num=input("请输入想买的商品编号(退出请输入q):")
    if num=="q":
        break
    buy=[int(num)]
    buy.extend(products[int(num)])
    print("您当前购买的商品为:")
    print(buy)
    buycar.append(buy)
    print("您的购物车中有:")
    print(buycar)
    print("-"*20)
    print("\n")
 
print("您购买的商品列表为:")
print("-"*6+" 商品列表 "+"-"*6)
 
for i in range(len(buycar)):
    #print(type(i))
    print("%d %s       %d"%(buycar[i][0],buycar[i][1],buycar[i][2]))
    sum=0
    for j in range(len(buycar)):
        sum+=buycar[j][2]
print("物品总数为:%d\t总金额为%d"%(len(buycar),sum))

------ 商品列表 ------
0 iphone       6888
1 MacPro       14800
2 小米6       2499
3 Coffee       31
4 Book       60
请输入想买的商品编号(退出请输入q):0
您当前购买的商品为:
[0, 'iphone', 6888]
您的购物车中有:
[[0, 'iphone', 6888]]
--------------------


请输入想买的商品编号(退出请输入q):1
您当前购买的商品为:
[1, 'MacPro', 14800]
您的购物车中有:
[[0, 'iphone', 6888], [1, 'MacPro', 14800]]
--------------------


请输入想买的商品编号(退出请输入q):2
您当前购买的商品为:
[2, '小米6', 2499]
您的购物车中有:
[[0, 'iphone', 6888], [1, 'MacPro', 14800], [2, '小米6', 2499]]
--------------------


请输入想买的商品编号(退出请输入q):4
您当前购买的商品为:
[4, 'Book', 60]
您的购物车中有:
[[0, 'iphone', 6888], [1, 'MacPro', 14800], [2, '小米6', 2499], [4, 'Book', 60]]
--------------------


请输入想买的商品编号(退出请输入q):q
您购买的商品列表为:
------ 商品列表 ------
0 iphone       6888
1 MacPro       14800
2 小米6       2499
4 Book       60
物品总数为:4    总金额为24247

函数

函数的定义

def printinfo():
    print("---------------------")
    print("人生苦短,我用python")
    print("---------------------")

函数的调用

def printinfo():
    print("---------------------")
    print("人生苦短,我用python")
    print("---------------------")
printinfo()

---------------------
人生苦短,我用python
---------------------

函数的类型

带参数的函数

def add2Num(a,b):
    c=a+b
    print(c)
 
add2Num(11,22)

33

带返回值的参数

#带返回值的参数
def add2Num(a,b):
    return a+b  #通过return来返回运行结果
 
result=add2Num(11,22)
print(result)
print(add2Num(11,22))

33
33

返回多个值的函数

#返回多个值的函数
def divid(a,b):
    shang=a//b
    yushu=a%b
    return shang,yushu  #多个返回值用逗号分割
 
sh,yu=divid(5,2)
 
print("商:%d,余数:%d"%(sh,yu))

商:2,余数:1

课堂练习:

1.写一个打印一条横线的函数。(提示:横线是若干个"-"组成)

2.写一个函数,可以通过输入的参数,打印出自定义行数的横线。(提示:调用上面的函数)

3.写一个函数求三个数的和

4.写一个函数求三个数的平均值(提示:调用上面的函数)

【建议每题5分钟以内】

我的答案:

#myself
#第一题
def line():
    print("-"*20)
line()

--------------------

#第二题
def line():
    print("-"*20)
def severalLine(a):
    for i in range(a):
        line()
 
a=int(input("请输入要打印的行数:"))
severalLine(a)

请输入要打印的行数:5
--------------------
--------------------
--------------------
--------------------
--------------------

#第三题
def ThreeNumSum(a,b,c):
    return a+b+c
a=int(input("请输入第1个数:"))
b=int(input("请输入第2个数:"))
c=int(input("请输入第3个数:"))
sum=ThreeNumSum(a,b,c)
print("3个数之和为%d"%sum)

 请输入第1个数:15
请输入第2个数:25
请输入第3个数:35
3个数之和为75

#第四题
def ThreeNumSum(a,b,c):
    return a+b+c
a=int(input("请输入第1个数:"))
b=int(input("请输入第2个数:"))
c=int(input("请输入第3个数:"))
average=ThreeNumSum(a,b,c)/3
print("3个数的平均值为%d"%average)

请输入第1个数:15
请输入第2个数:25
请输入第3个数:35
3个数的平均值为25

标准答案:

#teacher
#第一题
#打印一条线
def printOneLine():
    print("-"*30)
#第二题
#打印几条线
def printNumLine(num):
    i=0
    while i<num:
        printOneLine()
        i+=1
#第三题
#求3个数的和
def sum3Number(a,b,c):
    return a+b+c
#第四题
#完成3个数的平均值计算
def average3Number(a,b,c):
    sumResult=sum3Number(10,20,30)
    aveResult=sumResult/3.0
    return aveResult
 
result=average3Number(10,20,30)
print("平均值为:%d"%result)

局部变量和全局变量

局部变量

#局部变量和全局变量
#局部变量
def test1():
    a=300   #局部变量
    print("test1----修改前:a=%d"%a)
    a=100
    print("test1----修改后:a=%d"%a)
 
def test2():
    a=500   #不同的函数可以定义相同的名字,彼此无关
    print("test2----修改前:a=%d"%a)
 
test1()
test2()

test1----修改前:a=300
test1----修改后:a=100
test2----修改前:a=500

全局变量

#全局变量
a=100   #全局变量
 
def test1():
    print("a=%d"%a)
 
def test2():
    print("a=%d"%a)
 
test1()
test2()

a=100
a=100

 全局变量与局部变量相同名字

#全局变量与局部变量相同名字
 
def test1():
    a=300   #局部变量
    print("test1----修改前:a=%d"%a)
    a=200
    print("test1----修改后:a=%d"%a)
 
def test2():
    print("test2----a=%d"%a)    #没有局部变量,默认使用全局变量
 
test1()
test2()

test1----修改前:a=300
test1----修改后:a=200
test2----a=500

在函数中可以改变全局变量

#在函数中改变全局变量
a=100
def test1():
    global a    #声明全局变量在函数中的标识符
    print("test1----修改前:a=%d"%a)
    a=200
    print("test1----修改后:a=%d"%a)
 
def test2():
    print("test2----a=%d"%a)    #没有局部变量,默认使用全局变量
 
test1()
test2()

test1----修改前:a=100
test1----修改后:a=200
test2----a=200

文件操作

打开文件

#打开文件
f=open("test.txt","w")  #w模式(写模式),文件不存在就新建

写入字符串

#打开文件
f=open("test.txt","w")
#写入字符串
f.write("hello world,i am here!")   #将字符串写入文件中

关闭文件

#打开文件
f=open("test.txt","w")

#写入字符串
f.write("hello world,i am here!")

#关闭文件
f.close()

访问内容

  • r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
  • w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
  • rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
  • wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
  • ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。r+打开一个文件用于读写。文件指针将会放在文件的开头。

read方法,读取指定的字符,开始时指针在文件头部,每执行一次向后移动指定字符数

工程文件目录下test.txt文件内容为

hello world,i am here!--1
hello world,i am here!--2
hello world,i am here!--3
hello world,i am here!--4
hello world,i am here!--5

#read方法,读取指定的字符,开始时指针在文件头部,每执行一次向后移动指定字符数
f=open("test.txt","r")

content=f.read(5)

print(content)

content=f.read(10)

print(content)

f.close()

hello
 world,i a

readlines一次性读取全部文件为列表,每行一个字符串元素

#一次性读取全部文件为列表,每行一个字符串元素
f=open("test.txt","r")

content=f.readlines()

print(content)

['hello world,i am here!--1\n', 'hello world,i am here!--2\n', 'hello world,i am here!--3\n', 'hello world,i am here!--4\n', 'hello world,i am here!--5']

#一次性读取全部文件为列表,每行一个字符串元素
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()

1:hello world,i am here!--1

2:hello world,i am here!--2

3:hello world,i am here!--3

4:hello world,i am here!--4

5:hello world,i am here!--5

readline一次性读取一行

#readline一次性读取一行
f=open("test.txt","r")

content=f.readline()
print("1:%s"%content)

content=f.readline()
print("2:%s"%content)

f.close()

1:hello world,i am here!--1

2:hello world,i am here!--2

文件的相关操作

有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能5.3.1

rename文件重命名

os模块中的rename()可以完成对文件的重命名操作rename(需要修改的文件名,新的文件名)

import os
os.rename("test.txt","test1.txt")

test.txt改名为test1.txt

remove删除文件

os模块中的remove()可以完成对文件的删除操作remove(待删除的文件名)

import os
os.remove("test.txt")

mkdir创建文件夹

import os
os.mkdir("张三")

getcwd获取当前目录

import os
os.getcwd()
print ("当前工作目录:%s" % os.getcwd())

当前工作目录:C:\Users\93983\source\repos\0106-python基础语法

chdir改变默认目录 

import os

path = "C:/Users/93983/source/repos/0106-python基础语法/张三"

# 查看当前工作目录
retval = os.getcwd()
print ("当前工作目录为 %s" % retval)

# 修改当前工作目录
os.chdir( path )

# 查看修改后的工作目录
retval = os.getcwd()

print ("目录修改成功 %s" % retval)

 当前工作目录为 C:\Users\93983\source\repos\0106-python基础语法
目录修改成功 C:\Users\93983\source\repos\0106-python基础语法\张三

listdir获取目录列表

import os
os.listdir("./")

当前工作目录:['.vs', '0106-python基础语法.pyproj', '0106-python基础语法.sln', 'test.txt', '_0106_python基础语法.py', '张三'] 

rmdir删除文件夹

import os
os.rmdir("张三")

错误与异常

捕获异常

try:
    print("-----test----1")
    f=open("123.txt","r")   #用只读模式打开一个不存在的文件,报错
    print("-----test----2") #这句代码不会执行


except IOError: #文件没找到,属于IO异常(输入输出异常)
    pass    #捕获异常后,执行的代码

-----test----1

异常类型一致

try:
    print(num)
#except IOError:    #异常类型想要被捕获,需要一致
except NameError:
    print("产生错误了")

产生错误了

获取错误类型

try:
    print("-----test----1")
    f=open("123.txt","r")   #用只读模式打开一个不存在的文件,报错
    print("-----test----2")

    print(num)

except (NameError,IOError) as result: #将肯产生的所有异常类型,都放到下面的小括号中
    print("产生错误了")
    print(result)

-----test----1
产生错误了
[Errno 2] No such file or directory: '123.txt'

捕获所有异常

try:
    print("-----test----1")
    f=open("123.txt","r")   
    print("-----test----2")

    print(num)
except Exception as result: #Exception可以承接任何异常
    print("产生错误了")
    print(result)

-----test----1
产生错误了
[Errno 2] No such file or directory: '123.txt'

try finally 和嵌套

test.txt内容

床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。

import time
try:
    f=open("test.txt","r")

    try:
        while True:
            content=f.readline()
            if len(content)==0:
                break
            time.sleep(2)
            print(content)
    finally:
        f.close()
        print("文件关闭")

except Exception as result:
    print("发生异常")
finally:
    print("文件结束")

文件关闭
发生异常
文件结束

错误原因:Unicode解码错误:Message='gbk' codec can't decode byte 0x80 in position 36: illegal multibyte sequence

解决方法:后面加一个,encoding='UTF-8'。

import time
try:
    f=open("test.txt","r",encoding='UTF-8')

    try:
        while True:
            content=f.readline()
            if len(content)==0:
                break
            time.sleep(2)
            print(content)
    finally:
        f.close()
        print("文件关闭")

except Exception as result:
    print("发生异常")
finally:
    print("文件结束")

床前明月光,

疑似地上霜。

举头望明月,

低头思故乡。
文件关闭
文件结束

作业:古诗

1.应用文件操作的相关知识,通过Python新建一个文件gushi.txt,选择一首古诗写入文件中

⒉.另外写一个函数,读取指定文件gushi.txt,将内容复制到copy.txt中,并在控制台输出"复制完毕"。

3.提示:分别定义两个函数,完成读文件和写文件的操作

尽可能完善代码,添加异常处理。

写古诗

#写古诗
import os
f=open("gushi.txt","w")
f.write("床前明月光,\r疑似地上霜。\r举头望明月,\r低头思故乡。")
f.close()
\n回车,光标在下一行
\r换行,光标在上一行

gushi.txt中内容为

床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。

复制古诗

#写古诗
import os
f=open("gushi.txt","w")
f.write("床前明月光,\r疑似地上霜。\r举头望明月,\r低头思故乡。")
f.close()

#复制古诗
f=open("copy.txt","w")
g=open("gushi.txt","r")

content=g.readlines()

for temp in content:
  f.write("%s"%temp)
    
g.close()
f.close()
    
print("复制完成")

复制完成

copy.txt中内容为

床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。

 读古诗

#写古诗
import os
f=open("gushi.txt","w")
f.write("床前明月光,\r疑似地上霜。\r举头望明月,\r低头思故乡。")
f.close()


#读古诗
def readGushi(Name):
  f=open("%s"%Name,"r")
  content=f.readlines()

  for temp in content:
    print("%s"%temp,end="")
  f.close()

Name=input("请输入你想打开的文件名字:\n")
readGushi(Name)

请输入你想打开的文件名字:
gushi.txt
床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。

写古诗

#读古诗
def readGushi(Name):
  f=open("%s"%Name,"r")
  content=f.readlines()

  for temp in content:
    print("%s"%temp,end="")
  f.close()

#写古诗
def writeGushi(Name,content):
    f=open("%s"%Name,"w")
    f.write("%s"%content)
    f.close()

Name=input("请输入你想创作的古诗的文件名(含后缀):\n")
content=input(r"请输入古诗:")
writeGushi(Name,content)
readGushi(Name)

请输入你想创作的古诗的文件名(含后缀):
123.txt
请输入古诗:123,456
123,456

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值