Python入门实例记录

实例一 温度转换

介绍
温度的刻画有两个不同体系:摄氏度(℃)和华氏度(Fabrenheit)。请编写程序将用户输入华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度。转换算法如下:(C表示摄氏度,F表示华氏度)

     C =(F-32)/ 1.8
     
     F = C * 1.8 + 32

算法要求

输入输出的摄像度可采用大小写字母C结尾,温度可以是整数或小数,如:12.34C指摄氏度12.34度;输入输出的华氏度可采用大小写字母F结尾,温度可以是整数或小数,如:87.65F指摄氏度87.65度;输出保留小数点后两位,输入格式错误时,输出提示:输入格式错误。

代码

#TempConvert.py
TempStr = input("请输入带有温度的符号值:") 		#定义一个变量
if TempStr[-1] in ['F','f']:		#if函数,python中引入一个函数时要在行尾加“:”
    C = (eval(TempStr[0:-1])-32)/1.8		#缩进格式
    print("转换后的温度是{:.2f}C".format(C))		#将结果C保留两位小数
elif TempStr[-1] in ['C','c']:
    F = 1.8*eval(TempStr[0:-1])+32
    print("转化后的温度是{:.2f}F".format(F))
else:
    print("输入格式有误!")

测试结果如下:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
=================== RESTART: E:\python exercise\TempStr.py ===================
请输入带有温度的符号值:36C
转化后的温度是96.80F
>>> 
=================== RESTART: E:\python exercise\TempStr.py ===================
请输入带有温度的符号值:100F
转换后的温度是37.78C
>>> 

温度转化变体

人民币与美元的转化。
1美元=6.78人民币。
人民币用RMB表示,美元用USD表示。

#USD_RMB.py
TempStr=input()
if TempStr[0] in ['U']:
 RMB=6.78*eval(TempStr[3:])
 print("RMB{:.2f}".format(RMB))
elif TempStr[0] in ['R']:
 USD=eval(TempStr[3:])/6.78
 print("USD{:.2f}".format(USD))

测试结果如下:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
=================== RESTART: E:\python exercise\USD_RMB.py ===================
USD6
RMB40.68
>>> 
=================== RESTART: E:\python exercise\USD_RMB.py ===================
RMB100
USD14.75
>>> 

实例二 turtle简单绘制

介绍

使用龟库,绘制一个蟒蛇形状的图形。

代码

#PythonDraw.py
import turtle as t #引入turtle函数并定义为“t”,方便代码书写。
t.pensize(20) #设置画笔粗细
t.pencolor("red") #设置画笔颜色
t.pu() #画笔抬起,turtle飞行。
t.fd(-200) #turtle向前移动 -200 。
t.seth(-40) #设置绝对角度。注意绝对角度与相对角度的区分!
t.pd () #画笔放下,turtle爬行。“pu()”、“pd()”一般成对出现。
for i in range(4): #for函数下的命令循环执行4次。
	t.circle(40,80) #画一段半径为40,圆心角为80°的圆弧。
	t.circle(-40,80) #turtle.circle命令详解:turtle.circle(radius,extent=,steps=),即半径,弧度,作半径为R的圆内切正多边形,其边数为steps。

	
t.circle(40,40)
t.fd(80)
t.circle(15,180)
t.done()

测试结果如下:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
================= RESTART: E:\python exercise\PythonDraw.py =================

一条红色的大蟒蛇
用turtle画一个五环

代码如下:

#FiveCircles.py
import turtle as t
t.pensize(10)
t.penup()
t.pencolor ("blue")
t.fd(-180)
t.pendown()
t.circle(80)
t.penup()
t.fd(180)
t.pencolor("black")
t.pendown()
t.circle(80)
t.penup()
t.pencolor("red")
t.fd(180)
t.pendown()
t.circle(80)
t.penup()
t.goto(-90,-80)
t.pencolor("yellow")
t.pendown()
t.circle(80)
t.penup()
t.goto(90,-80)
t.color("green")
t.pendown()
t.circle(80)

测试结果:
不知道为什么会想到画个五环。。。

实例三 天天向上的力量

介绍
每天比前一天进步1%,那么一年以后进步多少呢?如果每天退步1%,那么一年以后退步多少呢?如何用python程序实现
逐步分析
一年中的每一天都在进步或都在退步。

#DayDayUp.py
dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

