Python实验题作业记录(循环结构)

less 复制代码
编程实现输出指定范围内的素数,素数之间以空格间隔。指定范围由用户输入指定。

输入格式:
输入两个整数a,b(系统保证这两个整数大于等于2,小于等于10000,且a<=b),用逗号间隔。

输出格式:
输出[a,b]所有素数,素数之间用一个空格间隔。

输入样例:
100,150
输出样例:
101 103 107 109 113 127 131 137 139 149 

以下是一个Python编程实现,可以输出指定范围内的素数:

python 复制代码
def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True

def generate_prime_numbers(a, b):
    prime_numbers = []
    for num in range(a, b + 1):
        if is_prime(num):
            prime_numbers.append(str(num))
    return ' '.join(prime_numbers)

input_str = input("请输入两个整数a,b(以逗号间隔):")
a, b = map(int, input_str.split(','))

result = generate_prime_numbers(a, b)
print(result)

输入:

100,150

输出:

101 103 107 109 113 127 131 137 139 149

这个程序首先定义了两个辅助函数:

  • is_prime(num):判断一个数是否为素数。函数使用了基本的素数判断算法,即从2到 <math xmlns="http://www.w3.org/1998/Math/MathML"> num \sqrt{\text{num}} </math>num 的范围内遍历,如果能整除某个数,则不是素数。否则,是素数。

  • generate_prime_numbers(a, b):生成[a,b]内的素数列表。函数遍历范围内的每个数,调用is_prime()函数判断是否为素数,如果是素数,则将其转换为字符串并添加到素数列表中。最后,将素数列表中的元素使用空格连接成一个字符串,并返回。

在主程序中,首先读取用户输入的两个整数a和b,然后调用generate_prime_numbers(a, b)函数生成素数列表,并将其打印出来。

请你分析这段代码,然后给出它的详细注释

当逐行分析这段代码时,我们可以为其添加详细的注释,以便更好地理解每个步骤的目的和功能。以下是对代码的注释:

python 复制代码
# 判断一个数是否为素数
def is_prime(num):
    if num < 2: # 如果数小于2,不是素数
        return False
    for i in range(2, int(num**0.5) + 1): # 遍历从2到num的平方根范围内的每个数
        if num % i == 0: # 如果num可以被某个数整除,则不是素数
            return False
    return True # 如果num不能被任何数整除,则是素数

# 生成[a,b]内的素数列表
def generate_prime_numbers(a, b):
    prime_numbers = [] # 创建一个空列表,用于存储素数
    for num in range(a, b + 1): # 遍历范围[a, b]内的每个数
        if is_prime(num): # 判断num是否为素数
            prime_numbers.append(str(num)) # 将素数转换为字符串并添加到素数列表中
    return ' '.join(prime_numbers) # 使用空格连接素数列表中的元素,并返回一个字符串

input_str = input("请输入两个整数a,b(以逗号间隔):") # 获取用户输入的字符串
a, b = map(int, input_str.split(',')) # 将输入字符串按逗号分隔成两个整数,并赋值给变量a和b

result = generate_prime_numbers(a, b) # 调用generate_prime_numbers函数生成素数列表
print(result) # 打印素数列表

这段代码定义了两个函数:is_prime(num)generate_prime_numbers(a, b)

  • is_prime(num)函数用于判断一个数是否为素数。如果给定的数小于2,则它不是素数。通过遍历从2到该数的平方根的范围内的每个数,如果能找到能整除该数的除数,那么该数就不是素数。如果无法找到任何能整除该数的除数,那么它就是素数。该函数返回一个布尔值,表示给定数是否为素数。

  • generate_prime_numbers(a, b)函数用于生成[a,b]范围内的素数列表。在此函数中,首先创建一个空列表 prime_numbers,用于存储找到的素数。随后,通过遍历从a到b的范围内的每个数,并使用is_prime()函数判断是否为素数。如果是素数,将其转换为字符串并添加到prime_numbers列表中。最后,使用空格将素数列表中的元素连接成一个字符串,并返回该字符串。

在主程序中,首先使用input()函数获取用户输入的字符串,然后用逗号分隔两个整数,并将它们赋值给变量a和b。接下来,调用generate_prime_numbers(a, b)函数生成素数列表,并将结果赋值给变量result。最后,使用print()函数打印素数列表的字符串表示。

