python实际应用


一、列表基本操作

1.若干数排序

nums=input()
numl=[int(n) for n in nums.split()]
numl.sort()
print(numl)

测试样例:

输入:
3 2 5 6 9
输出:
[2, 3, 5, 6, 9]

二、文件处理

1. excel

1. 利用python读入和导出excel
import pandas as pd

df = pd.read_excel('C:/temp/aaa.xlsx')
print(df.shape) # 显示几行几列
df.to_excel('C:/temp/output.xlsx')
print('Done!')
2. for循环遍历excel表格
import pandas as pd

df = pd.read_excel('C:/temp/aaa.xlsx')
for i in df.index:
    df['first'].at[i] += 1
    if i % 2 == 0:
        df['third'].at[i] = 'Yes'
    else:
        df['third'].at[i] = 'No'
print(df)
df.to_excel('C:/temp/output2.xlsx')
print('Done!')
3. 绘制柱状图

在这里插入图片描述
在这里插入图片描述

三、网络爬虫

1. 爬虫基本框架

import requests

def getHTMLText(url):
    try:
        r = requests.get(url,timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLText(url))

2. Flask框架

from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello,World!'

3. 实例:中国大学排名爬虫

import requests
from bs4 import BeautifulSoup
import bs4

def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "异常处理"

def fillUnivList(ulist, html):
    soup = BeautifulSoup(html, "html.parser")
    for tr in soup.find('tbody').children:  #先检索到tbody标签
        if isinstance(tr, bs4.element.Tag):
            tds = tr('td')  #查询tr中的td标签,等价于tr.find_all('td')
             # 新版的排名封装在a标签中,所以这里需要具体到查找属性为'name-cn'的a标签并存储其字符串,即大学的中文名称
            a = tr('a','name-cn')
            ulist.append([tds[0].string.strip(),a[0].string.strip(),tds[2].text.strip(),tds[4].string.strip()])  # 使用二维列表存储信息

def printUnivList(ulist, num):
    print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分"))	#取10/6/10位中间对齐
    for i in range(num):
        u = ulist[i]
        print("{:^10}\t{:^6}\t{:^10}".format(u[0], u[1], u[3]))

def main():
    uinfo = []
    url = "https://www.shanghairanking.cn/rankings/bcur/2021"
    html = getHTMLText(url)
    fillUnivList(uinfo, html)
    printUnivList(uinfo, 10)  # 10 univ

main()

四、游戏开发

1. pygame最小开发框架

import pygame,sys
pygame.init()
screen=pygame.display.set_mode((600,400))
pygame.display.set_caption("Python游戏之旅")

while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            sys.exit()
        pygame.display.update()

2. 壁球小游戏

import pygame,sys

pygame.init()
size = width, height = 600, 400
speed = [1,1]
BLACK = 0, 0, 0
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pygame壁球")
ball = pygame.image.load("123.jpg")
ballrect = ball.get_rect()
fps = 300
fclock = pygame.time.Clock()

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                speed[0] = speed[0] if speed[0] == 0 else (abs(speed[0]) - 1)*int(speed[0]/abs(speed[0]))
            elif event.key == pygame.K_RIGHT:
                speed[0] = speed[0] + 1 if speed[0] > 0 else speed[0] - 1
            elif event.key == pygame.K_UP:
                speed[1] = speed[1] + 1 if speed[1] > 0 else speed[1] - 1
            elif event.key == pygame.K_DOWN:
                speed[1] = speed[1] if speed[1] == 0 else (abs(speed[1]) - 1)*int(speed[1]/abs(speed[1]))
    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = - speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = - speed[1]

    screen.fill(BLACK)
    screen.blit(ball, ballrect)
    pygame.display.update()
    fclock.tick(fps)

五、数据分析

1. numpy数组的使用

import numpy as np
def npSum():
    a=np.array([1,2,3,3,4])
    b=np.array([2,3,1,5,4])
    c=a**2+b**3
    return c
print(npSum())

2. 手绘图像

from PIL import Image
import numpy as np

a = np.asarray(Image.open('sh2.jpg').convert('L')).astype('float')

depth = 10. 						# (0-100)
grad = np.gradient(a)				#取图像灰度的梯度值
grad_x, grad_y = grad 				#分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A

vec_el = np.pi/2.2 					# 光源的俯视角度,弧度值
vec_az = np.pi/4. 					# 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) 	#光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) 	#光源对y 轴的影响
dz = np.sin(vec_el) 				#光源对z 轴的影响

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) 	#光源归一化
b = b.clip(0,255)

im = Image.fromarray(b.astype('uint8')) 	#重构图像
im.save('sh2.jpg')

在这里插入图片描述

在这里插入图片描述

3. 数据可视化

六、词云

from wordcloud import WordCloud
wcd=WordCloud(background_color="white")
text="hello world python linux html css js"
wcd.generate(text)
wcd.to_image()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

勇敢nn

心动不如行动,感谢您的支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值