zoukankan      html  css  js  c++  java
  • 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)

    截止日期

    实验目标

    • 学会定义函数,使用函数。学会导入在某个文件中定义的函数。
    • 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进一步改造例程。

  • 相关阅读:
    每天一个linux命令(8):scp使用
    C++11 列表初始化
    国外程序员整理的C++资源大全
    fiddler4 使用教程
    C++11 右值引用和转移语义
    数据库炸了——是谁动了我的wait_timeout
    Go组件学习——gorm四步带你搞定DB增删改查
    Go组件学习——cron定时器
    Go语言学习——channel的死锁其实没那么复杂
    Go语言学习——彻底弄懂return和defer的微妙关系
  • 原文地址:https://www.cnblogs.com/zhrb/p/7803104.html
Copyright © 2011-2022 走看看