【Python】练习:控制语句(二)第4关

news2024/9/20 18:34:28

第4关:控制结构综合实训

  • 第一题
  • 第二题(※)
  • 第三题(※)
  • 第四题(※)
  • 第五题(※)
  • 第六题(※)

第一题

在这里插入图片描述

#第一题

def rankHurricane(velocity):
    #请在下面编写代码
    # ********** Begin ********** #
    if velocity<74:
        rank=None
    elif 74 <= velocity <= 95:
        rank = 1
    elif velocity <= 110:
        rank = 2
    elif velocity <= 130:
        rank = 3
    elif velocity <= 154:
        rank = 4
    else:
        rank = 5

    # ********** End ********** #
    #请不要修改下面的代码
    return rank

第二题(※)

在这里插入图片描述

解题思路
(1)在八位数字里,从右边开始,取最后一位后,加至偶数位和中,然后去掉最后一位,此时为奇数位,取其并乘2
(2)把奇数位乘以2的结果拆解相加:结果是两位数,因此先%10得到个位数,后//10去掉个位数,循环结束条件为even==0,即十位数已经加完,只剩下十位数//10,得到0,不再进行相加
(3)去掉该奇数位,如此循环。循环结束条件依然是num为0

#第二题

def validCreditCard(num):
    #请在下面编写代码
    # ********** Begin ********** #
    valid=False
    if 10000000<num<100000000:
        oddSum=0
        even=0
        evenSum=0
        while not(num==0):
            oddSum+=(num%10)
            num=num//10
            even=(num%10)*2
            while not(even==0):
                evenSum+=(even%10)
                even=even//10
            num=num//10
        final=oddSum+evenSum
        if final%10==0:
            valid=True

    # ********** End ********** #    
    #请不要修改下面的代码
    return valid

第三题(※)

在这里插入图片描述

解题思路
(1)在九位数字中,先把公式中的权重和写出来:从最后一位起,逐个乘以对应系数
(2)使用字符串相连接,不足九位,前面补0
(3)将公式总和%11,余数为1,则补X;余数为0,则刚好是11的倍数,补0;其他情况,算加上数字几后可以成为11的倍数,后补上该数字

#第三题

def ISBN(n):
    # 请在下面编写代码
    # ********** Begin ********** #
    total=0
    num=n
    for i in range(2,11):
        digit=num%10
        total+=i*digit
        num//=10
    strn=str(n)
    if len(strn)<9:
        strn='0'*(9-len(strn))+strn
    trueISBN=''
    if total%11==1:
        trueISBN=strn+'X'
    elif total%11==0:
        trueISBN=strn+'0'
    else:
        trueISBN=strn+str(11-(total%11))    

    # ********** End ********** #    
    # 请不要修改下面的代码
    return (trueISBN)

第四题(※)

在这里插入图片描述

解题思路
(1)本题涉及三个函数的编写
(2)借助计算y年m月d日是星期几这个函数(记):
在这里插入图片描述
(3)判断闰年的函数:四年一闰,百年不闰,四百年又闰
(4)将本月1号是星期几赋给date,并判断此月有多少天
(5)打印y年m月,打印星期,打印一号前的空格,而后打印1号到28/29/30/31号,一星期一星期打印。count = (count + 1) % 7 更新count为下一天的星期几,如果count为0,表示已经到了星期六,打印换行符print()以开始新的一周

#第四题

