python练习
01 | turtle库
绘制一个正方形
import turtle
turtle.pensize(5)
turtle.color('orange')
i = 0
while i < 4:
turtle.forward(200)
turtle.right(90)
i += 1
turtle.mainloop()
02 | 利用input()实现简单计算
a = float(input('请输入第一个数:'))
b = float(input('请输入第二个数:'))
print('%0.2f + %0.2f = %0.2f' % (a,b,a + b))
03 | 基础函数
# 1.查看数据类型type()
a = 30.02
b = 'dfsfs'
print('a的数据类型是%s'% (type(a)))
print('b的数据类型是%s'% (type(b)))
# 2.改变数据类型
a = int(a)
print('a的数据类型是%s'% (type(a)))
# 3.input()获取键盘输入
a = float(input('第一个数:'))
b = float(input('第二个数:'))
print('两数之和为%.2f' % (a + b))
03 | 字符串 / list / tuple / dictionray / 集合
# 1.字符串
a = 'hello, world!'
a += 'hello world' # 拼接
a *= 3 # 打印三个
a1 = a[2:5] # 切片操作
a_len = len(a) # 计算长度
a_type = a.isalpha()# 查询类型
# 2.tuple
a = (1,2,3,45,53)
'''
AttributeError: 'tuple' object has no attribute 'append'
报错,tuple不可改变
'''
a.append('23dsa')
# 3.list
a = [1,2,3,45,53]
a.append(22)
a.remove(2)
a.insert(2,'SADAS') #在第三个位置插入
print(a)
# 4.列表生成器
a = [x for x in range(2,10)]
print(a)
b = [x + y for x in range(1,5) for y in range(6,10)]
print(b)
c = [x + y for x in '132435' for y in 'ferfds']
print(c)
# 5.集合
set = {1, 2, 3, 3, 3, 2}
set.add(22)
set.remove(3) # 删除所有3
print(set)
04 | 函数定义 / 嵌套 / 调用
def data():
a = 'hello world'
# Python中可以在函数内部再定义函数
def data1():
b = True
print(a)
print(b)
print(c)
data1() # 嵌套函数要调用时,要在父函数里面调用
if __name__ == '__main__': # 调用全局变量
c = 100
data()
# 03 | 在list中增减元素
```python
list = [1,4,35,65,45]
# 增加元素
list.append(2)
list.insert(100,200)
# 删除
list.remove(35)
# 删除指定位置
list.pop(0)
# 切片
list[1:3]
# 排序
list.sort(reverse=True) # 倒序
05 | tuple 转换list
tuple1 = ('tuple','list',1,3,5)
# 转换list
tuple1 = list(tuple1)
# 新增值
tuple1[0] = 'value'
print(tuple1)
06 | 集合的基本操作
import numpy as np
random1 = np.random.randint(1,50,10)
set = set(random1)
set.add(100)
print(set)
set.discard(5)
print(set)
07 | 写一个跑马灯脚本
import time
def run():
content = '这是跑马灯哔哔哔哔哔……'
while True:
print(content)
time.sleep(0.2)
content = content[1:] + content[0]
if '__name__' == '__main__':
run()
08 | 生成一个长度为4的随机验证码
import random
def code():
password = 'asfdsfdsf214dsfsd23s5435d6fd65a3654fdfdsfd534543ddsw43534qee4353cfds4saddsqfdgd324325ewdsfdsfsg435esfdsf'
number = 0
passcode = ''
while True:
i = random.randint(0, len(password))
get = password[i]
passcode += get
number += 1
if number == 4:
break
print(passcode)
code()
09 | 写一个时钟
import time
class Clock():
def __init__(self,h,m,s):
self.h = h
self.m = m
self.s = s
def run(self):
self.s += 1
if self.s == 60:
self.s = 0
self.m += 1
if self.m == 60:
self.m = 0
self.h += 1
if self.h == 24:
self.h = 0
def show(self):
return('%d:%d:%d' % (self.h,self.m,self.s))
time_now = Clock(15,22,11)
while True:
print(time_now.show())
time.sleep(1)
time_now.run()
10.webbrowser
# 导入webbrowser模块
import webbrowser
#输入需要打开的页面,可以多个页面
webbrowser.open('https://blog.csdn.net/weixin_52730784?spm=1000.2115.3001.5343')
11.| 爬取有道词典
```python
# 导入urllib库
import urllib.request
import urllib.parse
import json
while True: # 循环翻译
content = input('输入内容,输入x结束):')
# 结束条件
if content == 'x':
break
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' # 选择要爬取的网页,上面找过了
'''
加上head,减少被发现的概率。User Agent是网站设置的一种反爬策略。
不同的浏览器访问,会有不同的User Agent,随机使用不同的ser Agent可以避免被识别爬虫
'''
head = {}
head['User - Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
# 伪装计算机提交翻译申请(这些内容可以在F12-Network-transform文件-header找到)
data = {}
data['type'] = 'AUTO'
data['i'] = content
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom:'] = 'fanyi.web'
data['ue'] = 'UTF-8'
data['typoResult'] = 'true'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
# 解码
html = response.read().decode('utf-8')
paper = json.loads(html)
# 打印翻译结果
print("翻译结果: %s" % (paper['translateResult'][0][0]['tgt']))
12.GUI界面
from tkinter import *
import tkinter as tk
class pen(Canvas): # Canvas是画布
def __init__(self,master = None):
super().__init__() # 调用父类中__init__的函数
self.master = master
self.fill = 'red'
# 定义鼠标当前位置
self.prex = self.prey = -10
# 画图开关一开始关闭
self.create_dot = False
# 定义开始,移动,介绍,清除的函数
self.bind('<Button-1>',self.start) # Button-1左键
self.bind('<B1-Motion>',self.move)
self.bind('<ButtonRelease>',self.end)
self.bind('<Button-3>',self.clean) # Button-3右键
self.pack(fill=BOTH, expand=YES)
def start(self,event):
self.create_dot = True
if event.x > 0 and event.y > 0:
# 开始绘图后,改变鼠标形状
self.master['cursor'] = 'target'
def move(self,event):
if self.prex > 0 and self.prey > 0 and self.create_dot ==True:
# 开始绘制
self.create_line(self.prex,self.prey,event.x,event.y)
self.prex,self.prey = event.x,event.y
def end(self,event):
self.create_dot =False
# 鼠标复原
self.master['cursor'] = 'arrow'
self.prex = self.prey = -10
def clean(self,event):
# 设置删除菜单
self.delete('all')
self.prex = self.prey = -10
# if '__name__' == "__main__":
root = tk.Tk()
root.geometry('600x400') # 设置window大小
root.resizable(width=False, height=False)
root.title('绘图')
pen(root)
root.mainloop()