Python小白必做的30道基础练习题(附保姆级答案解析)

这里是为 Python 真正的小白 准备的 30道超基础练习题(2026年视角),难度从输入输出 → 变量 → 条件 → 循环 → 字符串 → 列表 → 函数逐步递增。

每道题都附带:

  • 题目描述
  • 参考答案(最简单、最清晰的写法)
  • 核心知识点 + 小提示(保姆级解析)

建议做法
先自己写 10–15 分钟 → 看不懂再看答案 → 看完答案立刻自己敲一遍 → 改一改输入试试不同情况。

1–10:最基础(输入输出 + 变量 + 运算)

  1. 写一个程序,打印 “Hello, Python小白!2026加油!”
print("Hello, Python小白!2026加油!")
  1. 定义两个变量 a=10,b=3,打印它们的和、差、积、商(保留2位小数)
a = 10
b = 3
print(a + b)           # 13
print(a - b)           # 7
print(a * b)           # 30
print(f"{a / b:.2f}")  # 3.33
  1. 从键盘输入两个整数,计算并打印它们的乘积
x = int(input("请输入第一个数:"))
y = int(input("请输入第二个数:"))
print("乘积是:", x * y)
  1. 输入一个数字,判断它是奇数还是偶数
n = int(input("输入一个整数:"))
if n % 2 == 0:
    print("偶数")
else:
    print("奇数")
  1. 输入身高(米)和体重(公斤),计算 BMI 并判断体型
    (BMI = 体重 / 身高²,<18.5偏瘦,18.5-23.9正常,≥24超重)
height = float(input("身高(米):"))
weight = float(input("体重(kg):"))
bmi = weight / (height ** 2)
print(f"BMI = {bmi:.2f}")

if bmi < 18.5:
    print("偏瘦")
elif bmi <= 23.9:
    print("正常")
else:
    print("超重")
  1. 输入年份,判断是否是闰年
    (能被4整除且不能被100整除,或能被400整除)
year = int(input("输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年")
  1. 打印 1 到 10 的所有整数(用while和for两种方式)
# while
i = 1
while i <= 10:
    print(i, end=" ")
    i += 1

print()  # 换行

# for
for i in range(1, 11):
    print(i, end=" ")
  1. 计算 1 + 2 + 3 + … + 100 的和(用for和while各写一次)
# for版
s = 0
for i in range(1, 101):
    s += i
print(s)  # 5050

# while版
s = 0
i = 1
while i <= 100:
    s += i
    i += 1
print(s)
  1. 打印九九乘法表(完整版)
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}×{i}={i*j:2d}", end="  ")
    print()
  1. 输入一个正整数 n,打印 n 行星号三角形(第一行1个*,第二行2个…)
n = int(input("输入行数:"))
for i in range(1, n+1):
    print("*" * i)

11–20:字符串 + 列表基础

  1. 输入一句话,把所有空格替换成下划线 _
s = input("输入一句话:")
print(s.replace(" ", "_"))
  1. 输入一个字符串,统计其中字母 ‘a’ 出现的次数(不区分大小写)
s = input("输入字符串:").lower()
print("a 出现了", s.count('a'), "次")
  1. 输入三个整数,用空格分隔,一行输入,存入列表并排序后输出
nums = list(map(int, input("输入三个整数,用空格隔开:").split()))
nums.sort()
print(nums)
  1. 有一个列表 names = [“张三”, “李四”, “王五”, “赵六”],在”王五”后面插入”孙七”
names = ["张三", "李四", "王五", "赵六"]
names.insert(3, "孙七")          # 或 names.insert(names.index("王五")+1, "孙七")
print(names)
  1. 列表 fruits = [“apple”, “banana”, “cherry”, “apple”],删除所有 “apple”
fruits = ["apple", "banana", "cherry", "apple"]
fruits = [f for f in fruits if f != "apple"]   # 列表推导式最简洁
# 或者:while "apple" in fruits: fruits.remove("apple")
print(fruits)
  1. 产生一个包含 1–100 所有能被3整除的数的列表
lst = [i for i in range(1, 101) if i % 3 == 0]
print(lst)
  1. 输入一个字符串,反转后输出(三种方法任选)