工作日进步,周末退步。

#DayDayUpQ3.py
dayup=1.0
dayfactor=0.01
for i in range(365):
    if i%7 in [6,0]:
        dayup=dayup*(1-dayfactor)
    else:
        dayup=dayup*(1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))

一个工作日进步,周末退步的人,要多努力才可以赶得上每天都在进步的人?

#DayDayUpQ4.py
def dayUp(factor):
    dayup=1
    for i in range(365):
        if i%7 in[6,0]:
            dayup=dayup*(1-0.01)
        else:
            dayup=dayup*(1+factor)
    return dayup
factor=0.01
while dayUp(factor)<37.78:
    factor+=0.0001
print("工作日的努力参数为:{:.4f}".format(factor))

测试结果

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
 RESTART: E:\Study&Summary\000-Linux-python process\003-python exercise\DayDayUpQ2.py 
向上:6.17,向下:0.16
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
 RESTART: E:\Study&Summary\000-Linux-python process\003-python exercise\DayDayUpQ3.py 
工作日的力量:4.63
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
 RESTART: E:\Study&Summary\000-Linux-python process\003-python exercise\DayDayUpQ4.py 
工作日的努力参数为:0.0182

实例四 文本进度条

介绍
采用字符串方式打印可以动态变化的文本进度条;进度条需要在一行中逐渐变化。
代码

#TextProBar.py
import time
scale=50
print("执行开始".center(scale//2,"-"))
start=time.perf_counter()
for i in range(scale+1):
    a='*'*i
    b='.'*(scale-i)
    c=(i/scale)*100
    dur=time.perf_counter()-start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))

执行结果
动态文本进度条

实例五 身体质量指数BMI

问题介绍
BMI指数等于体重(Kg)/身高(m)^2
BMI指数可判断一个人的胖瘦程度,但国际和国内标准略有不同,具体如下:

分类国际BMI值国内BMI值
偏瘦<18.5<18.5
正常18.5~2518.5~24
偏胖25~3024~28
肥胖>=30>=28

代码

#example_BMI.py
height,weight=eval(input("请输入您的身高(m)和体重(Kg)[用逗号隔开]:"))
bmi=weight/height**2
print("您的BMI指数为:{:.2f}".format(bmi))
if bmi<18.5:
    nat,china="偏瘦","偏瘦"
elif 18.5<=bmi<24:
    nat,china="正常","正常"
elif 24<=bmi<25:
    nat,china="偏胖","正常"
elif 25<=bmi<28:
    nat,china="偏胖","偏胖"
elif 28<=bmi<30:
    nat,china="肥胖","偏胖"
else:
    nat,china="肥胖","肥胖"
print("您的BMI指标在国际上属于'{0}'人群,国内属于'{1}'人群".format(nat,china))

运行结果
BMI代码运行

实例六 圆周率pi的计算

介绍
在一个边长为1的正方形内,内切一个半径为1的四分之一圆。向这个正方形区域内投大量随机点并计算出现在圆周内的点与总的点数的比值,这个比值就等于pi/4,由此可以得出pi的值。
蒙特卡罗方法计算圆周率

代码

#calculatepi.py
#用蒙特卡罗方法计算
from random import random
from time import perf_counter
DARTS=pow(1000,2)
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
    x,y=random(),random()
    dist=pow(x**2+y**2,0.5)
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/DARTS)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter() - start))

运行结果

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> 
 RESTART: E:\Study&Summary\000-Linux-python process\003-python exercise\Calculate_pi.py 
圆周率值是:3.138468
运行时间是:0.82975s

实例七 七段数码管绘制

介绍
利用 turtle 绘图体系绘制单个数码管,之后将一串数字变为数码管,最后并引入 time 库显示时间。
代码1

import turtle as t


def drawline(draw):  # 绘制单段数码管
    t.pendown() if draw else t.penup()
    t.fd(40)
    t.right(90)


