学习Python,需要知道的经典案例

文章目录

  • 一、Python简介
  • 二、Python经典案例
    • 1. 猜数字游戏
    • 2. 文本文件处理
    • 3. 网络爬虫
    • 4. 数据可视化
    • 5. 电子邮件发送
    • 6. 实现一个简单的Web服务器。
  • 三、Python处理IP相关知识点
    • 1. 处理IP地址
    • 2. 网络编程(TCP/IP)
    • 3. 使用第三方库处理IP信息
  • 四、相关链接

一、Python简介

Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。它最初由Guido van Rossum于1989年底发明,并于1991年首次公开发行。Python的设计哲学强调代码的可读性,并允许开发者用少量代码表达想法,同时支持多种编程范式,包括面向过程、面向对象和函数式编程。

主要特点

  1. 易于学习:Python的语法清晰,代码简洁易懂,且拥有大量学习资源,因此无论是编程初学者还是经验丰富的开发者,都可以轻松上手。
  2. 跨平台性:Python可以在多种操作系统上运行,如Windows、Linux、macOS等,无需担心平台的兼容性问题。
  3. 丰富的标准库和第三方库:Python拥有庞大的标准库,涵盖了从基础数据类型到网络编程的各个方面。此外,还有大量的第三方库可供使用,如NumPy、Pandas用于数据处理和分析,Django、Flask用于Web开发,TensorFlow、PyTorch用于机器学习和深度学习等。
  4. 可扩展性:Python可以使用C、C++或Java等语言编写扩展模块,这使得Python能够与其他语言进行交互,从而利用它们的特性。
  5. 广泛的应用领域:Python在Web开发、数据分析、人工智能、科学计算、网络编程、自动化运维等多个领域都有广泛的应用。无论是构建复杂的Web应用,还是进行大数据分析,Python都能提供强大的支持。

Python是一种功能强大、易于学习和使用的编程语言,它拥有广泛的应用领域和丰富的资源支持,是编程领域的热门选择之一。无论是初学者还是专业人士,都可以通过Python实现自己的想法并创造出有趣的应用。

二、Python经典案例

Python经典案例代码涵盖了各种应用场景,从简单的脚本到复杂的系统。

1. 猜数字游戏

一个简单的猜数字游戏,程序随机生成一个数字,用户输入猜测的数字,根据大小提示用户继续猜。

import random

def guess_number():
    number_to_guess = random.randint(1, 100)
    guess = None
    attempt = 0
    
    while guess != number_to_guess:
        guess = int(input('猜一个1到100之间的数字: '))
        attempt += 1
        if guess < number_to_guess:
            print('太小了!')
        elif guess > number_to_guess:
            print('太大了!')
    
    print(f'恭喜你,猜对了!数字是 {number_to_guess}。你尝试了 {attempt} 次。')

guess_number()

2. 文本文件处理

读取、写入和修改文本文件。

# 写入文件
with open('example.txt', 'w') as f:
    f.write('Hello, Python!\n')
    f.write('This is an example file.\n')

# 读取文件
with open('example.txt', 'r') as f:
    content = f.read()
    print(content)

# 修改文件(通常需要先读取、修改、再写入)
with open('example.txt', 'r') as f:
    lines = f.readlines()

# 修改某行内容
lines[0] = 'Hi, Python!\n'

# 写入修改后的内容
with open('example.txt', 'w') as f:
    f.writelines(lines)

3. 网络爬虫

使用requests库爬取网页内容。

import requests
from bs4 import BeautifulSoup

def fetch_data(url):
    response = requests.get(url)
    if response.status_code == 200:
        return response.text
    else:
        return None

def parse_data(html):
    soup = BeautifulSoup(html, 'html.parser')
    # 假设我们要抓取所有的标题标签
    titles = soup.find_all('title')
    return [title.string for title in titles]

url = 'https://example.com'
html = fetch_data(url)
if html:
    titles = parse_data(html)
    print(titles)
