《Python 程序设计》张莉主编 第五章:程序控制结构 课后习题答案(一)

这篇具有很好参考价值的文章主要介绍了《Python 程序设计》张莉主编 第五章:程序控制结构 课后习题答案(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

本章主要介绍了在 Python 中对顺序结构、选择结构和循环结构的语句描述,并对列表解析和生成器表达式作简要介绍。

程序 = 算法 + 数据结构

而无论多么复杂的算法,都可以使用上述的三种基本控制中的一种或几种组成。

BTW , 这一章的作业有点长,所以打算分两次上传(实际是因为,我最近摆烂了)


正文

题目一

  • 题目:编写程序读取三角形的三条边长,如果输入合法(三角形任意两边之和大于第三边),则计算它的周长和面积,如果输入是非法的,则输出错误信息。

知识点:

        eval()函数:

            eval(expression,globals=None,local=None)

            作用:将输入的字符串当成有效的 Python 表达式来求值

  • 代码实现
    import math
    
    
    a,b,c = eval(input("请输入三角形三条边长为:"))#输入时使用英文字符
    if a+b>c and a+c>b and b+c>a:
        cir = a+b+c
        p = (cir)/2
        s = math.sqrt(p*(p-a)*(p-b)*(p-c))#海伦公式
        print(cir,s)
    else:
        print("输入数值无法构成三角形")

     

题目二 

 文章来源地址https://www.toymoban.com/news/detail-469937.html

  • 题目:编写一个程序请用户输入美元与人民币之间的国币汇率,而后提示用户输入“0”表示将美元转换为人民币,输入“1”表示将人民币准换为美元,并将用户输入的美元数或人民币数分别转换为人民币或美元,若输入其他数值,则提示输入错误。
  • 以下为运行示例:

Enter the exchange rate from dollars to RMB:6.81

Enter 0 to convert dollers to RMB and 1 vice veras:0

Enter the doller amount:100

$ 100.0 is 681.0 yuan

 

 

Enter the exchange rate from dollars to RMB:6.81

Enter 0 to convert dollers to RMB and 1 vice veras:1

Enter the doller amount:1000

1000 yuan is $ 156.84

 

 

Enter the exchange rate from dollars to RMB:6.81

Enter 0 to convert dollers to RMB and 1 vice veras:5

Incorrect input

 

  • 代码实现
    Exrate = float(input("Enter the exchange rate from dollars to RMB:"))
    Choose = int(input("Enter 0 to convert dollers to RMB and 1 vice veras:"))
    
    if Choose == 0: 
        amount = float(input("Enter the doller amount:"))   
        reason = amount*Exrate
        print(f"$ {amount} is {reason} yuan")
    elif Choose == 1:
        amount = float(input("Enter the doller amount:")) 
        reason = amount/Exrate
        print(f"{reason} yuan is $ {reason}")
    else:
        print("Incorrect input")

     

题目三 

  • 题目:从键盘输入整数 n (1—9之间),对于 1—100 之间的整数删除包含 n 并且能被 n 整除的数,例如如果 n  为 6 ,16 这样的数及是6的倍数的如 12 和 18 这样的数,输出所有满足条件的数,要求每满 10 个数换行(最后一行可能不满 10 个数)

#   测试数据:

#       6

#   屏幕输出:

#       1,2,3,4,5,7,8,9,10,11

#       13,14,15,17,19,20,21,22,23,25

#       27,28,29,31,32,33,34,35,37,38

#       39,40,41,43,44,45,47,49,50,51

#       52,53,55,57,58,59,70,71,73,74

#       75,77,79,80,81,82,83,85,87,88

#       89,91,92,93,94,95,97,98,99,100

知识点:

        strip() 函数:

            str.strip([chars])

            用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列

            注意:该方法只能删除开头或是结尾的字符,不能删除中间的字符

 

            # 一开始在做这道题时,发现换行后每行的末尾字符保留了“,”,所以想到了可不可         以使用这个函数去除末尾的“,”,不过最后也没用上

 

代码实现

n = int(input("输入整数 n (1-9之间):"))
j = 1
for i in range(1,101):

    if i % n == 0 :     #删除整除 n 的数
        continue
    if i % 10 == n :    #删除个位为 n 的数
        continue
    if i // 10 == n:    #删除十位为 n 的数
        continue
    elif i % n != 0:    #每十个数换行并删除最后一位的','
        if j % 10 != 0 :
            print(i,end=',')
        if j % 10 == 0  :        
            print(i)
            print("\n")
        j += 1  
  • 一点碎碎念:

                做这道题时,调式了很多次数据总是不对,最后一行一行的打断点才发现,有一行代码         中的 i  写成了 n , 难崩……

                此外,这个答案还有一个问题没有解决,就是当最后一行不满 10 个数时,末尾处的“,”         没有删除

题目四

  • 题目:求解 1~4 这4个数字可以组成多少个无重复的三位数,并从小到大的顺序输出这些三位数。
  • 知识点:

    Python itertools 使用详解:

        http://t.csdn.cn/YUy3r

    product(*iterables,repeat=1)

        作用:用来生成 *iterables 各元素之间的不同组合

              但是各个组合中的元素顺序是按照参数的先后顺序固定的

     

  • 代码实现

    #解法一
    #这样做的时间复杂度似乎有点高
    
    
    import itertools
    
    
    for i, j, k, l in itertools.product(range(1,5), range(1,5), range(1,5), range(1,5)):
        print(f"{i}{j}{k}{l}",end=' ')
    #解法二
    #似乎这种方法的时间复杂度也没好多少
    
    
    import itertools
    
    
    for i, j in itertools.product(range(1,5), range(1,5)):
        if j == i :
            continue
        for k in range(1,5):
            if k in [j, i]:
                continue
            for l in range(1,5):
                if l in [k, j, i]:
                    continue    
                print (f"{i}{j}{k}{l}",end=' ')

     

题目五 

  • 题目:

        输出所有满足以下条件的 3 位整数:该数是素数,该数的个位数字与十位数字之和被 10 除所得余数恰好是该数的百位数字。

        例如,293 是素数并且(3+9)被 10 除的余数是 2 ,因此 293 是满足条件的 3 位素数。

代码实现


for i, j, k in itertools.product(range(1,10),range(1,10),range(1,10,2)): 
    a = 100*i + 10*j + k    #所有 3 位整数
    
    for i2 in range (2,math.ceil(math.sqrt(a)) + 1):    
        if a % i2 == 0 :    #素数判断      
            break           
    
        if (j+k)%10 == i:   #判断数的个位数字与十位数字之和被 10 除所得余数恰好是该数的百位数字
            break
    else:  
        print(a,end = ' ')

 

 总结

        总而言之,这一章很重要……感觉考试必考……

        写注释是一个好文明,边看边赞边收藏也是一个好文明 (Q_Q)

 

 

 

到了这里,关于《Python 程序设计》张莉主编 第五章:程序控制结构 课后习题答案(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HNUCM信息科学与工程学院第五届大学生程序设计竞赛——正式赛

    签到题 简单dp,取前面第五天的3倍就行 这题被封了不记得什么题了 枚举然后判断回文就行了 简单dp,不能跳的位置置0 算是一个简单思维题吧,先考虑偶奇依次排列,然后发现可能会剩下偶数或者奇数。 如果剩下的是偶数,因为偶数不会影响前面的奇偶性,所以在末尾首先

    2024年02月08日
    浏览(39)
  • 第五届湖北省大学生程序设计竞赛(HBCPC 2023)vp赛后补题

    思路: 数位dp,如果我们暴力的计算的状态的话,显然就是记录每个数字出现几次。但是显然这样难以发挥数位dp的记忆化功效,因为只有出现次数相同,你是什么数字,实际是无所谓的。所以我们尝试记录每个出现次数有多少个数字 尝试打表发现,结果只有1477种 所以,对

    2024年02月07日
    浏览(38)
  • 第五章 结构化设计

    一种软件开发活动,定义实现需求规约所需的软件结构。 结构化设计分为: (1)总体设计:确定系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系。 (2)详细设计:详细描述模块。 体系结构设计(MSD) 接口设计 数据设计 实现软件设计的目标对结

    2024年02月08日
    浏览(47)
  • Python第五章作业

    目录 第1关 回文素 第2关 反素数 第3关 哥德巴赫猜想 第4关 货币转换 第5关 个人信息提取 第6关 身份证号基本信息 第7关 各位数字之和为5的数 第8关 字符串长度 第9关 字符串加密 第10关 输出单词 第11关 字符大小写转换 第12关 查找指定字符 第13关 随机密码生成器

    2024年02月04日
    浏览(47)
  • Python急速入门——(第五章:列表)

    变量可以存储一个元素,而列表可以存储N多个不同类型的数据,程序可以对这些数据进行整体操作(列表也相当于其他语言中的数组)。 一个输出结果: 内存示意图: 列表对象的 id 是778,存储的是当前列表中其他对象的 id ;列表对象的名字是 arr , arr 的id指向列表对象。

    2024年02月05日
    浏览(49)
  • python头歌-python第五章作业

    第1关 回文素数 第2关 反素数 第3关 哥德巴赫猜想 第4关 货币转换 第5关 个人信息提取 第6关 身份证号基本信息 第7关 各位数字之和为5的数 第8关 字符串长度 第9关 字符串加密 第10关 输出单词 第11关 字符大小写转换 第12关 查找指定字符 第13关 随机密码生成器 第

    2024年04月12日
    浏览(42)
  • 《HeadFirst设计模式(第二版)》第五章代码——单例模式

    代码文件目录:  初始版本: 三种解决多线程问题的方法: Notes:

    2024年02月13日
    浏览(31)
  • 智能寻迹避障清障机器人设计(第五章)

    软件设计需要把程序流程确定好,要明确先运行哪一步再到哪一步,然后根据相关流程把程序敲写出来。由于本课题对红外遥控器与蓝牙遥控器都使用了,并且二者的使用思想和代码编程大同小异,但值得注意的是:使用红外遥控器不能通过PWM调节电机速度,因为调节PWM值会

    2024年02月02日
    浏览(34)
  • 《程序是怎样跑起来的》第五章读后感

    读完第五章后,我对程序的控制流程有了更清晰的认识。这一章主要介绍了程序中的条件判断和循环结构,以及它们如何影响程序的执行。 我了解到条件判断语句(如 if-else)和循环语句(如 for、while)是控制程序逻辑的重要工具。它们允许程序根据不同的条件执行不同的操

    2024年02月19日
    浏览(30)
  • 【头歌-Python】Python第五章作业(初级)(1~6)

    如果代码存在问题,麻烦大家指正 ~ ~ 有帮助麻烦点个赞 ~ ~ 任务描述 回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。 用户输入一个正整数 n , 请你在一行内输出从小到大排列的的前n个回文素数,数字后面用一个空格进行分隔。 输入格式 输入一

    2024年02月03日
    浏览(226)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包