def day(y, m, d):#计算y年m月d日是星期几
    # 请在下面编写代码
    # ********** Begin ********** #
    
    # 调整年份,如果月份在3月之前,年份减1
    y0 = y - (14 - m) // 12
    # 计算世纪数和世纪内的年份,用于计算星期几
    x = y0 + y0 // 4 - y0 // 100 + y0 // 400
    # 调整月份,如果月份在3月之前,将其转换为前一年的13月或14月
    m0 = m + 12 * ((14 - m) // 12) - 2
    # 使用蔡勒公式计算星期几,结果是一个06的数字,0代表星期六,1代表星期日,以此类推
    d0 = (d + x + (31 * m0) // 12) % 7

    # ********** End ********** #    
    # 请不要修改下面的代码
    return d0

def isLeapYear(year): #判断year年是否闰年
    # 请在下面编写代码
    # ********** Begin ********** #
    isLeapYear=(year%4==0)
    isLeapYear=isLeapYear and (year%100!=0)
    isLeapYear=isLeapYear or (year%400==0)

    # ********** End ********** #    
    # 请不要修改下面的代码
    return isLeapYear

def calendar(y, m): #打印y年m月日历
    print('       {}年{}月'.format(y,m))
    print('Su\tM\tTu\tW\tTh\tF\tSa')
    # 请在下面编写代码
    # ********** Begin ********** #
    date=day(y,m,1)
    days=0
    if m in [1,3,5,7,8,10,12]:
        days=31
    elif m in [4,6,9,11]:
        days=30
    else:
        if isLeapYear(y):
            days=29
        else:
            days=28
    count=date
    for i in range(date):
        print('\t',end='')
    for d in range(1,days+1):
        print(str(d)+'\t',end="")
        count=(count+1)%7
        if count==0:
            print()
    print()

    # ********** End ********** #
    # 请不要修改下面的代码

测试结果
在这里插入图片描述

第五题(※)

在这里插入图片描述

解题思路
(1)利用四个嵌套循环找到abcd
(2)从1到n开始找a,然后从a到n开始找b,然后等号右边,从a+1到n开始找c,从c到n开始找d
(3)这个过程中,a的立方、a的立方+b的立方不能超过n,c的立方不能超过a的立方+b的立方、c的立方+d的立方不能超过a的立方+b的立方

#第五题

def ramanujan(n):
    results = []
    #请在下面编写代码
    # ********** Begin ********** #
    for a in range(1,n+1):
        a3=a*a*a
        if a3>n:
            break
        for b in range(a,n+1):
            b3=b*b*b
            if a3+b3>n:
                break
            for c in range(a+1,n+1):
                c3=c*c*c
                if c3>a3+b3:
                    break
                for d in range(c,n+1):
                    d3=d*d*d
                    if c3+d3>a3+b3:
                        break
                    if c3+d3==a3+b3:
                        result=str(a3+b3)+' = '+str(a)+'^3 + '+str(b)+'^3 = '+str(c)+'^3 + '+str(d)+'^3'
                        results.append(result)

    # ********** End ********** #    
    # 请不要修改下面的代码
    return results

测试结果
在这里插入图片描述

第六题(※)

在这里插入图片描述

解题思路:
(1)0~9:借助字典转换
(2)10 ~ 19、 20 ~ 99:用字典写出10 ~ 19的转换以及0、2 ~ 9的转换
(3)百位:分为0 ~ 99和100以后的处理

#第六题

def unit_to_word(u): #将09的数字转换成英文,并返回转换后的英文
    # 请在下面编写代码
    # ********** Begin ********** #
    # 定义一个转换表,将数字映射到对应的英文单词
    convert_table = {
        0: "zero",
        1: "one",
        2: "two",
        3: "three",
        4: "four",
        5: "five",
        6: "six",
        7: "seven",
        8: "eight",
        9: "nine",
    }
    # 返回对应的英文单词
    return convert_table[u]

    # ********** End ********** #
    # 请不要修改下面的代码


def tens_to_word(t): #利用unit_to_word,将1019、以及2099的十位部分数字转换成英文,并返回转换后的英文
    # 请在下面编写代码
    # ********** Begin ********** #
    convert_table={
        0:"",
        10:"ten",
        11:"eleven",
        12:"twelve",
        13:"thirteen",
        14:"fourteen",
        15:"fifteen",
        16:"sixteen",
        17:"seventeen",
        18:"eighteen",
        19:"nineteen",
        2:"twenty",
        3:"thirty",
        4:"forty",
        5:"fifty",
        6:"sixty",
        7:"seventy",
        8:"eighty",
        9:"ninety",
    }
    # 如果数字在1019之间,直接返回对应的英文单词
    if 9<t<20:
        return convert_table[t]
    else:
        tens=convert_table[t//10]+" "+unit_to_word(t%10)
        return tens.lstrip()

    # ********** End ********** #
    # 请不要修改下面的代码

def hundreds_to_word(h): #利用unit_to_word、tens_to_word进行转换,并返回转换后结果的函数
    # 请在下面编写代码
    # ********** Begin ********** #
    # 如果数字大于99,处理百位
    if h>99:
        word=unit_to_word(h//100)+" hundred"
        tens=h%100
        if tens==0:
            return word
        else:
            return word+" and "+tens_to_word(tens)
    # 如果数字小于或等于99,直接调用tens_to_word函数
    else:
        return tens_to_word(h)
        
    # ********** End ********** #    
    # 请不要修改下面的代码

测试结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2149690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Simpfun游戏云1]搭建MC Java+基岩互通生存游戏服务器

众所周知&#xff0c;MC有多个客户端&#xff0c;像常见的比如Java Edition和基岩等&#xff0c;这就导致&#xff0c;比如我知道一个超级好玩的JE服务器&#xff0c;但我又想使用基岩版来玩&#xff0c;肯定是不行的&#xff0c;因为通讯协议不一样。 这就有一些人才发明了多…

浅谈死锁以及判断死锁的方法

引言 我们在并发情况下见过很多种锁&#xff0c;synchronized&#xff0c;ReentrantLock 等等&#xff0c;这些锁是为了保证线程安全&#xff0c;使线程同步的锁&#xff0c;与今天所要学习的死锁并不相同&#xff0c;死锁并不是一种锁&#xff0c;而是一种现象。 官方定义&a…

Live800:从心出发,以情动人:构建深度客户服务文化

在当今这个竞争激烈的市场环境中&#xff0c;企业之间的较量已不仅仅局限于产品质量的比拼&#xff0c;更在于谁能提供更优质、更贴心的客户服务。在这个背景下&#xff0c;“从心出发&#xff0c;以情动人”成为了构建深度客户服务文化的核心理念&#xff0c;它要求企业不仅要…

Nacos注册中心(Nacos安装,快速入门,多级存储,负载均衡,环境隔离,配置管理,热更新,集群搭建,nginx反向代理)

Nacos注册中心 1. Nacos安装 (windows) 1.1 官网下载 网址:https://github.com/alibaba/nacos/releases/tag/1.4.1 这里下载nacos1.4.1的Windows版本为例1.2 解压到本地 注: 解压到非中文目录 nacos默认端口号:8848,可在配置文件properties中修改1.3 启动nacos 在G:\Sp…

基于单片机的智能电话控制系统设计

摘要&#xff1a; 为了能够使用电话实现电器设备的控制&#xff0c;文中通过单片机及双音多频解码集成电路&#xff0c;使用用 户通过电话输入相应的指令就能够实现远程设备的智能化控制。文章主要对系统的构成、软件及 硬件设计进行了简单的介绍&#xff0c;并且对其中的电路…

前端vue-v-for循环遍历

&#xff08;item,index&#xff09;in list中&#xff0c;index这个索引可加可不加&#xff0c;item代表list中的每一个元素&#xff0c;list可以是数组&#xff0c;也可以是对象&#xff0c;要遍历谁就把 &#xff08;item,index&#xff09;in list加在哪里。 关于加不加&a…

抓机遇,促发展——2025第十二届广州国际汽车零部件加工技术及汽车模具展览会

新能源时代&#xff0c;电动化、智能化正在重塑全球汽车市场格局。中国自主品牌新能源汽车的市占率不断提升、头部效应初显&#xff0c;更有机会带动相关供应链企业成长。中国的零部件企业有望抓住变局下的机会&#xff0c;在新一轮竞争中崛起。 智能电动车时代&#xff0c;汽车…

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【内核通信机制】上

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核&#xff08;LiteOS-M&#xff09; 轻量系统内核&#…

操作系统迁移(CentOs -> Ubuntu)

目录 1. CentOs操作系统:备份数据 1.1 gitee备份 1.1.1 CentOs安装git 1.1.1.1 运行安装命令 1.1.1.2 运行安装命令时出错 1.1.1.3 再次执行安装命令 1.1.2 gitee创建仓库 1.1.2.1 创建仓库 1.1.3 备份 1.1.3.1 复制链接 1.1.3.2 克隆仓库 1.1.3.3 备份 1.3.3.4 查…

docker学习第一步:基于Linux安装docker

要求Linux下的CentOS 7.0 以上的版本 01 安装docker版本仓库 1、设置仓库 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 2、稳定仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 02 安装及使用do…

一文看懂误植域名的威胁和对策

你熟悉“误植域名”&#xff08;typosquatting&#xff09;这个术语吗&#xff1f;这是一种域名抢注&#xff0c;可能会损害你的品牌和声誉。我们在这篇博文中将探讨误植域名是什么、它与域名抢注的区别&#xff0c;并提供如何防止这种行为的要点。另外&#xff0c;我们将讨论沦…

选择优质代理IP建议分享

“在互联网的广阔世界中&#xff0c;代理IP作为一种重要的网络工具&#xff0c;扮演着连接用户与目标服务器之间的桥梁角色。不同类型的代理IP适用于不同的场景和需求&#xff0c;因此选择合适的代理IP类型对于提高网络访问效率、保护用户隐私至关重要。” 一、代理IP类型概述 …

如何在多台Linux虚拟机上安装和配置Zookeeper集群

Zookeeper 是一个高性能的协调服务&#xff0c;广泛应用于分布式系统中。本文将详细介绍如何在多台Linux虚拟机上安装和配置Zookeeper集群。下面以三台服务器&#xff08;node1、node2、node3&#xff09;进行讲解。 前置准备&#xff1a; 配置多台Linux虚拟机参考&#xff1a;…

跨国公司决策的影响与中国IT产业的应对

跨国公司在华研发中心的调整是一个复杂的现象&#xff0c;它可能受到多种因素的影响&#xff0c;包括全球经济环境的变化、成本考量、战略重心的转移以及地缘政治因素等。IBM中国研发中心的撤出可能会对中国IT行业造成短期的就业压力&#xff0c;加速人才流动&#xff0c;并促使…

YOLOv5白皮书-第Y1周:调用官方权重进行检测

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](小团体&#xff5e;第八波) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](K同学啊-CSDN博客)** 一、前言 拖了好久&#xff0c;终于要开始目标检测系列了。自己想过好几次&#xf…

【Python机器学习】NLP信息提取——值得提取的信息

目录 提取GPS信息 提取日期 如下一些关键的定量信息值得“手写”正则表达式&#xff1a; GPS位置&#xff1b;日期&#xff1b;价格&#xff1b;数字。 和上述可以通过正则表达式轻松捕获的信息相比&#xff0c;其他一些重要的自然语言信息需要更复杂的模式&#xff1a; 问…

Linux入门学习:Linux调试器gdb使用

1. 背景 程序的发布方式有两种&#xff0c;debug模式和release模式&#xff0c;debug是添加调试信息&#xff0c;release是取消调试信息&#xff0c; Linux gcc/g出来的二进制程序&#xff0c;默认是release模式&#xff0c;要使用gdb调试&#xff0c;必须在源代码生成二进制程…

html+css+js网页设计 旅游 穷游10个页面

htmlcssjs网页设计 旅游 穷游10个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xff…

SpringCloud微服务消息驱动的实践指南

Spring Cloud是一个用于构建分布式系统的开发工具&#xff0c;通过它可以快速搭建基于微服务架构的应用&#xff0c;并提供了丰富的功能和解决方案。在Spring Cloud中&#xff0c;消息驱动是一种常见的通信模式&#xff0c;通过消息传递来实现不同微服务之间的数据交互。本文将…

文件上传js代码

大家好&#xff0c;很久没更新了&#xff0c;今天空了&#xff0c;记录一下文件上传js代码。(自己搭建的网站&#xff0c;演示学习一下这种漏洞&#xff0c;不要做违法的事情&#xff01;&#xff01;&#xff01;) 一般文件上传的话都是奔着getshell去的&#xff0c;但是一般…