Python编程实例分析Ⅰ
目录
实例一 温度转换
实例二 货币转换
实例三 绘制毛毛虫
实例四 天天向上
实例五 星期几问题
实例六 输出十二星座的标志
实例七 程序计时
实例八 文本进度条
实例九 身体质量指数BMI计算
实例十 蒙特卡罗方法计算圆周率
实例一 温度转换
设计思路:从程序的角度看,有数据的读入--数据处理--数据输出三个部分组成。首先通过终端(用户输入)读取到温度数据,然后根据后缀判断温度值的类型(华氏度or摄氏度)进行温度转换,最后将转换的结果输出到终端界面(显示给用户)。就是这么一个简单的处理。
利用公式(华氏-摄氏):F=C×1.8+32 C=(F-32)÷1.8
代码实现
根据用户输入数据的后缀进行相应的转换输出,否者输出‘input error’
#t.py
TempStr = input("input please tempture:")
if TempStr[-1] in ['F','f']:C = (eval(TempStr[0:-1]) - 32)/1.8print("Temp:{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:F = 1.8*eval(TempStr[0:-1]) + 32print("Temp:{:.2f}F".format(F))
else:print("input error!!!")
演示
逐行分析
以'#'开头表示注释行,不会被解释。这里仅仅表示脚本文件名为t.py
#t.py
使用input函数从用户终端读取用户输入的数据,并将字符串的形式赋值给TempStr这个变量
TempStr = input("input please tempture:")
检索TempStr的最后一个字符,如果在后面的列表中就进行相应的转换
if TempStr[-1] in ['F','f']:
TempStr[0:-1]表示对字符串进行分割,割掉最后一个字符。eval将字符串两边的引号去掉,使解释器可以把其当成正常的语句。这个表达式总体上完成了温度的转换(F->C)
C = (eval(TempStr[0:-1]) - 32)/1.8
将转换后的数值,格式化输出。{:.2f }表示保留两位有效数字输出。
print("Temp:{:.2f}C".format(C))
完成对摄氏温度到华氏度的转换
elif TempStr[-1] in ['C','c']:F = 1.8*eval(TempStr[0:-1]) + 32print("Temp:{:.2f}F".format(F))
如果上面没有匹配就报错
else:print("input error!!!")
实例二 货币转换
设计思路:对上一个实例有一些小小的改进。程序读取用户输入的的货币面值(RMB或者USD),然后进行价值的转换,将转换后的货币面值再通过打印终端,送给用户显示。
转换公式:1美元 = 6.78人民币。
代码
CurStr = input()
if CurStr[:3] == "RMB": #[:3]用于提取字符串开始位置到3位置的子串(数值部分),然后判断字符串是否相等于"RMB"print("USD{:.2f}".format(eval(CurStr[3:])/6.78)) #进行公式转换,并format方法格式化输出
elif CurStr[:3] in ['USD']:print("RMB{:.2f}".format(eval(CurStr[3:])*6.78))
实例三 绘制毛毛虫
使用第三方库的好处,一方面是省的我们去操心底层代码是如何控制硬件的,另一方面就是让我们以少的代码量去实现复杂的功能。这个例程是使用标准库turtle库中的函数,实现图形的绘制,画一个毛毛虫。重点还是面向对象的思想与功能的实现。
Python是一个面向对象思想的编程,故本例程的对象
画布对象:实际上是一个窗口,通过设置画布的属性,可以改变它的位置和大小。
画笔对象:通过画笔和画布实现图形的绘制,可以设置画笔属性(决定线条的粗细、颜色...),通过画笔动作实现线条绘制。
代码
#test.py
#from turtle inport *
import turtleturtle.setup(650, 350, 200, 200) #设置画布位置和大小
turtle.penup() #抬起画笔
turtle.fd(-250) #画笔直线移动-250单位
turtle.pendown() #放下画笔
turtle.pensize(25) #设置画笔宽度
turtle.pencolor("purple") #设置画笔颜色
turtle.seth(-40) #画笔方向 -40°for i in range(4):turtle.circle(40, 80) #画轨迹(半径40,弧度80)turtle.circle(-40, 80) #毛毛虫身体
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180) #毛毛虫头部
turtle.fd(fd * 2/3)
turtle.done() #画布done --程序不退出
展示
实例四 天天向上
近来科技发展越来越迅速,每过一段时间都会有新的词汇出现。面对这个变化飞快的世界,只有不断的迭代自己,才能跟上时代的变化,而不进步实际上就是一种倒退。我们现在都处于历史的十字路口上,请问,你会怎么做?
设计思路:
一年365天,每天进步1%,累计进步多少呢?
一年365天,每天退步1%,累计剩下多少呢?
一年365天,工作日进步1%,累计进步多少呢?
工作日模式要努力到什么水平,才能与每天努力1%一样?
代码1
#daydayup.pydayfactor = 0.01 #每天改变%1dayup = 1.0
daydown = 1.0
dayup = pow( 1+dayfactor, 365 )
daydown = pow( 1-dayfactor, 365 )
print("每天1%,一年以后 学习者:{:.2f} 荒废者{:.2f}".format(dayup,daydown))dayup = 1.0
daydown = 1.0
for i in range(365):if i % 7 in [6,0]:dayup = dayup*(1-dayfactor)else:dayup = dayup*(1+dayfactor)
print("工作日学习1% 周末玩耍.一年以后:{:.2f}".format(dayup))
演示
代码2 如何努力才能达到目标值
#dayup.py#dayup函数
#每天努力df
#一年之后的效果
def dayup(df):dayup = 1for i in range(365):if i % 7 in [6,0]:dayup = dayup*(1 - 0.01)else:dayup = dayup*(1 + df)return dayup#确定合适的参数,通过不断调用函数试错来寻找努力参数
dayfactor = 0.01
while dayup(dayfactor) < 37.78:dayfactor += 0.001print("工作日努力参数是:{:.3f}".format(dayfactor))
演示
实例五 星期几问题
设计思路:程序读入用户输入的数字,转换成为对应的星期。重点理解字符串的拼接用法
代码
#weekname.py#处理字符串相关函数weekStr = "一二三四五六日"
weekId = eval( input("请输入星期数字(1-7):") )
print( "星期" + weekStr[weekId-1] ) #拼接字符串
演示
实例六 输出十二星座的标志
设计思路:python中字符编码统一使用Unicode码,根据Unicode码制,输出十二星座的logo;使用chr和ord函数,完成字符和unicode码的相互转换。
代码
for i in range(12):print( chr(9800+i), end=" " ) #chr函数根据unicode码,返回相应的字符print( ord( chr(9800+i) ), end="\n" ) #ord函数根据字符,返回对应的unicode码
演示
实例七 程序计时
设计思路:利用Python标准库time函数,实现对程序执行过程的计时统计。
代码
#time.pyfrom time import *start = perf_counter() #获取时间点start,为起始时间sleep(2) #睡眠2send = perf_counter() #获取时间点end,为结束时间print("{}".format(end-start)) #输出时间差,为程序执行的时间
演示
实例八 文本进度条
设计思路:编辑Python代码,结合time库函数的计时功能与print打印函数,实现进度条的显示。在本程序中,通过for循环遍历数列来模拟文本下载/上传的过程,结合time库函数延时函数来实现这个过程;遍历过程中通过对终端界面的行刷新来模拟进度条的动态显示,通过print函数来实现打印输出功能,再通过time库函数的计时功能来实现对进度条时间进度的说明。
PS:在实际进度条实现上,先给进度条一个较慢的速度,再最后提高进度条的速度显示,这样可以给用户一个较好的心里体验。
代码
#textBar.pyimport timescale = 50
print("执行开始".center(scale//2,"-")) #居中打印 两边填充 -
start = time.perf_counter()
for i in range(scale+1):a = '*' * i # i个'*'b = '.' * (scale-i) # (scale-i)个'.'c = (i/scale)*100 # 百分数dur = time.perf_counter() - start #用时print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='') #格式化输出,注意ends参数设置不换行time.sleep(0.1)print("\n"+"执行结束".center(scale//2,'-')) #居中打印 两边填充 -
演示
实例九 身体质量指数BMI计算
输入:对象的身高和体重
处理:利用BMI = 体重 (kg) / 身高2 (m2),计算出BMI指标,判断用户的健康程度
输出:分别按照国内和国际两种标准,输出用户的健康程度
PS:重点学习if多分支语句的处理思想
height, weight = eval(input("请输入身高(m)和体重(\公斤)[逗号隔开]:"))
bmi = weight / pow(height,2)
print("BMI 数值为:{:.2f}.".format(bmi))
who,nat = "",""
if bmi < 18.5:who, nat = "正常","正常"
elif 18.5 <= bmi < 24:who,nat = "正常","正常"
elif 24 <= bmi < 25:who,nat = "正常","偏胖"
elif 25 <= bmi < 28:who,nat = "偏胖","偏胖"
elif 28 <= bmi < 30:who,nat = "偏胖","肥胖"print("国内标准:{} 国际标准:{}".format(who,nat))
展示
实例十 蒙特卡罗方法计算圆周率
圆周率是一个无理数,没有一个数学公式可以精确的表示。对圆周率的计算有两种方法,一种是使用数学近视公式来计算;另外一种就是蒙特卡罗方法了,在本例程中,使用大量随机的离散点来近视区域的面积,使用面积的比例来求圆周率的值。这里使用random函数来产生随机数,使用time库时间计时来计算程序运行的时间。
输入:抛物点数量
处理:计算每一个点到圆心的距离,统计在圆内的点的数量
输出:圆周率
from random import random
from time import perf_counter
DARTS = 1000*1000 #抛洒点的个数
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编程实例分析Ⅰ相关推荐
- Python编程实例03——对英文文本进行分词
系列目录 上一篇:Python编程实例02--实现斐波那契数列 文章目录 系列目录 前言 一.编程要点 1.split()函数 a.单个分隔符分割 b.多个分割符分割 2.sorted()函数与sor ...
- python高级练习题:多米诺平铺 - 5×2N局【难度:4级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python高级练习题:多米诺平铺 - 5×2N局[难度:4级]: 请还检查了在[多米诺拼接系列]其他练习题(https://www.codewars.com/collections/5d19554d ...
- python进阶练习题:馏分类【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python进阶练习题:馏分类[难度:2级]: 为您提供了类"分数",这两个参数(分子,分母)的骨架. 例: fraction1 =分数(4,5) 分数fraction1 =新分数 ...
- python基础练习题:简单有趣#32:创建字谜【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:简单有趣#32:创建字谜[难度:1级]: 任务 现在给你两个字符串S和长度相同的T,由大写英文字母.你的任务是找到获得一些anagram的串T从字符串s需要"更换操作 ...
- 三菱FX2NPLC 应用编程实例分析
今天学习了李金成老师三菱FX PLC应用编程与入门最后一讲,实例分析 三菱FX2NPLC 应用编程实例分析 PLC程序设计原则 PLC编程的基本步骤 实例一.啤酒灌装 实例二.六工位料车控制 PLC程 ...
- python基础练习题:Covfefe【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python基础练习题:Covfefe[难度:1级]: Covfefe 你给出的字符串.你必须用'covfefe但替换的单词(S)coverage,如果你没有找到字符串中的单词'coverage,你必 ...
- Python基础练习题:杂乱无章的页面列表【难度:1级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
Python基础练习题:杂乱无章的页面列表[难度:1级]: 你得到了一本古老的书,不幸的是有几页错误的位置,幸运的是你的计算机有一个从"1"到"n"的顺序的每个 ...
- python进阶练习题:简单有趣#301:跳绳游戏【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python进阶练习题:简单有趣#301:跳绳游戏[难度:2级]: 任务 有些孩子在玩跳绳游戏.儿童跳过绳子在大致相同的速度:每一次秒'.如果孩子跳时失败,他需要整理一下绳子,然后继续.这将需要3 s ...
- python进阶练习题:格式化像“巴特,莉萨和玛吉”名称的字符串。【难度:2级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
python进阶练习题:格式化像"巴特,莉萨和玛吉"名称的字符串.[难度:2级]: 给定:含名称的散列数组 返回:格式化为除了最后两个名字,应该由一个符号分隔用逗号分隔的名称列表的 ...
最新文章
- Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败
- Spring对Hibernate事务管理
- mysql主从虚拟机_虚拟机centos7Mysql实现主从配置
- python解析excel公式_[python][openpyxl]读取excel中公式的结果值
- Shell——流程控制
- 百练 05 切割回文
- NET中各种数据库连接大全
- 【Scala】Scala中特殊函数的使用(代码)
- 机器学习套路 —— 样本集的拆分(正样本、负样本)
- IntelliJ 平台 2020 年路线图,规划原来这么厉害
- 用C语言写一个查单词的小demo
- 51 单片机AD采集电压值的坑
- html cm和px转换,px和cm换算长度单位 怎么把AI单位里的像素改成毫米?
- 双稳态电路的两个稳定状态是什么_555定时器原理知多少?四种应用电路分享
- HTML 制作简单的下拉菜单
- 短信系统通道路由的设计和思路-移讯云短信系统
- IOI 2022国际信息学竞赛那些事儿(附Day1原题)
- java计算机毕业设计小型企业员工工资管理系统源码+系统+数据库+lw文档+mybatis+运行部署
- 什么是Arduino? 了解有关此开源电子平台的信息
- 今天一不小心,把抖爸爸给爬了