else:
    print('Failed to fetch data.')

4. 数据可视化

使用matplotlib库进行简单的数据可视化。

import matplotlib.pyplot as plt
import numpy as np

# 创建数据
x = np.linspace(0, 10, 100)
y = np.sin(x)

# 绘制图形
plt.plot(x, y)
plt.title('y = sin(x)')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)
plt.show()

5. 电子邮件发送

使用smtplibemail库发送电子邮件。

import smtplib
from email.mime.text import MIMEText

def send_email(subject, body, to_email, from_email, password):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = from_email
    msg['To'] = to_email
    
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(from_email, password)
    text = msg.as_string()
    server.sendmail(from_email, to_email, text)
    server.quit()

# 使用示例
send_email('Hello!', 'This is a test email.', 'to@example.com', 'from@example.com', 'your_password')

6. 实现一个简单的Web服务器。

from http.server import BaseHTTPRequestHandler, HTTPServer

# 定义处理HTTP请求的类
class MyServer(BaseHTTPRequestHandler):
    # 处理GET请求
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        # 发送响应消息给客户端
        message = "Hello, world!"
        self.wfile.write(message.encode('utf-8'))
        return

def run():
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, MyServer)
    print('Starting server...')
    httpd.serve_forever()

if __name__ == "__main__":
    run()

这个代码创建了一个简单的Web服务器,当客户端发送GET请求时,服务器会返回一条"Hello, world!"的消息。服务器在8000端口上监听请求。你可以通过浏览器访问http://localhost:8000来测试这个服务器。

三、Python处理IP相关知识点

当提到Python IP时,可能有几个不同的上下文,包括处理IP地址、网络编程(如TCP/IP协议)或IP相关的库和工具。

当然,想更具体了解IP相关的信息,可扫描了解下

在这里插入图片描述

以下是一些与Python和IP相关的常见用例和示例代码

1. 处理IP地址

Python的ipaddress模块可以用来处理IPv4和IPv6地址。

import ipaddress

# 创建IPv4地址对象
ipv4_address = ipaddress.ip_address('192.0.2.1')
print(ipv4_address)
print(ipv4_address.version)  # 输出地址版本,4表示IPv4

# 创建IPv6地址对象
ipv6_address = ipaddress.ip_address('2001:db8::1')
print(ipv6_address)
print(ipv6_address.version)  # 输出地址版本,6表示IPv6

# 创建IPv4网络对象
ipv4_network = ipaddress.ip_network('192.0.2.0/24')
print(ipv4_network)
print(list(ipv4_network.hosts()))  # 列出网络中的主机地址

2. 网络编程(TCP/IP)

Python的socket模块可以用来进行TCP/IP网络编程。

import socket

# 创建一个TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定到本地地址和端口
server_address = ('localhost', 12345)
print('Starting up on {} port {}'.format(*server_address))
sock.bind(server_address)

# 监听连接
sock.listen(1)

while True:
    print('Waiting to accept a connection')
    connection, client_address = sock.accept()
    
    try:
        print('Connection from', client_address)

        # 接收数据
        while True:
            data = connection.recv(1024)
            print('Received {!r}'.format(data))
            if not data:
                break
        
        # 发送数据
        connection.sendall(b'Thank you for connecting')
    finally:
        # 清理连接
        connection.close()

3. 使用第三方库处理IP信息

有时,你可能需要使用第三方库来处理更复杂的IP信息,如requests库来发送HTTP请求并获取IP相关的数据,或者python-geoip库来根据IP地址查询地理位置信息。

使用requests库发送HTTP请求获取IP信息:

import requests

# 发送HTTP请求到某个IP信息API
response = requests.get('http://api.example.com/ip')
data = response.json()

# 输出IP地址
print(data['ip'])

