• 【Python】基础练习题_ 函数和代码复用


    函数和代码复用练习题

    (1)编写程序,通过调用函数,能够打印出n行n列的方格矩阵。(例如,4行4列的方格矩阵如下图所示。)

    def fn():
        print('+--+--+--+--+')
        print('|  |  |  |  |')
        print('+--|--+--+--+')
        print('|  |  |  |  |')
        print('+--+--+--+--+')
        print('|  |  |  |  |')
        print('+--+--+--+--+')
        print('|  |  |  |  |')
        print('+--+--+--+--+')
    fn()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    (2)使用函数绘制满天星(100颗)。

    import turtle
    import random
    def fn():
        # 设置画笔速度
        turtle.speed(0)
        # 设置画笔的宽度
        turtle.width(3)
        # 设置画布背景颜色为黑色
        turtle.bgcolor("black")
        # 循环绘制100颗五角星
        for _ in range(100):
            # 生成随机的五角星颜色
            r = random.random()
            g = random.random()
            b = random.random()
            color = (r, g, b)
            # 设置画笔颜色为随机颜色
            turtle.color(color)
            # 随机生成五角星的大小和位置
            size = 10
            x = random.randint(-400, 400)
            y = random.randint(-400, 400)
            # 将画笔移动到指定位置
            turtle.penup()
            turtle.goto(x, y)
            turtle.pendown()
            # 绘制五角星
            turtle.begin_fill()
            for _ in range(5):
                turtle.forward(size)
                turtle.right(144)
            turtle.end_fill()
        # 隐藏画笔
        turtle.hideturtle()
        # 等待用户关闭窗口
        turtle.done()
    fn()
    
    • 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
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    (3)实现isNum()函数,参数为一个字符串,如果这个字符串属于整数、浮点数或复数的表示,则返回True,否则返回False。

    def isNum(s):
        try:
            complex(s)  # 尝试将字符串转换为复数类型
            return True
        except ValueError:
            try:
                float(s)  # 尝试将字符串转换为浮点数类型
                return True
            except ValueError:
                try:
                    int(s)  # 尝试将字符串转换为整数类型
                    return True
                except ValueError:
                    return False
    
    # 测试
    print(isNum("123"))  # True
    print(isNum("3.14"))  # True
    print(isNum("1+2j"))  # True
    print(isNum("abc"))  # False
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    (4)定义一个判别素数的函数,在主程序或者main函数中输入一个整数(要有异常处理),程序输出该数是否素数的判定消息。
    说明:本程序测试数据:17、88、2、1、0、a。分别运行结果是否正确。
    1)输入程序,调试和运行程序,分析结果。
    2)保留判别素数的函数,修改主程序或者main函数,要求实现输出100~200之间的素数。

    import math
    def isPrime(num):
        if num < 2:
            return False
        for i in range(2, int(math.sqrt(num)) + 1):
            if num % i == 0:
                return False
        return True
    def fn(start, end):
        for i in range(start, end +1):
            try:
                if(isPrime((i))):
                    print(i)
    
            except ValueError:
                print("输入错误:输入必须为大于1的整数")
    
    # def fun():
    #     try:
    #         num = int(input("请输入一个整数:"))
    #         if not isinstance(num, int) or num <= 1:
    #             raise ValueError
    #     except ValueError:
    #         print("输入错误:输入必须为大于1的整数")
    #     else:
    #         if isPrime(num):
    #             print(f"{num}是素数")
    #         else:
    #             print(f"{num}不是素数")
    
    fn(100, 200)
    
    
    • 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
    • 29
    • 30
    • 31
    • 32

    (5)哥德巴赫猜想。1742年,哥德巴赫给欧拉的信中提出了以下猜想"任一大于2的整数都可写成三个质数之和”。常见的猜想陈述为欧拉的版本,即任一大于2的偶数都可写成两个素数之和,亦称为”强哥德巴赫猜想”或”关于偶数的哥德巴赫猜想”。比如: 24=5+19,其中5和19都是素数。
    要求:输入一个正整数N,当输入为偶数时,分行按照格式“N = p + q”输出N的所有素数分解,其中p、q均为素数且p ≤ q。当输入为奇数或N<4时,输出’Data error!’ 。
    测试示例 输入 输出
    示例1 88 88=5+83
    88=17+71
    88=29+59
    88=41+47
    4 4=2+2
    101 Data error!

    def is_prime(n):
        if n < 2:
            return False
        for i in range(2, int(n**0.5) + 1):
            if n % i == 0:
                return False
        return True
    
    def goldbach_conjecture(n):
        if n < 4 or n % 2 != 0:
            return 'Data error!'
    
        results = []
        for p in range(2, n//2 + 1):
            q = n - p
            if is_prime(p) and is_prime(q):
                results.append((p, q))
    
        return results
    
    # 测试
    n = int(input("请输入一个正整数N:"))
    results = goldbach_conjecture(n)
    if type(results) == str:
        print(results)
    else:
        for result in results:
            print("{} = {} + {}".format(n, result[0], result[1]))
    
    • 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
  • 相关阅读:
    DTCC 2023丨云原生环境下,需要什么样的 ETL 方案?
    9.WAL
    简明SQL条件查询指南:掌握WHERE实现数据筛选
    海藻酸钠-聚丙烯酸|PAA-alginate|海藻酸钠-聚乙二醇-聚丙烯酸
    利用python中if函数判断三角形的形状
    python 自建kafka消息生成和消费小工具
    关于前后端分离的项目打包方案docker
    开赛在即 | 赛宁网安技术支撑第七届“蓝帽杯”决赛
    安卓--多指触控
    【SpringBoot2】开发实用篇-配置高级
  • 原文地址:https://blog.csdn.net/XiugongHao/article/details/134260851