makefile 复制代码
鸡兔同笼问题,输入脚数,头数,输出鸡数和兔数。

输入格式:
输入两个以逗号分隔的整数,表示脚数和头数。

输出格式:
在一行输出鸡数和兔数,两个整数之间以空格分隔

输入样例:
在这里给出一组输入。例如:

94,35
输出样例:
在这里给出相应的输出。例如:

23 12

以下是解决鸡兔同笼问题的Python代码实现:

python 复制代码
def solve_chicken_rabbit(feet, heads):
    rabbit_count = 0
    while rabbit_count <= heads:
        chicken_count = heads - rabbit_count
        total_feet = 2 * chicken_count + 4 * rabbit_count
        if total_feet == feet:
            return chicken_count, rabbit_count
        rabbit_count += 1
    return None

# 获取用户输入的脚数和头数
input_str = input("请输入脚数和头数(以逗号间隔):")
feet, heads = map(int, input_str.split(','))

# 解决鸡兔同笼问题
solution = solve_chicken_rabbit(feet, heads)

# 输出结果
if solution:
    print(f"{solution[0]} {solution[1]}")
else:
    print("无解")

代码中的 solve_chicken_rabbit(feet, heads) 函数用于解决鸡兔同笼问题。它采用一个循环来尝试不同的兔子数量,然后计算相应的鸡数量,并根据给定的脚数和头数来检查是否存在解。该函数返回一个包含鸡数和兔数的元组,如果无解,则返回None

在主程序中,首先使用 input() 函数获取用户输入的字符串,并将其分隔成两个整数 feetheads。然后调用 solve_chicken_rabbit(feet, heads) 函数解决问题,并将结果赋值给 solution 变量。最后,根据是否存在解,输出结果。

若存在解,输出鸡数和兔数,两者之间用空格分隔;若无解,则输出"无解"。

请你分析这段代码,然后给出它的详细注释

当逐行分析这段代码时,我们可以为其添加详细的注释,以便更好地理解每个步骤的目的和功能。以下是对代码的注释:

python 复制代码
# 解决鸡兔同笼问题
def solve_chicken_rabbit(feet, heads):
    rabbit_count = 0 # 初始化兔子数量为0
    while rabbit_count <= heads: # 当兔子数量小于等于头数时进行循环
        chicken_count = heads - rabbit_count # 计算鸡的数量
        total_feet = 2 * chicken_count + 4 * rabbit_count # 计算总的脚数
        if total_feet == feet: # 如果总脚数等于给定的脚数
            return chicken_count, rabbit_count # 返回鸡数和兔数的元组
        rabbit_count += 1 # 兔子数量加1
    return None # 如果无解,则返回None

# 获取用户输入的脚数和头数
input_str = input("请输入脚数和头数(以逗号间隔):") # 获取用户输入的字符串
feet, heads = map(int, input_str.split(',')) # 将输入字符串按逗号分隔成两个整数,并赋值给变量feet和heads

# 解决鸡兔同笼问题
solution = solve_chicken_rabbit(feet, heads) # 调用solve_chicken_rabbit函数解决问题,并将结果赋值给变量solution

# 输出结果
if solution: # 如果存在解
    print(f"{solution[0]} {solution[1]}") # 打印鸡数和兔数,两者之间用空格分隔
else: # 如果无解
    print("无解") # 打印"无解"

这段代码定义了一个函数 solve_chicken_rabbit(feet, heads) 用于解决鸡兔同笼问题。

  • solve_chicken_rabbit(feet, heads) 函数采用一个循环来尝试不同的兔子数量,然后计算相应的鸡数量,并根据给定的脚数和头数来检查是否存在解。在循环中,首先通过 heads - rabbit_count 计算鸡的数量,然后使用 2 * chicken_count + 4 * rabbit_count 计算总的脚数。如果总脚数等于给定的脚数,说明找到了一个解,函数将返回一个包含鸡数和兔数的元组。如果在循环结束时仍未找到解,则返回 None 表示无解。

在主程序部分,首先使用 input() 函数获取用户输入的字符串,然后使用 split() 方法将字符串按逗号分隔成两个整数,并赋值给变量 feetheads

接下来,调用 solve_chicken_rabbit(feet, heads) 函数解决鸡兔同笼问题,并将解的结果赋值给变量 solution

