zoukankan      html  css  js  c++  java
  • 实验与作业(Python)-04 数据类型、数学函数与字符串

    截止日期

    实验目标

    • 继续熟悉for循环与turtle
    • 数值运算符
    • math库常用函数
    • 字符串转化为数值类型(int, float, complex)
    • 字符串常用函数

    实验内容

    任务1.使用for代替while改写圆形生成器。

    圆形生成器参考代码:

    def calcArea(r):
        return 3.14*r*r
    
    n = eval(input("n="))
    rList = []
    while n > 0: # 练习1:尝试使用for改造while循环
        r = eval(input("Please input r:"))
        rList.append(r)
        n = n - 1
    
    for e in rList:
        print(calcArea(e))
    
    #任务2:用turtle将rList中的所有半径画成对应的圆形
    

    作业1. 如果需要循环n次,使用for循环与while循环有何不同?

    任务2 数值运算符号-取整、求余(特别考核,PTA)

    //运算符为取整,即取得两数相除所得到的整数部分,10//3得3。
    %运算符为求余符号,即取得两数相除所得到的余数部分,10%3得1。
    这两种运算符都是计算机中常用的运算符。
    找钱问题:买单时,营业员要为用户找钱。营业员手里有10元、5元、1元(假设1元为最小单位)几种面额的钞票,其希望以尽可能少(张数)的钞票将钱换给用户。比如,需要找给用户17元,那么其需要给用户1张10元,1张5元,2张1元。而不是给用户17张1元或者3张5元与2张1元。

    输入:17
    输出:需找10元1张,5元1张,1元2张

    2.1 直接使用//%对给定值,进行换算。

    2.2 将2.1步骤定义成函数(考核):

    def giveChange(money): #money为要找的钱
        #提示1: 使用x10,x5,x1分别用于存放10元,5元,1元钞票的张数
        #提示2: 使用字符串的format来组装输出结果
        #提示3: 主要使用//与%运算符。
    
    #该函数无需return,直接返回print输出结果    
    #1. 使用input提示"请输入余额"。注意:需要使用int或者eval函数将字符串转化为证书
    #2. 调用giveChange函数,输出结果。
    

    作业2:代码阅读

    IPO分析:上述问题的IPO分别是什么?
    手写或者打印代码,然后为代码每行做注释

    任务3.math库常用函数

    3.1.阅读并运行如下代码,尝试解释该段代码含义
    案例:天天向上。1年365天,如果好好学习时能力值相比前一天提高1%,放任时相比前一天下降1%。1年后,效果相差多少呢?

    import math
    dayfactor = 0.01
    dayup = math.pow((1.0 + dayfactor), 365) # 每天提高0.01
    daydown = math.pow((1.0 - dayfactor), 365) # 每天荒废0.01
    print("向上: {:.2f}, 向下: {:.2f}.".format(dayup, daydown))
    

    3.2 银行存款问题:
    假设银行存款年利率为rate%,存入一笔钱(money),n年后将得到多少钱。
    a) 直接运算。
    b) 使用IPO分析该问题,将步骤a)中的核心算法定义成函数。函数的输入参数应该是哪几个,返回(return)什么?尝试调用该函数,验证你的函数是否书写正确。

    任务4. 回文问题(特别考核,PTA):

    回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。如,a, aba, 123454321都是回文。编写一个函数判断输入的字符串是否是回文,如果是则返回True,否则返回False。
    调用的时候:从键盘输入一个字符串line,然后调用该函数判断line是否为回文。如果是回文,输出"line是回文",否则输出“line不是回文”。注意:这里的line应该是你输入的那个字符串。
    准备知识: == 进行是否相等的判断, != 进行是否不等于的判断, len()函数代表求序列长度,比如可以求字符串的长度,len(str1)代表求字符串str1的长度。
    1.初级版:只判断长度为5的字符串是否为回文。先使用中文描述,然后将其转化为代码。进阶:将该功能定义成函数。
    2.进阶版:能判断任意长度(>0)的字符串是否为回文。特别考核:将其定义为函数。
    3.去除空格:有时输入的字符串带空格会导致判断结果不符合预期,比如输入" abcba ",会返回False。现需要对输入的字符串进行预处理,去掉其左右空格后再判断。尝试编程实现。
    4.判断是否是数字:处理输入时,希望输入的所有字符均为数字,一旦发现字符串中有其他字符就提示“您所输入的字符串含有非数字字符”,尝试编程实现。

    作业3:

    完成其中的3、4,参考课本字符串的函数。


    任务5.天天向上(编程)-特别考核

    阅读课本P76的实例代码3.4,解决课后题3.2。
    进阶:使用函数改造课后题3.2。
    作业:尝试解决课后题3.3。

    任务6.字符串常用函数-预习

    6.1 代码阅读(ord函数)
    尝试运行并解释下列代码的含义(建议写在纸上)

    plaincode = input("请输入明文: ")
    for p in plaincode:
        if ord("a") <= ord(p) <= ord("z"):
            print(chr(ord("a") + (ord(p) - ord("a") + 3)%26), end='')
        else:
            print(p, end="")
    

    作业4:

    4.1 为上述代码每一行添加注释
    4.2 使用函数改写上面的for中的内容,输入参数是什么?
    4.3 改写4.2,不要使用print直接输出结果,而是将结果return出来。

    6.2 尝试使用字符串的format函数与*(字符串相乘)输出如下所示的田字格:
    

    作业5:

    5.1 请使用字符串相乘简化代码
    5.2 特别考核:观察每行规律,请使用for循环改写。

    任务7.文本进度条-预习

    7.1 尝试运行并读懂课本P89-91示例4.1-4.3,并为4.3每一行加注释,并回答为什么输出要有一个 。(建议写在纸上)
    7.2 在命令行控制台下运行如下代码,观察运行结果,为下面每行程序加注释,并回答为何会产生这种运行效果。(建议写在纸上)

    import time
    while True:
        for i in ['/','-','|','\','|']:
            print("%s
    "%i, end = '')
            time.sleep(0.05)
    

    任务8.文本进度条-特别考核

    实现课后题3.6。

    选做:课后题3.8
    需先使用下列命令安装tqdm第三方库,然后运行:
    pip3 install tqdm -i https://pypi.douban.com/simple

  • 相关阅读:
    koa2 ctx.body 在 mysql query的回调函数中无法赋值的问题
    hibernate 实现多表连接查询
    Struts2 的国际化实现
    struts2 dwr There is no Action mapped for action ... 原因及解决方案
    Hibernate4.1配置数据库连接池 org.hibernate.service.jndi.JndiException:Unable to lookup JNDI name java:comp/env...
    Android 使用JSON格式与服务器交互 中文乱码问题解决
    Struts2 访问 Servlet API 的三种方法
    Struts2 输入校验
    hibernate4 和 spring3 整合注意事项 否则java.lang.NoSuchMethodError异常
    MySQL密码忘记的解决方案
  • 原文地址:https://www.cnblogs.com/zhrb/p/7802927.html
Copyright © 2011-2022 走看看