【Python练习题】Python小白必练100题答案-第21-40题

发布于:2025-09-04 ⋅ 阅读:(25) ⋅ 点赞:(0)
练习题 直达链接
Python小白必练100题答案-第1-20题 点我直达
Python小白必练100题答案-第21-40题 点我直达
Python小白必练100题答案-第41-60题 点我直达
Python小白必练100题答案-第61-80题 点我直达
Python小白必练100题答案-第81-97题 点我直达

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏求订阅

  • 🕷 此外还有爬虫专栏:请点击——>Python爬虫基础专栏求订阅

  • 📕 此外还有python基础专栏:请点击——>Python基础学习专栏求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

循环结构 + 字符串操作


第三部分:循环结构 (21-30题)

21. 数字累加

题目: 计算1到100的和

答案:

def sum_1_to_100():
    total = 0
    for i in range(1, 101):
        total += i
    return total

result = sum_1_to_100()
print(f"1到100的和:{result}")
# 验证公式:n*(n+1)/2
print(f"公式验证:{100*101//2}")

输出:

1到100的和:5050
公式验证:5050

22. 乘法表

题目: 输出九九乘法表

答案:

def multiplication_table():
    for i in range(1, 10):
        for j in range(1, i+1):
            print(f"{j}×{i}={i*j}", end="\t")
        print()  # 换行

print("九九乘法表:")
multiplication_table()

输出:

九九乘法表:
1×1=1	
1×2=2	2×2=4	
1×3=3	2×3=6	3×3=9	
1×4=4	2×4=8	3×4=12	4×4=16	
...

23. 阶乘计算

题目: 计算数字的阶乘

答案:

def factorial(n):
    if n <= 1:
        return 1
    result = 1
    for i in range(2, n+1):
        result *= i
    return result

test_nums = [5, 0, 1, 7]
for num in test_nums:
    print(f"{num}! = {factorial(num)}")

输出:

5! = 120
0! = 1
1! = 1
7! = 5040

24. 斐波那契数列

题目: 生成斐波那契数列

答案:

def fibonacci(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]
    elif n == 2:
        return [0, 1]
    
    fib_list = [0, 1]
    for i in range(2, n):
        fib_list.append(fib_list[i-1] + fib_list[i-2])
    return fib_list

n = 10
fib_sequence = fibonacci(n)
print(f"斐波那契数列前{n}项:{fib_sequence}")

输出:

斐波那契数列前10项:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

25. 素数判断

题目: 判断一个数是否为素数

答案:

import math

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True

test_nums = [2, 3, 4, 17, 25, 29]
for num in test_nums:
    result = "是" if is_prime(num) else "不是"
    print(f"{num} {result}素数")

输出:

2 是素数
3 是素数
4 不是素数
17 是素数
25 不是素数
29 是素数

26. 猜数字游戏

题目: 实现猜数字游戏

答案:

import random

def guess_number_game():
    target = random.randint(1, 100)
    print(f"计算机生成的数字是:{target}(实际游戏中不显示)")
    
    # 模拟几次猜测
    guesses = [50, 75, 88, target]  # 模拟猜测过程
    attempts = 0
    
    for guess in guesses:
        attempts += 1
        if guess == target:
            print(f"第{attempts}次猜测:{guess} - 恭喜!猜对了!")
            break
        elif guess < target:
            print(f"第{attempts}次猜测:{guess} - 太小了!")
        else:
            print(f"第{attempts}次猜测:{guess} - 太大了!")

guess_number_game()

输出:

计算机生成的数字是:92(实际游戏中不显示)
第1次猜测:50 - 太小了!
第2次猜测:75 - 太小了!
第3次猜测:88 - 太小了!
第4次猜测:92 - 恭喜!猜对了!

27. 水仙花数

题目: 找出所有三位水仙花数

答案:

def find_narcissistic_numbers():
    narcissistic_nums = []
    for num in range(100, 1000):
        digits = [int(d) for d in str(num)]
        if sum(d**3 for d in digits) == num:
            narcissistic_nums.append(num)
    return narcissistic_nums

narcissistic_nums = find_narcissistic_numbers()
print(f"所有三位水仙花数:{narcissistic_nums}")

输出:

所有三位水仙花数:[153, 371, 407]

28. 倒序输出

题目: 将数字倒序输出

答案:

