Python爬虫:前期准备

修改(开启)文件的访问权限

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("复制完毕")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerryswing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值