码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [Python] 编程习题练习


    题目

    1. 标题计算1到M(含M)之间的合数数量,输出其值。
    输入说明:一个正整数M(M<10000)。
    输出说明:输出合数的数量。
    输入样例:12
    输出样例:6

    2. 对于整数区间[N,M],已知0 输入说明:两个整数N 和M。
    输出说明:顺序输出元素数位上各个数字的平方和大于元素本身的数。
    输入样例:21 25
    输出样例:25
    说明:例如22的数位数字为2,2,这两个数字的平方和为8,小于22,不满足筛选条件所以不输出;25的数位数字为2,5,这两个数字平方和为29,大于25,满足筛选条件,所以将25输出。

    3. 求非负整数m,n的最大公约数

    4. 输入一串字符,由字母、数字和空格组成,长度<1000,判断其中是否存在日期格式的数据。日期格式的数据具有如下的特征,连续包含年份和月份信息。年份信息是指连续的四个数字,之后是Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec这些字符串之一,如”2019Nov”就是符合日期格式要求的数据。
    输入说明: 输入一个字符串。
    输出说明: 输出包含满足日期格式的字符子串;如果不包含,则输出2000Jan。
    输入样例1: Todayis2019Nov15th.
    输出样例1: 2019Nov
    输入样例2: Todayisasunnyday.
    输出样例2: 2000Jan
    输入样例3: OnNov05,nothing happen.
    输出样例3: 2000Jan

    5. 平面上有N个矩形(编号依次为1,2,…, N),每个矩形可用它的左下角和右上角顶点坐标来表示(默认该矩形的4条边分别两两平行于X轴或Y轴,所以确认这2个顶点后,矩形是唯一的),现在给出一些矩形,规定它们的面积各不相同,请输出面积第三大的矩形序号及其面积。
    输入说明:第一行输入一个整数N(3<=N<=1000),之后N行,每行有两个二维坐标(x,y),分别表示对应矩形的左下角和右上角的顶点坐标。
    输出说明:面积第三大的矩形序号和它的面积,中间用空格隔开。
    输入样例:5
    0 0 1 2
    1 2 5 5
    0 0 3 5
    1 2 5 6
    4 3 8 8
    输出样例:3 15

    6. 某机械公司生产两种产品。A的单件利润分别是100元,B的单件利润是150元。每种产品由三种材料构成,现给出每种材料的库存(库存小于100000),求利润最大的生产方案。
    输入说明: 第一行给出生产每件A产品所需要的三种材料数量;
    第二行给出生产每件B产品所需要的三种材料数量;
    第三行给出三种材料的库存数量。
    输出说明: 输出利润最大生产方案所对应的每种产品的生产数量(按照产品A、产品B的顺序)和利润最大值,每个数值间用空格隔开。
    输入样例: 3 1 2
    5 2 2
    30 4 6
    输出样例:2 1 350

    样例信息提示:每件产品A需要材料一3、材料二1、材料三2;每件产品B需要材料一5、材料二2、材料三2。目前库存材料一为30、材料二为4、材料三为6。采用生产A产品2件、B产品1件的生产方案,利润为350,达到利润最大值。

    解答

    1. 计算1到M(含M)之间的合数数量,输出其值。
      输入说明:一个正整数M(M<10000)。
      输出说明:输出合数的数量。
      输入样例:12
      输出样例:6
    """合数:除1和它本身之外还能被其他正整数整除"""
    m = int(input())
    n = 0
    for i in range(4, m+1):
        for j in range(2,int(i**0.5)+1):
            if i % j == 0:
                n += 1
                break
    print(n)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    截图
    在这里插入图片描述

    1. 对于整数区间[N,M],已知0 输入说明:两个整数N 和M。
      输出说明:顺序输出元素数位上各个数字的平方和大于元素本身的数。
      输入样例:21 25
      输出样例:25
      说明:例如22的数位数字为2,2,这两个数字的平方和为8,小于22,不满足筛选条件所以不输出;25的数位数字为2,5,这两个数字平方和为29,大于25,满足筛选条件,所以将25输出。
    n, m = map(int, input('输入两个整数m和n(0).split())
    for i in range(n, m + 1):
        e = i
        su = 0
        while e > 0:
            su = (e % 10) ** 2 + su
            e = e // 10
        if su > i:
            print(i, end=' ')
    print()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    1. 求非负整数m,n的最大公约数
    """0和非负整数m的最大公约数是m本身"""
    m, n = map(int, input().split())
    if m > n:
        m, n = n, m
    while True:
        """辗转相除法求最大公约数"""
        r = m % n
        if r == 0:
            print('最大公约数:', n)
            break
        m =n
        n =r
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    1. 输入一串字符,由字母、数字和空格组成,长度<1000,判断其中是否存在日期格式的数据。日期格式的数据具有如下的特征,连续包含年份和月份信息。年份信息是指连续的四个数字,之后是Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec这些字符串之一,如”2019Nov”就是符合日期格式要求的数据。
      输入说明: 输入一个字符串。
      输出说明: 输出包含满足日期格式的字符子串;如果不包含,则输出2000Jan。
      输入样例1: Todayis2019Nov15th.
      输出样例1: 2019Nov
      输入样例2: Todayisasunnyday.
      输出样例2: 2000Jan
      输入样例3: OnNov05,nothing happen.
      输出样例3: 2000Jan

    解法一:

    st = input()
    month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    le = len(st)
    if le < 7:
        print('2000Jan')
    else:
        i = 0
        flag = False
        while i < le:
            if st[i].isdigit():
                if st[i:i+4].isdigit() and st[i+4:i+7] in month:
                    print(st[i:i+7])
                    i += 6
                    flag = True
                i += 1
            else:
                i += 1
        if not flag:
            print('2000Jan')
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    解法二

    st = input()
    month = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    flag = False
    for i in range(len(st)):
        if st[i:i+3] in month:
            if st[i-4:i].isdigit():
                print(st[i-4:i+3])
                flag = True
    if not flag:
        print('2000Jan')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    1. 平面上有N个矩形(编号依次为1,2,…, N),每个矩形可用它的左下角和右上角顶点坐标来表示(默认该矩形的4条边分别两两平行于X轴或Y轴,所以确认这2个顶点后,矩形是唯一的),现在给出一些矩形,规定它们的面积各不相同,请输出面积第三大的矩形序号及其面积。
      输入说明:第一行输入一个整数N(3<=N<=1000),之后N行,每行有两个二维坐标(x,y),分别表示对应矩形的左下角和右上角的顶点坐标。
      输出说明:面积第三大的矩形序号和它的面积,中间用空格隔开。
      输入样例:
      5
      0 0 1 2
      1 2 5 5
      0 0 3 5
      1 2 5 6
      4 3 8 8
      输出样例:
      3 15
    num = int(input())
    s = [0, 0, 0]
    f = [0, 0, 0]  # 序号
    for i in range(num):
        a = list(map(int, input().split()))
        ss = abs((a[0] - a[2]) * (a[1] - a[3]))
        if ss > s[0]:
            s[0], s[1], s[2] = ss, s[0], s[1]
            f[0], f[1], f[2] = i + 1, f[0], f[1]
        elif ss > s[1]:
            s[1], s[2] = ss, s[1]
            f[1], f[2] = i + 1, f[1]
        elif ss > s[2]:
            s[2] = ss
            f[2] = i + 1
    print(f[2], ' ', s[2])
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    1. 某机械公司生产两种产品。A的单件利润分别是100元,B的单件利润是150元。每种产品由三种材料构成,现给出每种材料的库存(库存小于100000),求利润最大的生产方案。
      输入说明: 第一行给出生产每件A产品所需要的三种材料数量;
      第二行给出生产每件B产品所需要的三种材料数量;
      第三行给出三种材料的库存数量。
      输出说明: 输出利润最大生产方案所对应的每种产品的生产数量(按照产品A、产品B的顺序)和利润最大值,每个数值间用空格隔开。
      输入样例: 3 1 2
      5 2 2
      30 4 6
      输出样例:2 1 350

    样例信息提示:每件产品A需要材料一3、材料二1、材料三2;每件产品B需要材料一5、材料二2、材料三2。目前库存材料一为30、材料二为4、材料三为6。采用生产A产品2件、B产品1件的生产方案,利润为350,达到利润最大值。

    解法一

    """A,B产品的单件利润"""
    Pa = 100
    Pb = 150
    """手动输入A,B的三种材料使用量和材料库存"""
    A = list(map(eval, input().split()))
    B = list(map(eval, input().split()))
    stock = list(map(eval, input().split()))
    """求出如果全部材料都制作A或者全部材料都用来制作B时能够制作A或B的数量"""
    AS = min(stock[0] // A[0], stock[1] // A[1], stock[2] // A[2])
    BS = min(stock[0] // B[0], stock[1] // B[1], stock[2] // B[2])
    """穷举法,从全部制作A到全部制作B都放到一个列表中,所有可能的结果"""
    res = [(AS, 0), (0, BS)]
    for i in range(1, AS):
        for j in range(1, BS):
            res.append((i, j))  # i最大不超过AS,j最大不超过BS.所以把所有情况插入表格
    """将A,B和其在对应数量下的利润插入到另一个表格"""
    gain = []
    for i in res:
        gain.append((i[0], i[1], i[0] * Pa + i[1] * Pb))
    
    """打印出利润最大的一项"""
    for i in max(gain, key=lambda x: x[2]):
        print(i,end=' ')
    print()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    解法二(区别在于排序)

    """A,B产品的单件利润"""
    Pa = 100
    Pb = 150
    """手动输入A,B的三种材料使用量和材料库存"""
    A = list(map(eval, input().split()))
    B = list(map(eval, input().split()))
    stock = list(map(eval, input().split()))
    """求出如果全部材料都制作A或者全部材料都用来制作B时能够制作A或B的数量"""
    AS = min(stock[0] // A[0], stock[1] // A[1], stock[2] // A[2])
    BS = min(stock[0] // B[0], stock[1] // B[1], stock[2] // B[2])
    """穷举法,从全部制作A到全部制作B都放到一个列表中,所有可能的结果"""
    res = [(AS, 0), (0, BS)]
    for i in range(1, AS):
        for j in range(1, BS):
            res.append((i, j))  # i最大不超过AS,j最大不超过BS.所以把所有情况插入表格
    """将A,B和其在对应数量下的利润插入到另一个表格"""
    gain = []
    for i in res:
        gain.append((i[0], i[1], i[0] * Pa + i[1] * Pb))
    
    """对gain排序"""
    sorted(gain, key=lambda x: x[2])
    
    """打印出利润最大的一项"""
    for i in gain[-1]:
        print(i, end=' ')
    print()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    解法三(区别在于没有列表)

    """A,B产品的单件利润"""
    Pa = 100
    Pb = 150
    """手动输入A,B的三种材料使用量和材料库存"""
    A = list(map(eval, input().split()))
    B = list(map(eval, input().split()))
    stock = list(map(eval, input().split()))
    """求出如果全部材料都制作A或者全部材料都用来制作B时能够制作A或B的数量"""
    AS = min(stock[0] // A[0], stock[1] // A[1], stock[2] // A[2])
    BS = min(stock[0] // B[0], stock[1] // B[1], stock[2] // B[2])
    """穷举法,从全部制作A到全部制作B都计算出所有的利润,把利润最大的记录"""
    ga = max([(AS, 0, AS*Pa), (0, BS, BS+Pb)], key=lambda x:x[2])
    for i in range(1, AS):
        for j in range(1, BS):
            g = (i, j, i*Pa+j*Pb)
            if g[2]>ga[2]:
                ga = g
    
    """打印"""
    for i in ga:
        print(i, end=' ')
    print()
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

  • 相关阅读:
    识别图片转文字怎么弄?推荐两种实用工具
    2023年中国研究生数学建模竞赛赛题浅析
    Flow深入浅出系列之在ViewModels中使用Kotlin Flows
    MyBatis入门
    记 350亿数据从 es 迁移到 ClickHouse 遇到的问题
    2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序
    一种新的群体智能优化算法:麻雀搜索算法(SSA)(Matlab代码实现)
    华为云数据库 RDS for MySQL 的读写分离,凭什么打破企业数据瓶颈?
    文献信息学
    java计算机毕业设计物品分享网站源码+lw文档+系统+数据库
  • 原文地址:https://blog.csdn.net/m0_53364919/article/details/127523112
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号