def reverse_number(n):
    reversed_num = 0
    while n > 0:
        reversed_num = reversed_num * 10 + n % 10
        n //= 10
    return reversed_num

test_nums = [12345, 6789, 100]
for num in test_nums:
    print(f"{num} 倒序后:{reverse_number(num)}")

输出:

12345 倒序后:54321
6789 倒序后:9876
100 倒序后:1

29. 数字统计

题目: 统计数字中各位数字出现的次数

答案:

def count_digits(n):
    digit_count = {}
    for digit in str(n):
        digit_count[digit] = digit_count.get(digit, 0) + 1
    return digit_count

test_nums = [112233, 123321, 555666]
for num in test_nums:
    counts = count_digits(num)
    print(f"{num} 各数字出现次数:{counts}")

输出:

112233 各数字出现次数:{'1': 2, '2': 2, '3': 2}
123321 各数字出现次数:{'1': 2, '2': 2, '3': 2}
555666 各数字出现次数:{'5': 3, '6': 3}

30. 完数判断

题目: 判断完数并找出范围内的所有完数

答案:

def is_perfect_number(n):
    if n <= 1:
        return False
    
    divisors_sum = 0
    for i in range(1, n):
        if n % i == 0:
            divisors_sum += i
    
    return divisors_sum == n

def find_perfect_numbers(limit):
    perfect_nums = []
    for num in range(1, limit + 1):
        if is_perfect_number(num):
            perfect_nums.append(num)
    return perfect_nums

perfect_nums = find_perfect_numbers(1000)
print(f"1000以内的完数:{perfect_nums}")

输出:

1000以内的完数:[6, 28, 496]

第四部分:字符串操作 (31-40题)

31. 字符串长度

题目: 计算字符串长度(不使用内置函数)

答案:

def string_length(s):
    count = 0
    for char in s:
        count += 1
    return count

test_strings = ["Hello", "Python编程", ""]
for s in test_strings:
    print(f"'{s}' 长度:{string_length(s)} (内置函数验证:{len(s)})")

输出:

'Hello' 长度:5 (内置函数验证:5)
'Python编程' 长度:8 (内置函数验证:8)
'' 长度:0 (内置函数验证:0)

32. 字符串反转

题目: 反转字符串

答案:

def reverse_string(s):
    reversed_str = ""
    for char in s:
        reversed_str = char + reversed_str
    return reversed_str

test_strings = ["Hello", "Python", "12345"]
for s in test_strings:
    print(f"'{s}' 反转后:'{reverse_string(s)}'")

输出:

'Hello' 反转后:'olleH'
'Python' 反转后:'nohtyP'
'12345' 反转后:'54321'

33. 回文判断

题目: 判断字符串是否为回文

答案:

def is_palindrome(s):
    # 转换为小写并去除空格
    s = s.lower().replace(" ", "")
    return s == s[::-1]

test_strings = ["level", "hello", "A man a plan a canal Panama", "race a car"]
for s in test_strings:
    result = "是" if is_palindrome(s) else "不是"
    print(f"'{s}' {result}回文")

输出:

'level' 是回文
'hello' 不是回文
'A man a plan a canal Panama' 是回文
'race a car' 不是回文

34. 字符统计

题目: 统计字符串中字母、数字、空格和其他字符的个数

答案:

def count_characters(s):
    letters = 0
    digits = 0
    spaces = 0
    others = 0
    
    for char in s:
        if char.isalpha():
            letters += 1
        elif char.isdigit():
            digits += 1
        elif char.isspace():
            spaces += 1
        else:
            others += 1
    
    return letters, digits, spaces, others

test_string = "Hello World 123 !"
letters, digits, spaces, others = count_characters(test_string)
print(f"字符串:'{test_string}'")
print(f"字母:{letters}个,数字:{digits}个,空格:{spaces}个,其他:{others}个")

输出:

字符串:'Hello World 123 !'
字母:10个,数字:3个,空格:3个,其他:1个

35. 大小写转换

题目: 将字符串中的大小写字母互换

答案:

def swap_case(s):
    result = ""
    for char in s:
        if char.isupper():
            result += char.lower()
        elif char.islower():
            result += char.upper()
        else:
            result += char
    return result

test_strings = ["Hello World", "PyThOn ProGramming"]
for s in test_strings:
    print(f"'{s}' -> '{swap_case(s)}'")

输出:

'Hello World' -> 'hELLO wORLD'
'PyThOn ProGramming' -> 'pYtHoN pROgRAMMING'

