Python基础练习题
本文整理了Python入门的一些小练习题目和相应的题解,包括图像绘制、利用爬虫爬取网页数据等等。
1.根据半径r计算圆的面积
1 | # 计算圆的面积 |
2.绘制多个同切圆
1 | # 绘制多个同切圆 |
3.绘制一个五角星
1 | from turtle import * |
4.摄氏温度与华氏温度相互转换
1 | # is_number函数可以判断一个字符串是否能被转换为一个数 |
5.获得用户输入的一个正整数输入,输出该数字对应的中文字符表示
- 参考题解1
1 | s = input() |
- 参考题解2
1 | template = "零一二三四五六七八九" |
6.输入正整数n,计算1+2+3+…+n
1 | ans = 0 |
7.输入正整数n,计算n的阶乘
- 普通循环形式
1 | ans = 1 |
- 自定义函数形式
1 | def fact(n): |
- 递归形式
1 | def fact(n): |
8.根据输入的参数值,以不同方式打印输出”Hello World”
- 如果输入值是0,直接输出”Hello World”
- 如果输入值大于0,以两个字符一行方式输出”Hello World”(空格也是字符)
- 如果输入值小于0,以垂直方式输出”Hello World”
- 参考题解1
1 | s = 'Hello World' |
- 参考题解2
1 | n = eval(input()) |
9.运算数学表达式
获得用户输入的一个字符串,格式如下: M OP N 其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除),根据OP,输出M OP N的运算结果,统一保存小数点后2位。注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。
1 | s = input() |
10.随笔画
(1)画房子
1 | import turtle |
效果简单,暂不展示。
(2)画玫瑰
1 | import turtle |
效果:
(3)画一棵树
1 | from turtle import * |
效果:
11.获取星期字符串
1 | weekStr = '一二三四五六日' |
12.打印沙漏
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印
1 | ***** |
所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。
给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。
- 输入格式:
输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。
- 输出格式:
首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。
- 输入样例:
1 | 19 * |
- 输出样例:
1 | ***** |
- 参考题解:
1 | import math |
13.计算程序运行时间
1 | import time |
14.文本进度条
- 多行
1 | # 多行 |
- 单行
1 | # 单行 |
15.计算圆周率
- 方法一
1 | pi = 0 |
- 方法二(蒙特卡罗方法)
1 | from random import random |
16.可变参数传递
1 | def fact(n, *p): |
17.函数可以有多个返回值
1 | def fact(n, m=1): |
18.局部变量和全局变量
1 | n, s = 10, 100 |
- 局部变量为组合数据类型且未创建,等同于全局变量
1 | ls = ['F', 'f'] |
- 局部变量为组合数据类型被真实创建,等同于局部变量
1 | ls = ['F', 'f'] |
19.lambda函数
1 | def f(x, y): return x+y |
20.绘制七段数码管
1 | import turtle |
- 功能扩展:
1 | import turtle |
效果:
21.递归
- 字符串反转
1 | def rvs(s): |
- 斐波那契数列
1 | def fib(n): |
- 汉诺塔
1 | count = 0 |
22.绘制科赫曲线
1 | import turtle |
- 科赫雪花:
1 | import turtle |
23.利用集合进行去重
1 | ls = ['p', 'y', 'p', 'y', 1, 2, 3, 2] |
24.基本统计值计算
1 | def getNum(): |
25.文本词频统计
- 英文文本词频统计
1 | def getText(): |
- 中文文本词频统计
1 | import jieba |
- 《三国演义》人物出场频率统计
1 | import jieba |
26.判断素数
1 | # 判断整数n是否是素数 |
27.f.txt文件保存:“中国是个伟大的国家!”
1 | tf = open("f.txt", "rt") # 文本形式打开 |
28.文件的全文本操作
- 方法一
1 | fname = input("请输入要打开的文件名称:") |
- 方法二
1 | fname = input("请输入要打开的文件名称:") |
29.逐行遍历文件
- 方法一
1 | fname = input("请输入要打开的文件名称:") |
- 方法二
1 | fname = input("请输入要打开的文件名称:") |
- 方法三
1 | file = open(fname, encoding="utf-8") |
30.文件的写入
1 | fo = open("output.txt", "w+") |
31.自动轨迹绘制
1 | import turtle as t |
data.txt文件:
1 | 300,0,144,1,0,0 |
32.一维数据的读入处理
- 从空格分隔的文件中读入数据
1 | # 中国 美国 日本 德国 法国 英国 意大利 |
- 从特殊字符分隔的文件中读入数据
1 | # 中国$美国$日本$德国$法国$英国$意大利 |
33.一维数据的写入处理
- 以空格分隔写入
1 | ls = ['中国', '美国', '俄罗斯'] |
- 以特殊字符分隔写入
1 | ls = ['中国', '美国', '俄罗斯'] |
34.二维数据的处理
- 从csv格式的文件中读入数据
1 | fo = open(fname) |
- 将数据写入csv格式的文件
1 | ls = [[], [], []] # 二维列表 |
- 遍历二维数据
1 | ls = [[1, 2], [3, 4], [5, 6]] # 二维列表 |
35.绘制词云
- 英文
1 | import wordcloud |
- 中文
1 | import jieba |
效果:
36.政府工作报告词云
1 | import jieba |
37.体育竞技分析
1 | from random import * |
38.第三方库自动安装脚本
1 | import os |
39.python-docx库进行文本处理
1 | from docx import Document |
40.Requests 库的使用
- Requests库的7个主要方法:
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各方法的基础方法 |
requests.get() | 获取 HTML 网页的主要方法,对应于 HTTP 的 GET |
requests.head() | 获取 HTML 网页头信息的方法,对应于 HTTP 的 HEAD |
requests.post() | 向 HTML 网页提交 POST 请求的方法,对应于 HTTP 的 POST |
requests.put() | 向 HTML 网页提交 PUT 请求的方法,对应于 HTTP 的 PUT |
requests.patch() | 向 HTML 网页提交局部修改请求,对应于 HTTP 的 PATCH |
requests.delete() | 向 HTML 页面提交删除请求,对应于 HTTP 的 DELETE |
- Reponse 对象的属性:
属性 | 说明 |
---|---|
r.status_code | HTTP 请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP 相应内容的字符串形式,即,url 对应的页面内容 |
r.encoding | 从 HTTP header 中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP 响应内容的二进制形式 |
- 爬取百度网页内容:
1 | import requests |
- 理解 Request 库的异常:
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如 DNS 查询失败、拒绝连接等 |
requests.HTTPError | HTTP 错误异常 |
requests.URLRequired | URL 缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求 URL 超时,产生超时异常 |
r.raise_for_status() | 如果不是200,产生异常requests.HTTPError |
- 爬取网页的通用代码框架:
1 | import requests |
- requests的请求方式:
1 | requests.request(method, url, **kwargs) |
- 访问京东:
1 | import requests |
- 百度搜索全代码:
1 | import requests |
- 爬取图片并保存:
1 | import requests |
41.beautifulsoup4 库的使用
1 | import requests |
42.创建 Cat 类
1 | class Cat: |
43.创建家具类 HouseItem 和房屋类 House
1 | class HouseItem: |
44.属性可以是另外一个类创建的对象
1 | class Gun: |
45.私有属性和私有方法
在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义的就是私有属性或方法
1 | class Women: |
如果想在外部访问类的私有属性,在属性名前面加上 __类名 即可,Python并没有真正意义上的私有
46.继承
- 示例1
1 | class Person(object): |
- 示例2
1 | class Person(object): |
- 示例3
1 | class Person(object): |
- 示例4
1 | # 多继承 |
如果父类之间存在同名的属性或方法,应该尽量避免使用多继承
47.多态
1 | class Dog(object): |
48.类属性和类方法
1 | class Tool(object): |
49.类方法
1 | class Tool(object): |
50.静态方法
如果某个方法既不访问类属性,也不访问实例属性,可以将其设为静态方法
- 示例1
1 | class Dog(object): |
- 示例2
1 | class Game(object): |
51.重写 new 方法
1 | class MusicPlayer(object): |
52.单例设计模式 设计 一个单例类
1 | class MusicPlayer(object): |