def drawDight(dight):  # 根据数字绘制七段数码管
    drawline(True) if dight in [2, 3, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 3, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 6, 8] else drawline(False)
    t.left(90)
    drawline(True) if dight in [0, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 3, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
    t.left(180)
    t.penup()  # 为后续数字确定位置
    t.fd(20)  # 为后续数字确定位置


def drawDate(date):  # 获取要输出的数字
    for d in date:
        drawDight(eval(d))  # 通过 eval() 函数将数字变为整数


def main():
    t.setup(800, 350, 200, 200)
    t.penup()
    t.fd(-300)
    t.pensize(5)
    drawDate("20190203")
    t.hideturtle()
    t.done()


main()

运行结果1
今天的日期
代码2

import turtle as t
import time


def drawGap():# 绘制数码管间隔
    t.penup()
    t.fd(5)


def drawline(draw):# 绘制单段数码管
    drawGap()
    t.pendown() if draw else t.penup()
    t.fd(40)
    drawGap()
    t.right(90)


def drawDight(dight):  # 根据数字绘制七段数码管
    drawline(True) if dight in [2, 3, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 1, 3, 4, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 3, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 6, 8] else drawline(False)
    t.left(90)
    drawline(True) if dight in [0, 4, 5, 6, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 2, 3, 5, 6, 7, 8, 9] else drawline(False)
    drawline(True) if dight in [0, 1, 2, 3, 4, 7, 8, 9] else drawline(False)
    t.left(180)
    t.penup()  # 为后续数字确定位置
    t.fd(20)  # 为后续数字确定位置


def drawDate(date):# date为日期, 格式为 “%Y-%m=%d+”
    t.pencolor('red')
    for i in date:
        if i == '-':
            t.write('年', font=("Arial", 18, "normal"))
            t.pencolor("green")
            t.fd(40)
        elif i == "=":
            t.write("月", font=("Arial", 18, "normal"))
            t.pencolor("blue")
            t.fd(40)
        elif i == "+":
            t.write("日", font=("Arial", 18, "normal"))
        else:
            drawDight(eval(i))


def main():
    t.setup(800, 350, 200, 200)
    t.penup()
    t.fd(-300)
    t.pensize(5)
    drawDate(time.strftime('%Y-%m=%d+', time.gmtime()))# 获取时间
    t.hideturtle()
    t.done()


main()

运行结果2
今天是年三十

实例八 科赫雪花绘制

介绍
科赫曲线是一种分形,又称雪花曲线。本例利用 python 中的 turtle 库与递归函数原理绘制。递归函数有两个重要元素:链条和基例。
代码

import turtle as t


def koch(size, n):
    if n == 0:
        t.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            t.left(angle)
            koch(size, n - 1)


def main():
    t.setup(600, 600)
    t.penup()
    t.goto(-250, 100)
    t.pendown()
    t.pensize(2)
    level = 3
    koch(15, level)  # 3阶科赫曲线绘制
    t.right(120)
    koch(15, level)
    t.right(120)
    koch(15, level)
    t.right(120)
    t.hideturtle()


main()

运行结果
暂无

实例九 基本统计值计算

介绍
利用 python 程序计算一组数字的均值,样本方差和中位数。
代码

def getNum():  # 获取用户不定长度的输入
    nums = []
    iNumStr = input("请输入数字(回车退出):")
    while iNumStr != "":
        nums.append(eval(iNumStr))
        iNumStr = input("请输入数字(回车退出):")
    return nums


def mean(numbers):  # 计算平均值
    s = 0.0
    for num in numbers:
        s = s + num
    return s / len(numbers)


def dev(numbers, mean):  # 计算方差(样本方差)
    stdev = 0.0
    for num in numbers:
        stdev = stdev + (num - mean) ** 2
    return pow(stdev / (len(numbers) - 1), 0.5)


def median(numbers):  # 计算中位数
    sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size // 2 - 1] + numbers[size // 2]) / 2
    else:
        med = numbers[size // 2 ]
    return med


n = getNum()   # getNum()函数也可以换成一组数字列表
m = mean(n)
print("平均值:{}, 方差:{}, 中位数:{}。".format(m, dev(n, m), median(n)))

实例十 文本词频统计

介绍
通过对纯英文文档“Hamlet”与中文文档“三国演义”中的词频以键值对的方式进行计算与存储,并通过打印结果不断去除干扰项,优化结果,最终得出文档中词频最高的前十名。
代码 1
Hamlet词频分析(hamlet.txt 下载地址)

def getText():
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()
    for ch in '`~!@#$%^&*()_+-={}[];,./\、|':  # 归一化处理
        txt = txt.replace(ch, " ")
    return txt


hamletText = getText()
word = hamletText.split()
counts = {}  # 用字典统计词频
for word in words:
    counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)# 根据字典中值的大小来排序
for i in range(10):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count)) #打印词频排名前十

