大一上学期Python大作业:
简述:
一. python turtle 库绘图,并实现动图效果
(1)篮球召唤阵
(2)铁山靠及打球
(3)哥哥投篮
(4)对鸽鸽的真心
二. 爬虫爬取鸡哥图片
(1)爬取图片
图片展示:
温馨提示:#输入0:篮球召唤阵、铁山靠和打篮球,输入1:爬虫,
代码展示:
import turtle as t
import random as ra
import warnings
import time
import datetime
import re
import os
import requests
from bs4 import BeautifulSoup
#输入0:篮球召唤阵、铁山靠和打篮球,输入1:爬虫,
warnings.filterwarnings('ignore')
ys=['red','orange','yellow','green','blue','cyan','purple','gold','pink','peru']
c=eval(input(''))
def y():#随机生成颜色
return ra.choice(ys)
def mb():#开始记录
t.penup()
t.home()
t.begin_poly()
def me(pn):#结束
t.end_poly()
poly = t.get_poly()
t.register_shape(pn, poly)
def xl(p):#模拟球的反弹效果
for i in range(p):
a.fd(i/25)
for i in range(p-25):
a.bk(p/25-1-i/30)
def pq():#拍球
a.showturtle()
for i in range(2):
for i in range(100):
a.fd(i/25)
for i in range(100):
a.bk(4-i/25-0.13)
def yq():#运球
a.showturtle()
for i in range(2):
a.lt(45)
for i in range(118):
a.fd(i/25)
a.lt(90)
jg.bk(610)
for i in range(118):
a.fd(118/25-i/25)
for i in range(118):
a.bk(i/25)
a.lt(90)
jg.fd(610)
for i in range(118):
a.fd(118/25-i/25)
a.left(135)
def yl():#投球
a.hideturtle()
a.left(161)
a.showturtle()
for i in range(110):
if i<=50:
a.fd(7-i/50)
a.right(1)
else:
a.fd(5+i/50)
a.right(1)
a.right(50)
xl(135)
xl(118)
a.forward(100)
a.hideturtle()
a.home()
a.showturtle()
def f(a,b,y=10):#画箭,a,b为箭尖坐标
global l
l=y
t.penup()
t.goto(a,b)
t.pendown()
t.pencolor("pink")#画半颗爱心
t.fillcolor("pink")
t.begin_fill()
t.fd(4*y)
t.circle(2*y,180)
t.right(135)
t.penup()
t.fd(8.5*y)
t.pensize(0.9*y)
t.pencolor('NavajoWhite3')
for i in range(3):#画箭羽
t.penup()
t.fd(1.5*y)
t.pendown()
t.left(45)
for z in range(2):
t.fd(3*y)
t.bk(3*y)
t.right(90)
t.left(135)
t.pensize(0.6*y)#画箭体
t.pencolor('brown4')
t.bk(13*y)
t.left(45)
t.pencolor("pink")#画另外半颗爱心
t.fillcolor("pink")
t.pensize(0.1*y)
t.circle(2*y,180)
t.fd(4*y)
t.end_fill()
def z(x,m,z):#画内层爱心,x为距离,m为大小,z为颜色, x+y应为4*y
t.penup()
t.bk(x)
t.left(90)
t.fd(x)
t.fillcolor(z)
t.begin_fill()
t.fd(m)
t.circle(m/2,180)
t.right(90)
t.circle(m/2,180)
t.fd(m)
t.end_fill()
t.penup()
t.fd(x)
t.left(90)
t.bk(x)
t.right(90)
z(y,3*y,'red')
z(2*y,2*y,'red3')
z(3*y,y,'red4')
t.left(90)
def il(a,b,c,d,e):#打印文字,a,b为坐标,c为颜色,d为内容,e为大小
t.penup()
t.goto(a,b)
t.color(c)
write=t.write(d,font=('宋体',e,'normal'))
def gw(n):#画鸡哥时回到原位
t.penup()
t.goto(n)
t.pendown()
if c==0:#0篮球召唤阵、铁山靠和打篮球
t.hideturtle()
t.speed(0)
#os.startfile(r'shajilang.mp3')#打开同文件夹名为shajilang.mp3的音乐
t.screensize(bg='black')#篮球召唤阵
mb()#画篮球(始)
t.hideturtle()
t.right(90)
t.fd(30)
t.left(90)
t.circle(30)
t.left(90)
t.fd(60)
t.left(90)
for i in range(2):
t.circle(30,45)
t.left(90)
t.circle(-30,90)
t.left(90)
t.circle(30,45)
t.circle(30,90)
t.left(90)
t.fd(60)
me('a')#画篮球(终)
tl=[]
for i in range(6):#六个篮球
tl.append(t.Turtle(shape='a'))
for i in range(6):
tl[i].speed(0)
tl[i].shapesize(1,1,2)
tl[i].fillcolor('peru')
tl[i].shape("a")
tl[i].right(60*i)
tl[i].penup()
tl[i].pencolor(ys[i])
for i in range(6):
for u in range(25):
tl[i].fd(16)
for i in range(6):
tl[i].rt(150)
tl[i].fillcolor(y())
for i in range(6):
tl[i].pendown()
for i in range(70):
for o in range(6):
tl[o].fd(9.94)
for i in range(6):
tl[i].right(60)
tl[i].fillcolor(y())
for i in range(60):
for o in range(6):
tl[o].circle(-400,1)
for i in range(30):
for o in range(6):
tl[o].circle(-400,1)
tl[o].fillcolor(y())
for i in range(6):
tl[i].lt(60)
tl[i].fillcolor(y())
for i in range(70):
for o in range(6):
tl[o].bk(9.94)
for i in range(6):
tl[i].pu()
tl[i].home()
tl[i].pendown()
for i in range(6):
tl[i].shapesize(1, 1, 1)
tl[i].right(60*i-30)
tl[i].penup()
tl[i].fd(200)
tl[i].pendown()
for i in range(6):
tl[i].rt(150)
tl[i].fillcolor(y())
for i in range(35):
for o in range(6):
tl[o].fd(9.94)
for i in range(6):
tl[i].right(60)
tl[i].fillcolor(y())
for i in range(60):
for o in range(6):
tl[o].circle(-200,1)
for i in range(6):
tl[i].pu()
tl[i].home()
tl[i].pendown()
mb()#画第一张鸡哥(始)
t.right(90)
t.right(15)
t.fd(61)
t.right(45)
t.fd(61)
t.right(10)
t.fd(61)
t.left(60)
t.fd(17)
t.right(70)
t.fd(8)
t.right(100)
t.fd(29)
t.right(90)
t.fd(10)
t.left(20)
t.fd(45)
t.left(25)
t.forward(65)
t.left(55)
t.fd(28)
t.left(35)
t.fd(28)
t.left(37)
t.fd(55)
t.left(5)
t.fd(21)
t.right(90)
t.forward(29)
t.right(135)
t.fd(21)
t.left(42)
t.fd(67)
t.right(20)
t.fd(62)
t.left(78)
t.forward(25)
t.right(35)
t.fd(12)
t.right(60)
t.fd(49)
t.right(30)
t.fd(21)
t.left(100)
t.fd(17)
t.right(85)
t.fd(30)
t.rt(110)
t.fd(8)
t.lt(90)
t.fd(14)
t.rt(80)
t.fd(20)
t.rt(65)
t.fd(20)
t.lt(89)
t.fd(31)
t.rt(45)
t.fd(28)
t.rt(30)
t.fd(33)
t.rt(60)
t.fd(8)
t.rt(18)
t.fd(25)
t.rt(90)
t.fd(45)
t.rt(45)
t.fd(30)
t.lt(105)
t.fd(7)
t.lt(75)
t.fd(29)
t.rt(90)
t.fd(31)
t.lt(80)
t.fd(7)
t.lt(100)
t.fd(36)
t.rt(45)
t.fd(42)
t.rt(90)
t.fd(26)
me('jg')#画第一张鸡哥(终)
mb()#画地板(始)
t.left(90)
t.bk(2100)
me('d')#画地板(终)
mb()#画篮筐(始)
t.fd(250)
t.bk(30)
t.right(90)
t.fd(180)
t.bk(10)
t.left(100)
t.fd(100)
t.left(80)
t.forward(80)
t.left(80)
t.forward(100)
t.right(80)
t.fd(55)
me('b')#画篮筐(终)
t.clearscreen()
t.hideturtle()
jg=t.Pen()
jg.shapesize(2, 2, 2)
jg.hideturtle()
jg.penup()
jg.goto(-80,30)
jg.left(180)
jg.shape("jg")
jg.pencolor('black')
jg.fillcolor('white')
jg.showturtle()
jg.speed(0.6)
time.sleep(0.7)
for i in range(2):#铁山靠
jg.right(30)
jg.fd(150)
jg.bk(150)
jg.left(30)
jg.fd(150)
jg.bk(150)
jg.speed(0.6)
d=t.Pen()#地板
d.hideturtle()
d.penup()
d.goto(3000,-222)
d.shape("d")
d.pencolor('black')
d.fillcolor('white')
d.showturtle()
d.bk(2000)
jg.fd(500)
jg.bk(400)
a=t.Pen()#篮球
a.penup()
a.hideturtle()
a.shapesize(1, 1, 1)
a.fillcolor('peru')
a.shape("a")
a.right(90)
a.pencolor('black')
b=t.Pen()#篮筐
b.penup()
b.hideturtle()
b.shapesize(1, 1, 1)
b.fillcolor('white')
b.shape("b")
b.pencolor('black')
b.penup()
b.goto(700,400)
b.pendown()
yq()
jg.hideturtle()
t.speed(0)#画第二张鸡哥(始)
t.pendown()
t.pencolor('white')
t.fd(30)
t.left(90)
t.pencolor('black')
t.circle(30)#球
t.fd(25)
t.left(120)
t.fd(20)
t.right(120)
t.circle(-15,90)
t.fd(5)
t.circle(-5,90)
t.right(17)
t.fd(29)
t.bk(34)
t.right(93)
t.fd(100)
t.rt(20)
t.fd(50)
t.lt(15)
t.fd(30)
c=t.pos()
t.lt(150)
t.fd(15)
t.rt(40)
t.fd(25)
t.rt(10)
t.fd(150)#背带
t.rt(180)
t.fd(90)
t.rt(5)
t.fd(20)
t.rt(5)
t.fd(20)
t.rt(60)
t.fd(10)
t.rt(30)
t.fd(85)#手
t.penup()
t.goto(c)
t.pendown()
t.rt(180)
t.fd(10)
d=t.pos()
t.lt(150)
t.fd(15)
t.rt(40)
t.fd(25)
t.rt(10)
t.fd(150)
t.penup()
t.goto(d)
t.rt(90)
t.pendown()
t.fd(20)
t.rt(77)
t.fd(15)
t.rt(40)
t.fd(10)
t.lt(35)
t.fd(20)
k=t.pos()
t.lt(110)
t.fd(10)
t.lt(80)
t.fd(30)
gw(k)
t.rt(190+60)
t.fd(20)
t.lt(60)
t.fd(10)
t.lt(10)
t.circle(18,80)
t.fd(20)
t.lt(25)
t.fd(10)
t.lt(25)
t.fd(10)
td=t.pos()#头顶
t.lt(48)
t.fd(20)
t.lt(90)
t.fd(5)
t.rt(90)
t.fd(10)
t.lt(90)
t.fd(20)
gw(td)
t.rt(180)
t.rt(25)
t.fd(10)
t.rt(25)
t.fd(10)
t.lt(60)
t.fd(20)
t.circle(18,80)
t.rt(10)
t.fd(10)
t.lt(60)
t.fd(20)
zsj=t.pos()
t.lt(70)
t.fd(10)
t.lt(20)
t.fd(10)
for i in range(3):
t.rt(23)
t.fd(8)
gw(zsj)
t.rt(90)
t.fd(7)
t.lt(25)
t.fd(30)
zcl=t.pos()
t.rt(85)
t.fd(30)
ddk=t.pos()
t.lt(110)
t.fd(10)
for i in range(4):
t.rt(10)
t.fd(10)
t.rt(10)
t.fd(140)
gw(ddk)
t.rt(42)
t.fd(20)
ddk=t.pos()
t.lt(90)
t.fd(10)
for i in range(4):
t.rt(10)
t.fd(10)
t.rt(10)
t.fd(130)
sbs=t.pos()
gw(ddk)
t.rt(25)
t.fd(20)
for i in range(5):
t.lt(3)
t.fd(45)
t.lt(30)
t.fd(25)
t.lt(45)
t.fd(8)
t.lt(90)
t.fd(8)
t.lt(45)
t.fd(18)
t.rt(160)
t.fd(9)
t.lt(90)
t.fd(9)
t.lt(90)
t.fd(12)
t.rt(10)
t.fd(7)
t.rt(80)
for i in range(5):
t.lt(10)
t.fd(35)
ys=t.pos()
il(-700,-87.53,'black','练习时长两年半的右手→',20)
gw(ys)
t.bk(50)
for i in range(5):
t.rt(3)
t.bk(10)
#上半身结束
t.rt(90)
t.fd(15)
sbs=t.pos()
t.fd(15)
t.lt(30)
t.fd(75)
t.lt(10)
t.fd(65)
gw(sbs)
t.rt(105)
t.fd(50)
t.lt(10)
t.fd(35)
t.lt(10)
t.fd(20)
for i in range(5):
t.rt(2)
t.fd(22)
t.fd(50)
#左下角
t.rt(7)
t.fd(38)
t.lt(100)
t.fd(40)
t.lt(100)
t.fd(30)
t.rt(10)
t.fd(17)
t.lt(90)
t.fd(27)
t.bk(27)
t.rt(90)
#鞋子
t.rt(35)
for i in range(5):
t.lt(8)
t.fd(15)
t.rt(15)
t.fd(20)
t.lt(30)
t.fd(10)
t.rt(50)
t.fd(30)
t.rt(45)
t.fd(25)
t.rt(70)
t.fd(30)
t.rt(30)
t.fd(35)
t.rt(20)
t.fd(15)
t.lt(90)
t.fd(5)
t.rt(70)
t.fd(30)
t.rt(15)
t.fd(35)
#右下角
t.fd(30)
t.lt(70)
t.fd(50)
t.lt(45)
t.circle(15,120)
t.fd(19)
t.rt(60)
t.fd(10)
t.lt(100)
t.fd(35)
t.bk(35)
t.rt(100)
t.fd(90)
t.lt(16)
t.fd(168)
gw(zcl)
t.rt(183)
t.fd(25)
t.lt(95)
t.fd(30)
t.lt(30)
t.fd(40)
gw(zsj)
t.rt(30)
t.penup()
t.fd(30)
t.pendown()
print(t.pos())
il(-205.95,110.16,'black','答',40)
t.penup()#画第二张鸡哥(终)
pq()#开始拍球
b.showturtle()
yl()#投球
time.sleep(1)
t.clearscreen()
t.hideturtle()
t.speed(0)
f(-100,0,20)#画箭
f(l-100,8*l,17)
f(15*l-100,5*l,14)
il(-270-5*l,-120-7*l,'green','只为真爱',70+5*l)
il(190-5*l,-320-6*l,'red','''by: 鸡你太美小组
''',40+2*l)
time=datetime.datetime.today()#获取时间
il(190-5*l,-300-5*l,'red','-'+str(time)[:19],15+l)#打印时间
t.done()
if c==1:#1爬虫
wjjm=input('请输入想保存至那个文件夹:')#例如: D://test
#os.startfile(r'kaituan.mp3')#打开同文件夹名为kaituan.mp3的音乐
url='https://cn.bing.com/images/search?q=蔡徐坤鸡哥图片&qs=n&form=QBIR&sp=-1&pq=蔡徐坤鸡哥图片&sc=0-7&cvid=F9190048D6894D328875918A12BAC96F&ghsh=0&ghacc=0&first=1&tsc=ImageHoverTitle'
head = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.56'}
os.chdir(wjjm)
Img = re.compile(r'img.*src="(.*?)"')#正则匹配图片
datalist = []
response = requests.get(url, headers=head)
html = response.text
soup = BeautifulSoup(html, "html.parser")
data = []
for item in soup.find_all('img', src=""):
item = str(item)
picture = re.findall(Img, item)
for b in picture:
data.append(b)
datalist.append(data[-1])
print(len(datalist))#打印保存图片数目
i=0
for m in datalist:
ri = requests.get(m)
bt = ri.content
i+=1
with open("jgtp{}.jpg".format(i), "wb") as f:
f.write(bt)
最后强调:我们都是真iKun,不喜勿喷。