初始Python:温度转换程序

目录

Python语言

Python程序:温度转换

IPO方法

注释

基本框架

数据类型

变量命名

强制类型转换

字符串

分支语句

函数

print函数

eval函数

input函数


文前声明:本意是在接着进行C语言编程的相关更新,但因课程安排冲突,开始进行Python的学习内容,等到学校课程进行到C语言的链表后在进行相关的笔记续整,接下来我们将开始认识Python的序章。

Python语言

C语言具有一种严格的格式要求,以及过于明确的块类区分,这需要一定的编程思维来铺垫以夯实基础,这对于小白是十分不友好的。由此,我们的Python语言就可以体现出化繁为简的优点了。在我们的Python语言中,对块类区分取而代之的是较为独特的首行缩进规则,而这恰恰赋予了用Python语言所写地源代码一种难以言喻的美感。

对于简洁,Python可谓是将这一定义诠释到极致,我们分别用C语言和Python语言打印出“Hello world”两段代码来直观的欣赏下Python美学:

C语言:

#include <stdio.h>
int main{
printf("Hello world!");
return 0;
}

Python语言:

print('Hello world')

虽然C语言架构完整,过程严谨,但过于繁杂的辅助元素(类似于main,return)使得它在打印一段极为简单的字符串时难以变得简洁,而Python代码的简洁度肉眼可见。这并不只是少数例子之一,Python的简洁性是在编程领域有目共睹的,简短的代码使得Python语言在编程过程中会出现更少的错误,更快的开发速度。

同时,Python语言的应用性也十分的广阔,甚至在机器人视觉效果领域,Python更是成为了先驱。

此外,Python开发团队秉持着完全免费的开源理念,使得Python语言有着极为庞大的函数库,开源社区中极多数量的可实现功能函数使得Python语言收获了不俗的群众基础。

正是因为如此,我们才可以骄傲的说:“人生苦短,我用Python”。

经过如上介绍,相信大家对Python语言已经有了一定的了解,接下来我们将讲解Python中最为基础的一些语法结构,以此来作为进入Python语言的敲门砖。

Python程序:温度转换

首先,我们给出一段代码:

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

IPO方法

我们先来以初学者的角度来讲,抛开代码而言,我们应该所具有的思维是什么。当你被派发了某个作业或项目,看到它的功能,我们都应该具有统一的思维。因为每一个程序都具有统一的运算模式:输入数据(input),处理数据(process)和输出数据(output),这种朴素的运算模式构成了基本的程序编写方法,即:IPO编写方法

这是每一个程序最基本的编写方法。

在上述这段代码中,IPO模式不止是程序设计的基本方法,还是描述计算问题的方式,我们都知道根据华氏温度和摄氏温度的定义,有着下列的两个相关公式:

C=(F-32)/1.8

F=C*1.8+32

在上述代码中,同样也需要我们去输入数据,在利用公式计算结果后将结果输出,从而求解。

IPO编写方式不仅可以帮助小白清楚的认识到程序设计过程中各个环节所要包含的具体事项,还能使问题清晰的浮现从而更容易被解决。

随着课程的深入学习,程序设计方法论也会在编程思维的逐步锻炼中步入我们的视野,所以IPO方法是用于衔接铺垫过渡期必不可少的固有思维。

接下来,我们将依次讲解上述代码段的含义,从而初步认识Python语言的各项基本语句

注释

良好的注释习惯必不可少。与C语言不同,Python中的编程符号正如第一行所示,单行注释符以#字为首,多行注释以'''开头和结尾。Python语句中的注释和大多数编程语言一样,在编译器编译时会被直接过滤,并不会被编写。

基本框架

前言中所说的首行缩进,在这一段代码中有了很好的体现,每一行代码的开头空白区域表示缩进,缩进数的不同在Python中被定义为表达代码块,即不同的层次和包含关系。

在顺序结构中所写的缩进表示所属关系,缩进可以有单层缩进关系和多层和缩进关系,这也是我们先前在C语言中所讲到的人类伟大的思维:嵌套的体现。

需要注意的是,例如print函数这样较为简单的语句内部是不能使用缩进关系的,缩进关系只能使用在多段语句中表达从属,而不是空穴来风。

缩进规则在编译器中的直观体现,并不同于我们所理解的那样。在计算机内部,具有缩进规则的语句会被自动翻译为不同的行列。我们所看到的被称为物理行,而计算机翻译后所呈现的行列,被称作逻辑行。在经过翻译后,计算机会以逻辑行形式的代码进行处理,从而可以正确的执行人为规定的首行缩进顺序,以此来使代码缩进变的可实现。倘若缩进不符合规则,程序就会报错。

Python的缩进量并没有限制,大型工程多以两个空格为主,在我们平常的编程作业中只需要一个【Tab】(四个空格)来进行划分就足够了。

数据类型

Python的数据类型并不算多,在数据类型中分为基本数据类型和复合数据类型。

基本数据类型:数字,字符串

复合数据类型:列表,元组,字典,集合

在Python中,我们可以利用type函数来实现对某个变量数据类型的查询。我们今天所讲的只有数字和字符串性变量。

变量命名