运行结果

the        1138
and         965
to          754
of          669
you         550
i           542
a           542
my          514
hamlet      462
in          436

Process finished with exit code 0

代码 2
三国演义词频分析(三国演义纯文本下载地址)

import jieba

txt = open("threekingdoms.txt", "r", encoding="utf-8").read()  # 打开文件并读取
words = jieba.lcut(txt)  # 利用 jieba 库归一化处理
counts = {}  # 创建一个空字典准备计数
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1  # 对词频计数
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(15):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

运行结果

Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Adam\AppData\Local\Temp\jieba.cache
Loading model cost 0.788 seconds.
Prefix dict has been built succesfully.
曹操          953
孔明          836
将军          772
却说          656
玄德          585
关公          510
丞相          491
二人          469
不可          440
荆州          425
玄德曰        390
孔明曰        390
不能          384
如此          378
张飞          358

Process finished with exit code 0

从运行结果我们不难看出,孔明与孔明曰其实是一人,二人、不可、如此等词不应该作为人名出现。因此我们需对代码 2 进行优化。

import jieba

txt = open("threekingdoms.txt", "r",
           encoding="utf-8").read()  # 打开文件并读取
excludes = {"将军", "却说", "荆州", "二人", "不可", "不能", "如此"}  # 设置一个排除词的集合,可根据结果反复添加,直至结果最优。
words = jieba.lcut(txt)  # 利用 jieba 库归一化处理
counts = {}  # 创建一个空字典准备计数
for word in words:
    if len(word) == 1:
        continue
    elif word == "诸葛亮" or word == "孔明曰":  # 将意思相近的词归一化
        rword = "孔明"
    elif word == "关公" or word == "云长":
        rword = "关羽"
    elif word == "玄德" or word == "玄德曰":
        rword = "刘备"
    elif word == "孟德" or word == "丞相":
        rword = "曹操"
    else:
        rword = word
    counts[rword] = counts.get(rword, 0) + 1
for word in excludes:  # 删除要排除的词
    del counts[word]
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
for i in range(15):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

运行结果

Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\Adam\AppData\Local\Temp\jieba.cache
Loading model cost 0.743 seconds.
Prefix dict has been built succesfully.
曹操         1451
孔明         1383
刘备         1252
关羽          784
张飞          358
商议          344
如何          338
主公          331
军士          317
吕布          300
左右          294
军马          293
赵云          278
引兵          276
次日          271

Process finished with exit code 0

可以看到, 这次的结果仍然不是很完善。但我们可以根据代码 2 的方法来反复调试来达到最佳 效果。

实例十一 自动轨迹绘制

介绍

  1. 定义数据文件格式(接口)
  2. 编写程序,根据文件接口解析参数绘制图形
  3. 编制数据文件

数据含义
代码

import turtle as t
t.title("自动轨迹绘制")
t.setup(800, 600, 0, 0)
t.pencolor("red")
t.pensize(5)
# 数据读取
datals = []
f = open("data.txt")
for line in f:
    line = line.replace("\n", "")
    datals.append(list(map(eval, line.split(","))))
f.close()
# 自动绘制
for i in range(len(datals)):
    t.pencolor(datals[i][3], datals[i][4], datals[i][5])
    t.fd(datals[i][0])
    if datals[i][1]:
        t.right(datals[i][2])
    else:
        t.left(datals[i][2])

实例十二 政府工作报告词云

介绍

“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览者只要一眼扫过文本就可以领略文本的主旨。

python 代码实现词云的基本步骤:

1.读取文件, 分词整理
2.设置并输出词云
3.观察结果, 优化迭代

代码 1
分析文本:《决胜全面建成小康社会 夺取新时代中国特色社会主义伟大胜利》(纯文本下载地址)

import jieba
import wordcloud