36. 单词计数

题目: 统计字符串中单词的个数

答案:

def count_words(text):
    words = text.split()
    return len(words)

test_texts = [
    "Hello world",
    "Python is a great programming language",
    "   Multiple   spaces   between   words   "
]
for text in test_texts:
    print(f"'{text}' 包含 {count_words(text)} 个单词")

输出:

'Hello world' 包含 2 个单词
'Python is a great programming language' 包含 6 个单词
'   Multiple   spaces   between   words   ' 包含 4 个单词

37. 字符串查找

题目: 查找子字符串在主字符串中的所有位置

答案:

def find_substring(text, substring):
    positions = []
    start = 0
    while True:
        pos = text.find(substring, start)
        if pos == -1:
            break
        positions.append(pos)
        start = pos + 1
    return positions

text = "hello world hello python hello"
substring = "hello"
positions = find_substring(text, substring)
print(f"在 '{text}' 中查找 '{substring}'")
print(f"找到位置:{positions}")

输出:

在 'hello world hello python hello' 中查找 'hello'
找到位置:[0, 12, 25]

38. 字符串替换

题目: 替换字符串中的指定字符

答案:

def replace_char(text, old_char, new_char):
    result = ""
    for char in text:
        if char == old_char:
            result += new_char
        else:
            result += char
    return result

text = "hello world"
old_char = "l"
new_char = "x"
result = replace_char(text, old_char, new_char)
print(f"'{text}' 将 '{old_char}' 替换为 '{new_char}': '{result}'")

输出:

'hello world' 将 'l' 替换为 'x': 'hexxo worxd'

39. 首字母大写

题目: 将字符串中每个单词的首字母大写

答案:

def capitalize_words(text):
    words = text.split()
    capitalized_words = []
    for word in words:
        if word:
            capitalized_word = word[0].upper() + word[1:].lower()
            capitalized_words.append(capitalized_word)
    return " ".join(capitalized_words)

test_texts = [
    "hello world",
    "python programming language",
    "tHiS iS a TeSt"
]
for text in test_texts:
    print(f"'{text}' -> '{capitalize_words(text)}'")

输出:

'hello world' -> 'Hello World'
'python programming language' -> 'Python Programming Language'
'tHiS iS a TeSt' -> 'This Is A Test'

40. 去除空格

题目: 去除字符串首尾的空格

答案:

def strip_spaces(text):
    # 去除首尾空格
    start = 0
    end = len(text) - 1
    
    # 找到第一个非空格字符
    while start < len(text) and text[start] == ' ':
        start += 1
    
    # 找到最后一个非空格字符
    while end >= 0 and text[end] == ' ':
        end -= 1
    
    if start > end:
        return ""
    
    return text[start:end+1]

test_texts = [
    "   hello world   ",
    "  python  ",
    "   ",
    "no spaces"
]
for text in test_texts:
    stripped = strip_spaces(text)
    print(f"'{text}' -> '{stripped}' (长度:{len(text)} -> {len(stripped)})")

输出:

'   hello world   ' -> 'hello world' (长度:17 -> 11)
'  python  ' -> 'python' (长度:10 -> 6)
'   ' -> '' (长度:3 -> 0)
'no spaces' -> 'no spaces' (长度:9 -> 9)

总结

第21-40题主要涵盖了Python的进阶知识:

循环结构 (21-30题)

  • 基础循环:for循环、while循环的使用
  • 数学计算:累加、阶乘、斐波那契数列
  • 算法应用:素数判断、水仙花数、完数
  • 数字处理:倒序、数字统计
  • 游戏编程:猜数字游戏的实现

字符串操作 (31-40题)

  • 基础操作:长度计算、反转、大小写转换
  • 字符分析:字符统计、回文判断
  • 文本处理:单词计数、查找替换
  • 格式化:首字母大写、去除空格
  • 算法思维:字符串搜索和处理算法

这些知识点为后续学习数据结构、算法和更复杂的编程概念打下了坚实的基础!

  • 希望对初学者有帮助;致力于办公自动化的小小程序员一枚

  • 希望能得到大家的【❤️一个免费关注❤️】感谢!

  • 求个 🤞 关注 🤞 +❤️ 喜欢 ❤️ +👍 收藏 👍

  • 此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

  • 此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

  • 此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏


网站公告

今日签到

点亮在社区的每一天
去签到