s = input("输入:")
# 方法1 最常用
print(s[::-1])
# 方法2
print("".join(reversed(s)))
# 方法3
print(s[len(s)::-1])   # 记住这个也行
  1. 判断一个字符串是否是回文串(正读反读一样,如 “radar”)
s = input("输入字符串:").lower().replace(" ", "")  # 忽略大小写和空格
if s == s[::-1]:
    print("是回文")
else:
    print("不是回文")
  1. 把字符串 “1,2,3,4,5” 转成列表 [1,2,3,4,5](元素是整数)
s = "1,2,3,4,5"
lst = [int(x) for x in s.split(",")]
print(lst)
  1. 有一个列表 scores = [89, 76, 65, 92, 58, 77],统计及格(>=60)的人数
scores = [89, 76, 65, 92, 58, 77]
count = sum(1 for x in scores if x >= 60)
# 或 len([x for x in scores if x >= 60])
print("及格人数:", count)

21–30:函数 + 综合小练习

  1. 写一个函数,接收两个数,返回较大的那个
def max2(a, b):
    return a if a > b else b

print(max2(10, 25))  # 25
  1. 写一个函数 is_prime(n),判断 n 是否是素数
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

print(is_prime(17))   # True
print(is_prime(15))   # False
  1. 写函数 factorial(n) 计算 n 的阶乘(5! = 120)
def factorial(n):
    if n == 0 or n == 1:
        return 1
    res = 1
    for i in range(2, n+1):
        res *= i
    return res

print(factorial(5))  # 120
  1. 写函数 sum_of_list(lst),返回列表中所有元素的和
def sum_of_list(lst):
    return sum(lst)          # 最简单
    # 或者自己写循环
    # s = 0
    # for x in lst: s += x
    # return s
  1. 写一个函数,接收一个整数 n,打印 1 到 n 的斐波那契数列(前两个数是1,1)
def fib(n):
    if n <= 0:
        return
    a, b = 1, 1
    print(a, end=" ")
    if n == 1:
        return
    print(b, end=" ")
    for _ in range(3, n+1):
        a, b = b, a + b
        print(b, end=" ")

fib(10)  # 1 1 2 3 5 8 13 21 34 55
  1. 写函数 count_vowels(s),统计字符串中元音字母个数(a e i o u,不区分大小写)
def count_vowels(s):
    s = s.lower()
    return sum(1 for c in s if c in "aeiou")

print(count_vowels("Hello World"))  # 3
  1. 有一个字典 d = {“name”:”小明”, “age”:18, “city”:”北京”},写代码把所有 key-value 打印成 “key: value” 格式
d = {"name":"小明", "age":18, "city":"北京"}
for k, v in d.items():
    print(f"{k}: {v}")
  1. 写一个函数 remove_duplicates(lst),去掉列表中的重复元素,保持原有顺序
def remove_duplicates(lst):
    seen = []
    for x in lst:
        if x not in seen:
            seen.append(x)
    return seen

print(remove_duplicates([1,2,2,3,1,4,5,5]))  # [1,2,3,4,5]
  1. 写一个猜数字小游戏(电脑随机1-100,玩家猜,给出太大/太小/恭喜)
import random

answer = random.randint(1, 100)
guess = 0
count = 0

while guess != answer:
    guess = int(input("猜一个1-100的数字:"))
    count += 1
    if guess > answer:
        print("太大了!")
    elif guess < answer:
        print("太小了!")
    else:
        print(f"恭喜!猜对了!用了{count}次")
  1. 综合练习:输入一个正整数 n,输出 n 以内所有素数的列表
def get_primes(n):
    primes = []
    for num in range(2, n+1):
        is_prime = True
        for i in range(2, int(num**0.5)+1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            primes.append(num)
    return primes

n = int(input("输入 n:"))
print(get_primes(n))

做完这30题,你就基本掌握了 Python 的变量、运算、条件、循环、字符串、列表、函数、简单算法这些最核心的基础。

下一阶段推荐练习方向(按兴趣选):

  • 列表推导式 + 字典 + 集合(再做20题)
  • 文件读写(读写txt、csv)
  • 简单爬虫(requests + beautifulsoup)
  • pygame 小游戏
  • pandas 基础数据处理

你现在做到第几题了?遇到哪道最卡壳?可以贴代码,我帮你 debug~

文章已创建 3958

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部