f = open("新时代中国特色社会主义.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)  # 将序列中的元素以指定的字符连接生成一个新的字符串
w = wordcloud.WordCloud(font_path="msyh.ttc",
                        width=1000, height=700,
                        background_color="white")
w.generate(txt)
w.to_file("grwordcloud.png")

运行结果
词云 1
代码 2
分析文本:《中共中央 国务院关于实施乡村振兴战略的意见》(纯文本下载地址)

import jieba
import wordcloud
from scipy.misc import imread

mask = imread("chinamap.jpg")
f = open("关于实施乡村振兴战略的意见.txt", "r", encoding="utf-8")
t = f.read()
f.close()
ls = jieba.lcut(t)
txt = " ".join(ls)
w = wordcloud.WordCloud(font_path="msyh.ttc", mask=mask,
                        width=1000, height=700, background_color="white")
w.generate(txt)
w.to_file("grwordcloud.png")

运行结果
词云图

实例十三 体育竞技分析

介绍
利用程序模拟运动员参与多场比赛,从而分析出该运动员的获胜概率。
总体框架如下:
1.打印程序的介绍性信息
2.获得程序运行参数: proA,proB,
3.利用球员A与B的能力值,模拟n局比赛
4.输出球员A和B获胜比赛的场次及概率
程序框架示意图
代码

import random


def printIntro():  # 介绍性内容,提高用户体验
    print("这个程序模拟两个选手A和B的某种竞技比赛")
    print("程序运行需要A和B的能力值(以0到1之间的小数表示)")


def getInputs():  # 获得输入参数
    a = eval(input("请输入选手A的能力值(0-1):"))
    b = eval(input("请输入选手B的能力值(0-1):"))
    n = eval(input("模拟比赛的场次:"))
    return a, b, n


def simNGames(n, probA, probB):  # 模拟n场比赛
    winsA, winsB = 0, 0
    for i in range(n):
        scoreA, scoreB = simOneGame(probA, probB)
        if scoreA > scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB


def simOneGame(probA, probB):  # 模拟一场比赛
    scoreA, scoreB = 0, 0
    serving = "A"
    while not gameOver(scoreA, scoreB):
        if serving == "A":
            if random.random() < probA:
                scoreA += 1
            else:
                serving = "B"
        else:
            if random.random() < probB:
                scoreB += 1
            else:
                serving = "A"
    return scoreA, scoreB


def gameOver(a, b):  # 通过分数判断局的结束
    return a == 15 or b == 15


def printSummary(winsA, winsB):
    n = winsA + winsB
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA / n))
    print("选手B获胜{}场比赛, 占比{:0.1%}".format(winsB, winsB / n))


def main():
    printIntro()
    probA, probB, n = getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(winsA, winsB)


main()

运行结果

这个程序模拟两个选手A和B的某种竞技比赛
程序运行需要A和B的能力值(以01之间的小数表示)
请输入选手A的能力值(0-1):0.48
请输入选手B的能力值(0-1):0.49
模拟比赛的场次:1000
竞技分析开始,共模拟1000场比赛
选手A获胜512场比赛,占比51.2%
选手B获胜488场比赛, 占比48.8%

Process finished with exit code 0

实例十四 第三方库安装脚本

介绍
第三方库批量自动安装
代码

import os

libs = {"numpy", "matplotlib", "pillow", "sklearn", "requests",
        "jieba", "beautifulsoup4", "wheel", "networkx", "sympy",
        "pyinstaller", "django", "flask", "werobot", "pyqt5",
        "pandas", "pyopengl", "pypdf2", "docopt", "pygame"}
try:
    for lib in libs:
        os.system("pip install" + lib)
    print("sucessful")
except:
    print("Failed Somehow")

实例十五 霍兰德人格分析雷达图

代码

# HollandRadarDraw
import numpy as np
import matplotlib.pyplot as plt
import matplotlib

matplotlib.rcParams['font.family'] = 'SimHei'
radar_labels = np.array(['研究型(I)', '艺术型(A)', '社会型(S)',
                         '企业型(E)', '常规型(C)', '现实型(R)'])  # 雷达标签
nAttr = 6
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
                 [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
                 [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
                 [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
                 [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
                 [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]])  # 数据值
data_labels = ('艺术家', '实验员', '工程师', '推销员', '社会工作者', '记事员')
angles = np.linspace(0, 2 * np.pi, nAttr, endpoint=False)
data = np.concatenate((data, [data[0]]))
angles = np.concatenate((angles, [angles[0]]))
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles, data, 'o-', linewidth=1, alpha=0.2)
plt.fill(angles, data, alpha=0.25)
plt.thetagrids(angles * 180 / np.pi, radar_labels, frac=1.2)
plt.figtext(0.52, 0.95, '霍兰德人格分析', ha='center', size=20)
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='large')
plt.grid(True)
plt.savefig('holland_radar.jpg')
plt.show()

