1.配置虚拟环境
在配置好vscode和Python插件的开发环境中配置虚拟环境
```cmd
#创建虚拟环境
python -m venv 环境名 #内置的venv模块
python -m venv .env
cd .env/scripts
activate.bat
安装库
```cmd
pip instll abc #安装abc库,支持在线/离线安装
pip list #查询已安装的库
```
2. 输入输出
求圆面积,实现输入圆的半径 r,输出圆的面积 s(π 取 3.14,四舍五入保留 2位小数)
```python
pi = 3.14 # 定义π的值
#r = float(input("请输入圆的半径: ")) # 输入半径并转换为浮点数
r = float(input("请输入圆的半径: ")) # 注意转换float
s = pi * r * r # 计算面积:π*r² 周长 2*π*r
print("圆的面积为: {:.2f}".format(s)) # 输出结果,四舍五入保留2位小数
```
求圆面积,实现输入圆的半径 r,输出圆的周长c(π 取 3.14,四舍五入保留 2位小数)
```python
pi = 3.14 # 定义π的值
#r = float(input("请输入圆的半径: ")) # 输入半径并转换为浮点数
r = float(input("请输入圆的半径: ")) # 注意转换float
c=2* pi * r # 计算面积:π*r² 周长 2*π*r
print("圆的周长为: {:.2f}".format(c)) # 输出结果,四舍五入保留2位小数
求球体的体积,实现输入球体的半径 r,输出球体的体积(π 取 3.14,四舍五入保留 2位小数)
```python
pi = 3.14 # 定义π的值
#r = float(input("请输入球体的半径: ")) # 输入半径并转换为浮点数
r = float(input("请输入球体的半径: ")) # 注意转换float
c=(4/3)*pi*(r**3)
print("球体的体积为: {:.2f}".format(c)) # 输出结果,四舍五入保留2位小数
```python
pi = 3.14 # 定义π的值
#r = float(input("请输入圆的半径: ")) # 输入半径并转换为浮点数
r = float(input("请输入圆的半径: ")) # 注意转换float
s = pi * r * r # 计算面积:π*r² 周长 2*π*r
print(f"圆的面积为: {round(s, 2)}") # 输出结果,四舍五入保留2位小数
```
3.遍历循环
在控制台输出
```python
+++++++++++++
+++++++++++
+++++++++
+++++++
+++++
+++
```
for i in range(7,0,-1):
printf("*""*(2*i-1)).rjust(15)
```python
for i in range(7,0,-1): #range 遍历循环
print(("+" * (2 * i - 1)).rjust(15)) #打印,字符串复制,翻转
```
```python
++ ++
+++ +++
++++ ++++
+++++ +++++
```
```python
for i in range(1,6): #range 输出有n行就到n+1
left="+"*i #左边
middle=" "*(11-2*i)#中间
right="+"*i#右边
print("{}{}{}".format(left,middle,right)) #打印,字符串复制,翻转
```
4.条件选择
输入任意两个数 x 和 y,比较大小
```python
输入两个数
x = float(input("请输入第一个数 x: "))
y = float(input("请输入第二个数 y: "))
比较大小并输出结果
if x > y:
print("x 大于 y")
elif x < y:
print("x 小于 y")
else:
print("x 等于 y")
```
输入任意一个1000以内的整数x,实现 x大于等于900时输出"A",大于等于600且小于900时输出"B",小于600时输出"C"
```python
输入
x = eval(input("请输入1000以内的整数x: "))
比较大小并输出结果
if x >= 900:
print("A")
elif 600<=x < 900:
print("B")
else:
print("C")
```
求平均成绩
```python
x = [98,60,52,34,76,89]
保留大于等于60的成绩
score=[i for i in x if i>=60 ]
print(sum(score)/len(score))
```
5.排序-选择排序
算法将数据序列分为两个区域:已排好序的区域和待排序的区域。初始时,已排序区域为空,整个序列都是待排序的。
排序过程中,算法反复执行以下步骤:
-
从第二个元素开始遍历数组
-
将当前元素与已排序部分的元素比较
-
在已排序部分找到合适的位置,将当前元素插入
通过不断从剩余未排序的元素中选择最小的元素并放到已排序序列的末尾,算法逐步构建有序序列。当待排序区域为空时,整个序列就完成了排序。
这种方法就像是在一堆牌中,每次都找出最小的一张放在左侧,逐渐形成一个从小到大排列的序列。
```python
def insertion_sort(arr):
n = len(arr)
从第二个元素开始遍历
for i in range(1, n):
当前要插入的元素
key = arr[i]
将这个元素与前面已排序部分的元素比较
j = i - 1
如果前面的元素大于key,则将其后移
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
将key插入到正确的位置
arr[j + 1] = key
return arr
测试代码
if name == "main":
test_array = [64, 25, 12, 22, 11]
print("原始数组:", test_array)
sorted_array = insertion_sort(test_array)
print("排序后数组:", sorted_array)
```
排序:前面排好序,找到后面的序列里面的最小值,进行交换
```python
def my_sort(arr):
n = len(arr) #获取数组长度
for i in range(n):
tmp = i
for j in range(i+1, n): #指定循环范围
if arr[j] < arr[tmp]:
tmp = j #赋值最小值索引
arr[i], arr[tmp] = arr[tmp], arr[i] #交换元素
return arr
测试代码
if name == "main":
test_array = [64, 25, 12, 22, 11]
print("原始数组:", test_array)
sorted_array = my_sort(test_array)
print("排序后数组:", sorted_array)
```
6. 求完数
```python
#求100以内的完数
def is_perfect(num):
factors_sum = 0
for i in range(1, num): #确定循环范围
if num % i == 0: #完数因子判断
factors_sum += i #完数因子相加
if factors_sum == num:
return True
return False
perfect_numbers = []
for i in range(1, 1000):
if is_perfect(i): #判断是否为完数
perfect_numbers.append(i)
print("1000以内的完数有:", perfect_numbers) #【5】输出
```
6. 画图
画一个正方形
```python
import turtle
创建一个Turtle对象
t = turtle.Turtle()
t.speed(1000) # 设置绘图速度 0最快
设置正方形边长
side_length = 100 # 设置边长为100
设置画笔颜色和准备绘图
t.pencolor('red') # 画笔颜色
t.penup() # 抬起画笔
t.goto(-side_length/2, -side_length/2) # 将起点放在正方形的左下角
t.pendown() # 放下画笔
t.setheading(0) # 朝向角度,设置海龟方向向右
绘制正方形
for _ in range(4):
t.forward(side_length) # 向前移动side_length
t.left(90) # 左转90度
隐藏海龟并显示结果
t.hideturtle()
turtle.done()
```
7.爬虫
使用BeautifulSoup库爬取index.html页面中音乐名称和播放量数据,用列表输出
```
爬虫思路:
查找所有包含歌曲信息的div元素(class为'inner'的div)
从每个div中提取h2标签中的歌曲名称
找到第一个span标签提取播放量数值
将歌曲名称和播放量分别存储在两个列表中
最后打印这两个列表
```
`find()` 方法的基本语法是:
```
element.find(name, attrs, recursive, string, **kwargs)
```
参数解释:
-
`name`:标签名称,如 'div', 'span', 'p', 'h2' 等
-
`attrs`:标签属性,可以是字典形式 {'class': 'inner'}
-
`recursive`:是否递归查找,默认为 True
-
`string`:按标签内文本内容查找
-
`**kwargs`:其他属性,如 class_='inner'(注意有下划线)
```python
find默认获取第一个,那如何获取第二个?
获取所有span标签,然后取第二个(索引为1)
second_span = music.find_all('span')[1]
likes_count = int(second_span.text)
```
```python
from bs4 import BeautifulSoup
打开本地index.html文件
with open('music/index.html', 'r', encoding='utf-8') as file:
使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(file, 'lxml')
查找所有inner类下的歌曲信息
#music_elements = soup.find_all('div', class_='inner')
music_elements = soup.find_all('div', {'class': 'inner'})
创建空列表存储歌曲名称和播放量
music_names = []
play_counts = []
遍历每个音乐元素,提取名称和播放量
for music in music_elements:
获取歌曲名称
name = music.find('h2').text
music_names.append(name)
获取播放量 - 直接找第一个span标签里的内容
play_count = int(music.find('span').text)
play_counts.append(play_count)
打印结果
print(music_names)
print(play_counts)
```
`select()` 方法的基本语法是:
```
element.select(标签)
```
参数解释:
可以是标签名、类名称、id名称或者组合查找
```python
from bs4 import BeautifulSoup
打开本地index.html文件
with open('example-biaoge/index.html', 'r', encoding='utf-8') as file:
使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(file, 'lxml')
content = soup.select("table tbody tr")
print(content)
title_list=[]
score_list=[]
for i in content:
title = i.select('td')[1].text
score = i.select('td')[3].text
title_list.append(title)
score_list.append(score)
print(title_list)
print(score_list)
title_list = []
```
8. 可视化
```python
import json
from flask import Flask, render_template
from markupsafe import Markup
from bs4 import BeautifulSoup
app = Flask(name)
@app.route("/")
def index():
从example/index.html获取数据
with open('music/index.html', 'r', encoding='utf-8') as file:
使用BeautifulSoup解析HTML内容
soup = BeautifulSoup(file, 'lxml')
查找所有inner类下的歌曲信息
music_elements = soup.find_all('div', class_='inner')
创建空列表存储歌曲名称和播放量
music_names = []
play_counts = []
遍历每个音乐元素,提取名称和播放量
for music in music_elements:
获取歌曲名称
name = music.find('h2').text
music_names.append(name)
获取播放量 - 直接找第一个span标签里的内容
play_count = int(music.find('span').text)
play_counts.append(play_count)
打印结果
print(music_names)
print(play_counts)
定义X轴数据 - 歌曲名称
x_data = music_names
定义Y轴数据 - 播放量
y_data = play_counts
将数据转换为JSON格式,以便在JavaScript中使用
xdatas = Markup(json.dumps(music_names))
ydatas = Markup(json.dumps(play_counts))
return render_template('index.html', xdatas=xdatas, ydatas=ydatas)
if name == 'main':
app.run()
```
for i in range (7,0,-1):
print("+"*(2*i-1)).rjust(15)