今天通过一个温度转换的十行代码,理解了一些Python的基本元素。

所谓温度转换,就是摄氏度和华氏度的转换,要求输入摄氏度,可以输出华氏度,反之一样能实现。代码如下:

#TempConvert.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
C = (eval(TempStr[0:-1]-32)/1.8)
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
F = 1.8*(eval(TempStr[0:-1])+32)
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")

只有十行,但还是看不懂?没关系,我开始也不懂,接下来我逐行梳理一遍,感兴趣的话也可以和我从这十行代码开始,了解一些Python的基本元素。

第1行 #TempConvert.py

这行是注释,只是为了提高代码的可读性,不参与代码的执行。

python的注释有两种,单行注释使用#,多行注释可以使用在注释内容前后用三个单引号来实现。

第2行 TempStr = input("请输入带有符号的温度值:")

其中TempStr是一个变量,通过“=”来进行赋值。变量命名规则首字符不能是数字,不能和保留字符相同,区分大小写。

input()是输入函数,获取用户输入的信息,用户输入的信息以字符串的形式保存在<变量>中。

双引号里面的是字符串,这里作用是程序的提示符。

结合起来看,就是显示一段提示文字,然后要输入一个带符号的温度值,以字符串的形式赋值给TempStr。

第3行 if TempStr[-1] in ['F','f']:

if是分支语句,python的分支语句除了if还有elif,else。它们后面都要带一个冒号,这是语法的一部分。

方括号代表数据类型是列表类型,关于数据类型还有整数类型和字符串类型。

-1代表字符串的序号,-1指的字符串的最后一位,关于字符串序号,可以参考下图:

in也是保留字符,用来判断是否在列表中。

结合起来理解,这行代码的意思是,如果变量TempStr中的最后一位,包含F或f,也就是单位是华氏度时,那么就执行下面的代码。

第四行 C = (eval(TempStr[0:-1])-32)/1.8

其中C也是变量,需要将计算的结果赋值给C。

[0:-1]代表字符串的切片,表示的意思是从字符串第一位,到不包含最后一位。也就是提取了单位前的数字。

eval()函数用来执行计算表达式,可以实现去除字符串两边的引号。由于上面是字符串的切片,提取的是一个字符串,去掉两边引号后就可以参与到后面的计算了。

结合起来看,就是将华氏度的数值,通过公式的计算,结果返回给C。

第五行 print("转换后的温度值是:{:.2f}C".format(C))

print()是输出函数,以字符串形式将结果显示出来。

{:.2f}代表保留两位小数,{}代表槽,后续的变量将会引入到这里。这里是将.format(C)中C变量引入进来,也就是第四行计算出的值。

结合来看,就是输出计算后的摄氏温度的值。

第6~10行代码,除了简单的分支语句的区别,其它的在上面都有涉及,主要就是当判断输入为华氏度时,计算输出摄氏度。以及格式不对的情况下显示的字符串。

这样一梳理,十行代码就清晰多了。今天还做了几道习题巩固了一下,说是举一反三,实际上是搞懂了三,才对这个一理解更深刻一些。

关于温度转换问题就聊到这里吧,据说明天又要降温了,大家注意保暖。

最新文章

  1. nodeJS express框架 中文乱码解决办法
  2. redis数据结构整理(一)
  3. DIOCP网络通讯流程
  4. linux常用
  5. 基于Extjs的web表单设计器 第五节——数据库设计
  6. LA3902 Network
  7. input里面的查找标记 ő
  8. js快速分享代码
  9. jQuery实现table隔行换色和鼠标经过变色
  10. web服务器负载均衡与集群基本概念一
  11. MT【274】一道漂亮的不等式题
  12. Java中Double类型的精确计算
  13. MYSQL : The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist
  14. pthon入门之strip()和split()函数简单区分
  15. JS中的函数节流throttle详解和优化
  16. 模块、包及常用模块(time/random/os/sys/shutil)
  17. 二,ESP8266 GPIO和SPI和定时器和串口(基于Lua脚本语言)
  18. SpringMVC系列(十)&lt;mvc:default-servlet-handler/&gt;(处理静态资源)和&lt;mvc:annotation-driven /&gt;
  19. .sh 的运行
  20. EF 多线程TransactionScope事务异常&quot;事务EFTransaction类定义:与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务。&quot;

热门文章

  1. Shell 编程练习
  2. Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo
  3. 一个操作系统的实现sudo mount -o loop pm.img /mnt/floppy mount point /mnt/floppy does not exist losetup device is busy
  4. ZOJ 2563 Long Dominoes(状压DP)题解
  5. 如何在 GitHUb 上使用 gitbook 发布一本在线书籍
  6. Learning JavaScript with MDN (call, apply, bind)
  7. macOS 升级后导致 dart bug
  8. convert image to base64 in javascript
  9. Flutter FractionallySizedBox 设置维度比例 而不是固定的px
  10. Python数据结构与算法_回文数(03)