四、相关链接

  1. Python下载安装中心
  2. Python官网
  3. Python软件下载
  4. 「Python系列」Python简介及案例
  5. 「Python系列」Python基础语法/数据类型
  6. 「Python系列」Python解释器
  7. 「Python系列」Python运算符
  8. 「Python系列」Python数据结构
  9. 「Python系列」Python元组
  10. 「Python系列」Python集合
  11. 「Python系列」Python列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/468719.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

基于单片机的智能台灯设计1.42

摘 要 社会在发展&#xff0c;时代在进步&#xff0c;人们对生活质量需求更加膨胀&#xff0c;是否拥有高科技技术也最终决定着产品是否可以满足人们的欲望&#xff0c;只有性价比更高&#xff0c;才可以得到更好的青睐。现在的电子产品愈来愈多&#xff0c;龙蛇混杂&#xff…

vue使用element-ui 实现自定义分页

element-ui文档截图&#xff0c;plus大同小异。 可以通过插槽实现自定义的分页。在layout里面进行配置。 全部代码 //page.js export default {name:Cuspage,props:{total:Number,},data(){return {currentPage:1,pageSize:10,}}methods: {setslot (h) {return(<div cla…

tinyrenderer-Bresenham绘制直线算法

如何画线段 第一种尝试 求x&#xff0c;y起始点的差值&#xff0c;按平均间隔插入固定点数 起始点平均插入100个点&#xff1a; void line(int x0, int y0, int x1, int y1, TGAImage& image, TGAColor color) {for (float t 0.; t < 1.; t .01) {int x x0 (x1 -…

力扣每日一题 2024/3/19 好子数组的最大分数

题目描述 用例说明 思路讲解 好子数组的下标在i<k<j,即nums[k]必须在好子数组当中&#xff0c;将数组以k为分界点分为左右两半&#xff0c;左半left从k-1向左移动&#xff0c;右半right从k1开始出发向右移动。 当left大于等于分界点的值时左移一位&#xff0c;当right大…

tp8 mpdf 导出pdf

