10.1 判断素数

题目描述

编写一个程序,判断用户输入的一个正整数是否为素数。

解题思路

  • 输入一个正整数。
  • 使用循环判断从2到该数的平方根是否有整除的数。

代码详解

num = int(input("请输入一个正整数: "))
is_prime = True
if num < 2:
    is_prime = False
else:
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            is_prime = False
            break

if is_prime:
    print(f"{num} 是素数")
else:
    print(f"{num} 不是素数")

10.2 打印斐波那契数列

题目描述

编写一个程序,输出斐波那契数列的前n项,n由用户输入。

解题思路

  • 使用循环生成斐波那契数列。

代码详解

n = int(input("请输入要输出的斐波那契数列项数: "))
a, b = 0, 1
fib_seq = []
for _ in range(n):
    fib_seq.append(a)
    a, b = b, a + b
print(fib_seq)

10.3 冒泡排序

题目描述

实现一个冒泡排序算法,要求用户输入一组整数,然后输出排序后的结果。

解题思路

  • 使用嵌套循环比较相邻元素。

代码详解

arr = list(map(int, input("请输入一组整数,用空格分隔: ").split()))
n = len(arr)
for i in range(n):
    for j in range(0, n - i - 1):
        if arr[j] > arr[j + 1]:
            arr[j], arr[j + 1] = arr[j + 1], arr[j]
print("排序后的数组:", arr)

10.4 统计字符频率

题目描述

编写程序,统计输入字符串中每个字符出现的频率,并输出结果。

解题思路

  • 使用字典存储字符和其频率。

代码详解

input_string = input("请输入字符串: ")
freq = {}
for char in input_string:
    freq[char] = freq.get(char, 0) + 1
print("字符频率:", freq)

10.5 查找最大子序列和

题目描述

给定一个整数数组,编写程序找出具有最大和的连续子序列。

解题思路

  • 使用动态规划维护当前的子序列和和最大子序列和。

代码详解

array = list(map(int, input("请输入整数数组,用空格分隔: ").split()))
max_sum = float('-inf')
current_sum = 0
for num in array:
    current_sum += num
    if current_sum > max_sum:
        max_sum = current_sum
    if current_sum < 0:
        current_sum = 0
print("最大子序列和:", max_sum)

10.6 查找重复元素

题目描述

编写程序,找出输入列表中所有重复的元素。

解题思路

  • 使用集合存储已见过的元素。

代码详解

input_list = list(map(int, input("请输入整数列表,用空格分隔: ").split()))
seen = set()
duplicates = set()
for num in input_list:
    if num in seen:
        duplicates.add(num)
    else:
        seen.add(num)
print("重复的元素:", duplicates)

10.7 计算阶乘

题目描述

编写程序,计算一个正整数的阶乘。

解题思路

  • 使用循环从1乘到n。

代码详解

num = int(input("请输入一个正整数: "))
result = 1
for i in range(1, num + 1):
    result *= i
print("阶乘是:", result)

10.8 查找数组中第K大的元素

题目描述

编写程序,找出数组中第K大的元素。

解题思路

  • 使用排序的方法,先对数组进行排序。

代码详解

array = list(map(int, input("请输入整数数组,用空格分隔: ").split()))
k = int(input("请输入K值: "))
unique_elements = list(set(array))
unique_elements.sort(reverse=True)
print(f"数组中第{k}大的元素是: {unique_elements[k - 1]}")

10.9 验证回文数

题目描述

编写程序,判断一个字符串是否为回文。

解题思路

  • 比较字符串的前后字符。

代码详解

input_string = input("请输入字符串: ")
is_palindrome = True
length = len(input_string)
for i in range(length // 2):
    if input_string[i] != input_string[length - 1 - i]:
        is_palindrome = False
        break

if is_palindrome:
    print(f"{input_string} 是回文")
else:
    print(f"{input_string} 不是回文")

10.10 爬楼梯问题

题目描述

假设每次可以爬1阶或2阶,编写程序计算爬到n阶的不同方式数。

解题思路

  • 使用动态规划的思想。

代码详解

n = int(input("请输入楼梯的阶数: "))
if n == 1:
    print("不同的爬楼梯方式数: 1")
elif n == 2:
    print("不同的爬楼梯方式数: 2")
else:
    dp = [0] * (n + 1)
    dp[1], dp[2] = 1, 2
    for i in range(3, n + 1):
        dp[i] = dp[i - 1] + dp[i - 2]
    print("不同的爬楼梯方式数:", dp[n])
结束

本文标题: Python3学习笔记第十七篇--循环判断练习题(较难)

本文链接: https://blog.oyooy.com/archives/63.html

除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2025 年 02 月 08 日
如果觉得我的文章对你有用,请随意赞赏