运行结果
霍兰德雷达图

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个简单的 Python 实例,演示了如何输出 "Hello World!" 以及如何使用变量和函数: ``` # 输出 "Hello World!" print("Hello World!") # 定义一个变量 message = "Hello World!" # 输出变量的值 print(message) # 定义一个函数 def greet(name): print("Hello, " + name + "!") # 调用函数 greet("John") ``` 这个简单的示例演示了如何输出文本、定义变量、使用变量以及定义和调用函数。希望这能够帮助你开始学习 Python 编程! ### 回答2: 实践记录Python课程 第一节课:入门介绍 在本课中,我们学习了Python编程语言的基本概念和用途。我了解到Python是一种简单易学的高级编程语言,被广泛用于数据分析、机器学习等领域。在课程中,我们首先安装了Python的开发环境,并学习了如何运行第一个简单的Python程序。通过这个实践活动,我对Python的工作流程和开发环境有了更深入的理解。 第二节课:变量与数据类型 本节课我们深入研究了Python中的变量和数据类型。我们通过实践活动学习了如何声明和使用变量,并探索了Python中的不同数据类型,如整数、浮点数、字符串和布尔值。通过这个实践活动,我掌握了Python中数据类型之间的转换和操作,使我能够处理不同类型的数据。 第三节课:条件语句与循环结构 在这一节课中,我们学习了条件语句和循环结构的基本概念和用法。我掌握了Python中的if-else语句以及for和while循环的使用方法。通过实践活动,我成功编写了几个程序来解决特定的问题,如判断一个数字是否为质数,或者计算一个数列的前n项和。这些实践活动使我对条件语句和循环结构有了更深入的理解。 第四节课:函数和模块 这节课我们学习了函数和模块的概念和用法。我了解到函数可以重用代码并提高程序的可读性和可维护性。我们学习了如何定义和调用函数,以及如何将函数分组为模块以供其他程序使用。通过实践活动,我成功编写了几个函数来解决不同的问题,并将它们组织为一个模块。这些实践活动使我对函数和模块的使用和设计更加熟悉。 第五节课:文件操作与异常处理 在最后一节课中,我们学习了文件操作和异常处理的基本概念。通过实践活动,我学会了如何打开、读取和写入文件,并掌握了异常处理的方法。我还学习了如何使用try-except语句来捕获和处理程序运行中的错误。这些实践活动使我能够更好地处理文件和异常,提高程序的稳定性和可靠性。 通过这门Python课程的实践活动,我不仅掌握了Python编程语言的基本知识和技能,还培养了解决问题的思维和编程能力。我相信这些知识和技能将对我未来的学习和职业发展产生积极影响。 ### 回答3: 实践记录: 在这门Python课程中,我学习了许多有关Python编程的知识和技巧。以下是我在课程中进行的实践记录: 1. 第一个实践项目是一个简单的计算器程序。我学会了如何使用Python编写基本的算术运算和控制流程,如if语句和循环。我创建了一个具有用户界面的程序,允许用户输入两个数字并选择要执行的操作,然后输出结果。 2. 接下来,我进行了一个名为“猜数字”的游戏项目。通过这个项目,我学会了如何使用随机数模块和条件语句来生成一个随机的数字,并通过比较用户输入和生成的数字来判断猜测是否正确。我还添加了计数器来追踪用户尝试猜测的次数,以及一些提示来帮助用户。 3. 在课程的后期,我进行了一个实践项目,用Python编写了一个简单的网站爬虫。我学习了如何使用第三方库BeautifulSoup和Requests来获取网页内容,并从中提取有用的信息。使用这个爬虫,我尝试了从某个网站上获取电影评分数据,然后将结果保存到一个文件中。 4. 为了提高我的数据分析能力,我进行了一个实践项目,使用Pandas库来处理和分析大量的数据。我学会了如何读取和写入不同格式的数据文件,如CSV和Excel。我使用Pandas对一个销售数据文件进行了清洗、筛选和统计,然后生成了一份报告。 通过这些实践项目,我不仅学到了很多关于Python编程的知识,还提高了问题解决和数据分析的技能。我相信这些实践经验会对我的职业发展和日常生活产生积极的影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值