1. 安装mpdf composer require mpdf/mpdf 2. 然后 使用 use mpdf\Mpdf; 或者 require_once __DIR__ . /vendor/autoload.php; 官方文档 mPDF – mPDF 手册 文档里有很多东西 可以自己去研究 3. 编写代码 下载 (支持中文) $mpdf new Mpdf([mode > utf-8,"autoS…

CMeet系列技术生态沙龙---《探索未来:生成式AI赋能千行百业·杭州》

当前数字化浪潮下&#xff0c;生成式AI技术正成为推动产业升级、提升竞争力的关键力量。为深入探索未来AI技术的赋能作用&#xff0c;促进技术生态的繁荣与发展&#xff0c;CSDN-CMeet系列沙龙活动旨在搭建一个交流与探索的平台&#xff0c;通过分享前沿研究成果和应用案例&…

服务器数据恢复—光纤环境互斥不当导致存储VMFS卷损坏的数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某公司的信息管理平台&#xff0c;通过3台虚拟机共享了一台存储设备供企业内部使用&#xff0c;存储设备中存放了公司内部重要的数据文件。 由于业务增长的需要&#xff0c;管理员又在这个存储网络上连接了一台Windows server服务器&a…

媒体邀约:推广方法

1.媒体邀约推广媒体邀约推广是一种通过与商务合作以增强曝光度和名气的营销手段。积极与商务合作&#xff0c;公司能将产品和服务推广给更大范围受众人群&#xff0c;以达到增加销量和市场占有率目地。 1.1 选择适合自己的新闻媒体选择适合自己的新闻媒体是媒体邀约推广的关键…

sqllab第35-45关通关笔记

35关知识点&#xff1a; 宽字节注入数值型注入错误注入 payload:id1andextractvalue(1,concat(0x7e,database(),0x7e))0--联合注入 payload:id0unionselect1,database(),version()-- 36关知识点&#xff1a; 字符型注入宽字节注入错误注入 payload:id1%df%27andextractvalue(…

Qt实现简单的五子棋程序

Qt五子棋小程序 Qt五子棋演示及源码链接登陆界面单机模式联机模式联网模式参考 Qt五子棋 参考大佬中国象棋程序&#xff0c;使用Qt实现了一个简单的五子棋小程序&#xff0c;包含了单机、联机以及联网三种模式&#xff1b;单机模式下实现了简易的AI&#xff1b;联机模式为PtoP…

由于找不到kvpvbsext64.dll,无法继续执行代码。解决办法,

kvpvbsext64.dll 是一个动态链接库文件&#xff0c;通常作为某个软件的一部分存在。具体来说&#xff0c;它可能为某个程序的特定功能提供支持&#xff0c;在软件运行时被调用和使用。因此&#xff0c;当出现与该文件相关的错误时&#xff0c;可能会影响到相应软件的正常运行。…

ModbusTCP转Profinet网关高低字节交换切换

背景&#xff1a;在现场设备与设备通迅之间通常涉及到从一种字节序&#xff08;大端或小端&#xff09;转换到另一种字节序。大端字节序是指高位字节存储在高地址处&#xff0c;而小端字节序是指低位字节存储在低地址处。在不动原有程序而又不想或不能添加程序下可选用ModbusTC…

算法沉淀——贪心算法二(leetcode真题剖析)

算法沉淀——贪心算法二 01.最长递增子序列02.递增的三元子序列03.最长连续递增序列04.买卖股票的最佳时机 01.最长递增子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequence/ 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子…

Matplotlib数据可视化实战-1数据可视化Matplotlib基础

1.1绘图的一般过程&#xff1a; 1.导入相关库 2.生成、读入或计算得到数据&#xff1b; 3.根据需要绘制折线图、散点图、柱状图、饼状图、雷达图、箱线图、三维曲线/曲面以及极坐标系图形&#xff1b; 4.根据需要设置图形属性&#xff1b; 5.显示或保存绘图结果。 例如&…

缺失的第一个正数-面试热题 100?-Lua 中文代码解题第5题

缺失的第一个正数-面试热题 100&#xff1f;-Lua 中文代码解题第5题 解题思路&#xff1a; 遍历数组并尝试将元素放入正确的位置&#xff1a; 遍历输入数组 nums&#xff0c;对于每个元素 nums[i]&#xff1a; 如果 nums[i] 是一个正整数&#xff0c;并且它的值小于或等于数组…

Windows Server 2012 R2在安装软件的时候显示乱码

1、打开控制面板——时钟、语言和区域——语言&#xff0c;添加为汉语 2、接着选择区域为中国 3、完美解决

Covalent Network(CQT)借助最大规模的历史与实时 Web3 数据集,推动人工智能的发展

人工智能在众多领域中增强了区块链的实用性&#xff0c;反之亦然&#xff0c;区块链确保了 AI 模型所使用的数据的来源和质量。人工智能带来的生产力提升&#xff0c;将与区块链系统固有的安全性和透明度融合。 Covalent Network&#xff08;CQT&#xff09;正位于这两项互补技…

day11【网络编程】

day11【网络编程】 主要内容 软件架构CS&#xff0f;BS网络通信三要素TCP通信Socket套接字ServerSocket 目标 能够辨别UDP和TCP协议特点 能够说出TCP协议下两个常用类名称 能够编写TCP协议下字符串数据传输程序 能够理解TCP协议下文件上传案例 能够理解TCP协议下案例2 第一…

dockers拉取MySQL及Redis并挂载文件

目录 一 . MySQL拉取 1、进入 MySQL 容器内部。 2、登录 MySQL。 3、修改远程连接 4、刷新 二 . Redis拉取 1 . redis/conf中新建文件redis.conf&#xff0c;内容如下&#xff1a; 2 . 容器运行 一 . MySQL拉取 docker run -d --restartalways --name mysql \ -v /…