变量需要有名字,以此来作为计算机识别我们所需要的数据的解释符。在上面的程序中,我们的Temp,C,F都是变量名。在命名时,首字符不可以出现数字,中间不能出现空格,除此以外的任何列数可以以大小写字母,数字,下划线和汉字等字符对变量进行命名,并且不限制长度。(同时需要注意,与C语言一样,不可以定义与保留字(即内置函数名称)相同的标识符)

Python是一种比较随性的语言。这么说并不是没有理由:当你以一个值定义多个变量的过程中,这个值在变量中并没有被保存多次,只是多个变量都值在了同一内存。所以在Python中,“为变量赋值”这一说法更应该改成“为值命名”。

强制类型转换

在上述程序中,我们利用input函数使得计算机从用户输入器中获得了我们所需要的Temp变量,但是对于input函数的使用结果我们可以提前告知是字符型,字符型数据是不可以进行数字间的计算的,所以我们需要对我们所获取的Temp数据进行强制类型转换,在上述程序中,我们使用了eval函数,它可以使字符串以Python中所需要的表达形式呈现并被计算机所理解,从而达到使字符型数据可以参加计算的目的。

字符串

我们所获取到的用户输入的数据就是字符串型数据。譬如用户输入“11F”,在这其中,我们只需要其中的数据''11'',而后的'F'略显多余。这时,我们需要用到Python所提供的区间访问方式:[N:M]格式。,也被称作切片。

Python字符串有两种序号体系:

反向递减序号:…… -9 -8 -7 -6 -5 -4 -3 -2 -1

正向递增序号:0 1 2 3 4 5 6 7 8 9……

以此我们可以来进行区间的引用,例如上述代码中的Temp[-1]则是只引用'F'字符,从而用in方法判断温度的属类。

分支语句

各个语言必不可少的分支语句,Python当然也不能错过。

在代码段里,所出现的基本语句形式如下:

if <条件>:
    <语句>
elif<条件>:
    <语句>
    ...    
else:
    <语句>

其中,程序将由上而下依次识别if到elif后的条件,判断条件是否为True。若是则执行与之跟随的那部分块,若不是则依次识别,直到识别到else后开始执行else后的语句。

函数

函数是每个程序的灵魂。

print函数

print函数是初学者最先接触到的函数,它可以将一段话通过程序打印在屏幕上,实现跨空间和时间的用户与编程者交谈。而程序中后跟随的format方法可以将待输出变量整理成期望值格式进行输出。

eval函数

在先前我们已经对eval函数进行了介绍。他可以使得字符串转换为计算机所期待的Python语句进行执行。

需要注意的是,当eval处理字符串时需要小心,当执行编译

eval("hello")

 会进行报错,因为程序会将hello识别为变量名,在未检测到变量名后程序会作出NameError的提示,若想进行正确的输出字符串hello,则

print("'hello'")

应该以这样的方式进行格外标注。

input函数

同C语言中的scanf函数一样,input函数可以从控制台获得用户输入,然后以字符串类型数据为结果进行返回。同时,input括号内的内容是input函数所包含的提示性文字,实现用户与编程者的沟通。


至此,我们本篇Python的相关讲解到此结束,不论结果如何,抱有着必胜的决心,才可以见到更好的自我。

那么,我今天的博客到此为止,感谢您认真看完了本篇小白编写的博客,以上均为本人理解,如有错误欢迎在评论区指出。

虽然基础薄弱,但今天仍是在幻想成为大佬的一天。

没有销声匿迹,我在热爱生活

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
下面是使用Python语言读取MLX90614红外温度传感器的程序示例: ```python import smbus # 导入smbus模块用于I2C通信 import time # 导入time模块用于延时操作 # 设置I2C总线及传感器地址 bus = smbus.SMBus(1) # I2C总线编号,树莓派3B/3B+/4B使用1,树莓派Zero使用0 address = 0x5A # 传感器地址 # 寄存器地址定义 TA = 0x06 # 环境温度寄存器地址 TOBJ1 = 0x07 # 目标温度寄存器地址 # MLX90614配置寄存器地址定义 # 以下为默认配置,可根据需要更改 CONFIG_ADDR = 0x25 # 配置寄存器地址 CONFIG_VAL = 0x00 # 配置寄存器值,0x00表示默认配置 # 初始化传感器 bus.write_byte_data(address, CONFIG_ADDR, CONFIG_VAL) # 读取环境温度和目标温度 while True: try: # 读取环境温度 temp_raw = bus.read_word_data(address, TA) temp = round((temp_raw*0.02)-273.15, 2) # 将温度转换为摄氏度并保留两位小数 print("环境温度:{}℃".format(temp)) # 读取目标温度 temp_raw = bus.read_word_data(address, TOBJ1) temp = round((temp_raw*0.02)-273.15, 2) # 将温度转换为摄氏度并保留两位小数 print("目标温度:{}℃".format(temp)) # 延时1秒 time.sleep(1) except KeyboardInterrupt: # 按下Ctrl+C停止程序 break ``` 上述程序首先导入了`smbus`和`time`模块,然后设置了I2C总线及MLX90614传感器的地址。接着定义了环境温度和目标温度的寄存器地址,以及配置寄存器的地址和默认值。在程序初始化时,将配置寄存器的值写入传感器以进行配置。之后通过`bus.read_word_data()`函数读取环境温度和目标温度,并使用简单的数学计算将其转换为摄氏度并保留两位小数。最后使用`time.sleep()`函数进行延时。如果按下Ctrl+C,则程序会退出循环。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志做大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值