最后,根据是否存在解来输出结果。如果存在解,使用字符串格式化 f"{solution[0]} {solution[1]}" 将鸡数和兔数打印出来,两者之间用空格分隔。如果无解,打印字符串 "无解"。

makefile 复制代码
求两个正整数m,n的最大公约数(Greatest Common Divisor,简称GCD)。要求定义一个函数求最大公约数。

输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入2个整数m,n(0<m,n<10 
9
 )。

输出格式:
对于每组测试,输出m,n的最大公约数。

输入样例:
2
63 36
20 15
输出样例:
9
5、

以下是求两个正整数m和n的最大公约数的Python代码实现:

python 复制代码
def get_gcd(m, n):
    while n != 0:
        m, n = n, m % n
    return m


# 获取测试数据的组数
T = int(input("请输入测试数据的组数:"))

# 处理每组测试数据
for _ in range(T):
    # 输入两个整数m和n
    m, n = map(int, input("请输入两个整数m和n(以空格分隔):").split())

    # 求最大公约数并输出结果
    gcd = get_gcd(m, n)
    print(gcd)

代码中的 get_gcd(m, n) 函数用于求两个正整数m和n的最大公约数。它使用欧几里得算法(辗转相除法)来计算最大公约数。在每一次迭代中,通过 m, n = n, m % n 来更新m和n的值,直到n等于0为止。最后返回m作为最大公约数。

在主程序中,首先使用 input() 函数获取测试数据的组数T。然后通过 for 循环处理每组测试数据。在每组测试数据中,使用 input() 函数获取两个整数m和n。然后调用 get_gcd(m, n) 函数求最大公约数,并将结果赋值给 gcd 变量。最后,使用 print() 函数输出最大公约数。

根据输入的测试数据的组数T,程序会执行相应次数的求最大公约数操作,并输出对应的结果。

请你分析这段代码,然后给出它的详细注释

当逐行分析这段代码时,我们可以为其添加详细的注释,以便更好地理解每个步骤的目的和功能。以下是对代码的注释:

python 复制代码
# 定义函数用于求两个正整数m和n的最大公约数(GCD)
def get_gcd(m, n):
    while n != 0:  # 当n不等于0时进行循环
        m, n = n, m % n  # 更新m和n的值,用n来取代m,用m对n取模得到新的n的值
    return m  # 返回最大公约数m


# 获取测试数据的组数
T = int(input("请输入测试数据的组数:"))

# 处理每组测试数据
for _ in range(T):
    # 输入两个整数m和n
    m, n = map(int, input("请输入两个整数m和n(以空格分隔):").split())

    # 求最大公约数并输出结果
    gcd = get_gcd(m, n)  # 调用get_gcd函数求两个整数的最大公约数,并将结果赋值给gcd变量
    print(gcd)  # 输出最大公约数

代码中定义了一个名为 get_gcd(m, n) 的函数,用于求两个正整数m和n的最大公约数(GCD)。

在主程序中,首先使用 input() 函数获取测试数据的组数T,表示要进行多少组测试。然后通过 for 循环处理每组测试数据。

在每组测试数据中,使用 input() 函数获取两个整数m和n,这里使用 map(int, input("请输入两个整数m和n(以空格分隔):").split()) 来将输入的字符串按空格分隔成两个整数,并将其赋值给 mn

接下来,调用 get_gcd(m, n) 函数,将两个整数m和n传递给函数,以求最大公约数。函数内部使用欧几里得算法(辗转相除法)来计算最大公约数,通过不断更新m和n的值,直到n为0为止。最终的m就是最大公约数。将最大公约数赋值给 gcd 变量。

最后,使用 print() 函数输出最大公约数 gcd

根据输入的测试数据组数T,程序会执行相应次数的求最大公约数操作,并输出对应的最大公约数结果。

相关推荐
湫ccc3 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe3 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin3 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
哭泣的眼泪4084 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
湫ccc4 小时前
《Python基础》之基本数据类型
开发语言·python
drebander5 小时前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
威威猫的栗子6 小时前
Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画
开发语言·python
墨染风华不染尘6 小时前
python之开发笔记
开发语言·笔记·python
Dxy12393102167 小时前
python bmp图片转jpg
python
麦麦大数据7 小时前
Python棉花病虫害图谱系统CNN识别+AI问答知识neo4j vue+flask深度学习神经网络可视化
人工智能·python·深度学习