实验与作业(Python)-02 Python函数入门与温度转换程序
截止日期
实验目标
- 学会定义函数,使用函数。学会导入在某个文件中定义的函数。
- input获得值,然后通过eval或者int、float将其转换为相应的类型。
- 学会使用列表:访问列表、append、遍历列表。
实验内容
任务1:函数的定义与调用
#这里是函数的定义,calcArea是函数名,我们可以通过函数名进行调用。
def calcArea(r): #r是输入参数,代表半径
return 3.14*r*r #return, 将计算结果返回到调用的地方
#上面只是定义。定义的时候并没有执行这段代码。
#常见错误1:错误的输入参数
calcArea(r)
#常见错误2:结果未输出
calcArea(3)
#这里是函数的调用
x = calcArea(2) #调用函数,以2为入参,最后将返回结果赋值给x。但并没有输出。
print(x) #在控制台输出x
print(calcArea(1)) #将调用函数calcArea(1)的返回值直接输出
print(calcArea(3))
print(calcArea(5))
print(calcArea(7))
关键点:1.函数的定义与调用不一样,2.函数名要取的有意义,3.入参到底应该放几个参数。
作业1:
结合上述代码,简述使用函数的好处。
任务2:熟悉input,字符串与数值,print函数,eval函数
#第1步,字符串与数值的区别
a = 1 #数值
b = '1' #字符串,也可以a = "1"
print(a*5) #数值的乘法
print(b*5) #字符串的乘法
#第2步,使用input函数获得控制台输入的字符串
x = input("x=")
print(type(x)) #打印x的类型
print(x*3)
#第3步,int与float将字符串转化为数值
y = int(input("y=")) #使用int函数将输入值转化为整型数值
print(type(y))
print(y*3) #常犯错误 print y*3
y = float(input('y=')) #使用float函数将输入值转化为带小数点的数
print(type(y))
print(y*3)
#第4步,使用eval将字符串转换成表达式进行运算
line = input("请输入一个式子:") #比如输入 3+5,那么line存储了字符串'3+5'
#想要获得'3+5'所代表的式子的具体值呢?注意:'3+5'只是一个字符串,不能计算
z = eval(line) #这里,把你输入的'3+5'字符串变成一个式子,所以值等于?
print(eval('3')) #这里把字符串'3'转化为式子3,所以值等于数值的3
t = 3
print(eval('t+2')) #这里把字符串't+2'转化为式子t+2,前面t=3,所以该式子等于?
print(eval('temp+2')) #这里把字符串'temp+2'转化为式子temp+2,然而前面并没有定义temp,所以会发生什么情况?
任务3:列表的使用
变量只能存放一个值,比如a = 3
。如果需要存放多个值呢?比如,存放所有圆形的半径。我们就需要列表,列表语法如下:
rList = [] #一个空的列表,里面没有任何值
rList.append(3) #往列表中加入3这个元素
rList.append(2) #往列表中加入2这个元素
print(rList) #输出rList中的所有值
print(len(rList)) #len函数求列表中元素的个数
for e in rList: #将rList中的所有值依次输出。详解:每次将rList中1个元素取出来放到e中,然后print(e)。
print(e)
3.1 通过input提示输入圆的半径,然后将值赋给r,然后调用求圆面积的函数,并输出其值。
3.2 通过input提示输入圆的半径的表达式,然后将表达式的值赋给r
,然后调用求圆面积的函数,并输出其值。注意:与1.1不同,即使输入3+1.1
,也可以计算成功。
任务4:编写圆形生成器程序(以文件的形式运行)
4.1 学会定义函数,求圆面积,对指定的r计算圆面积。 //辅导:函数定义与调用
4.2 通过input输入圆半径,然后调用4.1定义的函数。 //辅导:float函数或者eval
4.3 使用while循环,将5个r值放入一个列表rList
。 //辅导:列表[],append,while
4.4 对rList中的每个r调用4.1定义的函数计算其面积。 //辅导:遍历列表,for e in rList:
4.5 使用turtle对rList中的每个r画出相应的圆。
4.6 进阶:让这些圆依次从左到右排列,且相切。
课上完成4.1-4.3。有余力的同学请继续完成4.4及以后。
作业2:
将以上代码存成文件运行。然后手写或者打印出来,为里面的每一行加注释。
任务5:运行并阅读温度转程序然后进行改写
内容:
编写一段程序可以将你从控制台输入的温度数值(带温度标志的)转换成华氏或摄氏度。
IPO分析:
I:带华氏或摄氏标志的温度值
P:根据温度标志选择适当的温度转换算法
O:带摄氏或华氏标志的温度值
算法:
C=(F-32)/1.8
F=C*1.8+32
C表示摄氏温度,F表示华氏温度。
示例:
输入:82F 输出:27.78C
输入:-30C 输出:-22.00F
例程:
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("输入格式错误")
在IDLE中新建文件TempConvert1.py,然后运行。
讲解:
1.TempStr = input("请输入带有符号的温度值" #在控制台显示提示信息,然后将用户从控制台输入的信息作为字符串赋值给TempStr
2.TempStr[-1] #取TempStr字符串的最后一个字符
3.TempStr[0:-1] #截取除从第0个字符到最后一个字符(不包含最后一个)之间的所有字符。
4.eval(TempStr[0:-1]) #将TempStr[0:-1]字符串转化为表达式运算,在这里指的是将字符串转换为数值(转化为数值后才能进行数学运算)。
任务(使用函数改造例程):
上面程序中,if..elif..else程序块负责处理传入的带温度标志的字符串并打印相应的提示信息,尝试定义一个函数TempConvert(ValueStr)取代上面的if..elif..else程序块。以后只需要调用TempConvert(ValueStr)函数,就可执行这段处理代码:
def TempConvert(valueStr):
#及一下这里是你的代码
if 输入的的温度是华氏:
#转换代码
return "转换后的温度是{:.2f}C".format(C)
#elif 输入的温度是摄氏度:
#转换代码
return "转换后的温度是{:.2f}F".format(F)
else:
return "输入格式错误"
讲解:
return ... 代表将...作为返回值返回给函数调用的地方。如,x = TempConvert(82F),执行完以后x的值就为“转换后的温度是27.78C”
作业4:
利用定义好TempConvert函数改造例程,使其看起来更简洁。
将以上代码存成文件运行。然后手写或者打印出来,为里面的每一行加注释。
进阶2(函数模块化改造):
编写函数有一个原则:函数的功能要单一,不要设计多用途的函数。函数TempConvert既进行温度转换(P),又将该值与提示信息“转换后的温度是”相绑定(O),这就使得后续对温度值的计算极不方便(比如后续希望比较温度的大小,需要将隐藏在提示信息的温度值抽取出来,如需要将“转换后的温度是27.78C”中的27.78C抽取出来,非常麻烦)。一般来说需将IPO相分离,P仅负责单纯的计算工作。改造函数TempConvert,让其只进行温度转换然后返回必要的值。如,对于输入82F
返回27.78C
,对于输入-30C
返回-22.00F
,对于输入错误则返回ERR
,而无需返回格式化后的全部提示信息。利用改造好的TempConvert进一步改造例程。
实验与作业(Python)-02 Python函数入门与温度转换程序的更多相关文章
- 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)
截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...
- 实验与作业(Python)-03 Python程序实例解析(函数、循环、range、turtle)
截止日期: 要求: 下周实验课前上交,做好后在实验课上检查可获取平时分. 做出进阶或选做的的请用清晰的标致标识出来,方便老师批改 本次作业:可提交也可不提交.作业算平时成绩. 本次作业内容量较大,请组 ...
- 编程入门python之定义函数【转】
编程入门python之定义函数 零基础学编程by学哥 2017-02-06 10:51 今天讲python函数. 输入参数求三角形或圆形或长方形的面积 先输入1个参数:形状类型 1=三角形 2=圆形 ...
- python之函数入门
python之函数入门 一. 什么是函数 二. 函数定义, 函数名, 函数体以及函数的调用 三. 函数的返回值 四. 函数的参数 五.函数名->第一类对象 六.闭包 一,什么是函数 函数: 对代 ...
- Python入门之 Python内置函数
Python入门之 Python内置函数 函数就是以功能为导向,一个函数封装一个功能,那么Python将一些常用的功能(比如len)给我们封装成了一个一个的函数,供我们使用,他们不仅效率高(底层都是用 ...
- 实验与作业(Python)-03 Python程序实例解析
截止日期: 要求: 下周实验课前上交,做好后在实验课上检查可获取平时分. 做出进阶或选做的的请用清晰的标致标识出来,方便老师批改 本次作业:可提交也可不提交.作业算平时成绩. 本次作业内容量较大,请组 ...
- python函数入门
知识内容: 1.函数的作用 2.函数的定义与调用 3.函数的返回值 4.函数的参数 5.局部变量与全局变量 6.作用域 一.函数的作用 1.复用代码 将可能重复执行的代码封装成函数,并在需要执行的地方 ...
- Python函数(入门6)
转载请标明出处: http://www.cnblogs.com/why168888/p/6407970.html 本文出自:[Edwin博客园] Python函数 1. Python之调用函数 pri ...
- Python——函数入门(二)
一.函数的参数 我们在定义函数时,可以定义形式参数(简称形参),这些形参的值在函数调用的时候才会确定,形参的值由调用者负责传入. 1.关键字参数 在Python中,函数的参数名并不是没有意义的,在调用 ...
随机推荐
- C#的扩展方法简介
顾名思义,这是一种可以扩展C#类的操作,MSDN上的说法是: "扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.&quo ...
- Oracle12c:创建主分区、子分区,实现自动分区插入效果
单表自动单个分区字段使用方式,请参考:<Oracle12c:自动分区表> 两个分区字段时,必须一个主分区字段和一个子分区字段构成(以下代码测试是在oracle12.1版本): create ...
- hdu-2141 Can you find it?---暴力+二分
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意: 给ABC三个数组,给一个X,求是否存在Ai+Bj+Ck = X 思路: 等式转化成 ...
- JavaScript中内存使用规则--堆和栈
堆和栈都是运行时内存中分配的一个数据区,因此也被称为堆区和栈区,但二者存储的数据类型和处理速度不同.堆(heap)用于复杂数据类型(引用类型)分配空间,例如数组对象.object对象:它是运行时动态分 ...
- 关于阮大神的es6标准入门第一章
题记:之前在10月份的时候写过阮大神的es6的第一章,但是由于那段时间项目组的动荡,所以也没有什么后续,导致我现在对es6基本都忘的差不多了,不过,现在换了新公司,最近也没什么任务,所以现在开始重新写 ...
- ES6关于Promise的用法
Promise 对象用于一个异步操作的最终完成(或失败)及其结果值的表示.简单点说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作. 它的一般表示形 ...
- [LeetCode] Knight Probability in Chessboard 棋盘上骑士的可能性
On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exactly K ...
- PyCharm 2018 永久激活
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...
- JS获取URL传的值与解决获取URL中的中文参数出现乱码
大家好,我是小C, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...
- 参考用bat文件
@echo off rem *************** start of 'main' set DEBUG= " (set TRACE=echo) else (set TRACE=rem ...