Python 基础入门:条件判断、循环与函数实战解析


本文汇总了 20 多个 Python 入门级练习题,从最简单的布尔转换到二维列表操作,再到自定义函数。每个例子都配有详细文字分析和完整代码,适合零基础或刚学完语法需要练习的同学。建议边看边敲,运行观察输出。


一、为什么选择这些练习?

Python 是一门强调可读性和简洁性的语言。对于初学者来说,条件判断if-elif-else)、循环for / while)以及列表操作是三个必须熟练掌握的模块。本文精选的题目来自于常见的基础题库,覆盖了:

  • 数据类型转换与布尔逻辑
  • 列表的空值判断与遍历
  • 字符串忽略大小写比较
  • 多条件分支与输入验证
  • 累加器与平均值的计算
  • 嵌套循环与二维列表修改
  • 自定义函数的定义与调用

下面我们逐一分析。


二、条件判断专项练习

2.1 布尔值的转换与输出

a = bool(int(input()))
if a:
    print("Hello World!")
else:
    print("Erros!")

文字分析
input() 读取用户输入(字符串),int() 将其转为整数。在 Python 中,只有 0 会被转为 False,其他整数都是 Truebool() 再次确保类型为布尔值。如果输入 1(或任意非零数),打印 Hello World!;如果输入 0,打印 Erros!。注意原题中错误拼写了 Errors,这里保留原样。

2.2 判断列表是否为空

a = []
if a == []:
    print('my_list is empty!')
else:
    print('my_list is not empty!')

文字分析
直接比较变量 a 与空列表 [] 是否相等。更 Pythonic 的写法是 if not a:,因为空列表在布尔上下文中为 False。但原题采用显式比较,逻辑同样正确。

2.3 用户名注册检查(忽略大小写)

ls = ['Niuniu', 'Niumei', 'GURR', 'LOLO']
lst = ['GurR', 'Niu Ke Le', 'LoLo', 'Tuo Rui Chi']

for i in lst:
    for j in ls:
        if i.lower() == j.lower():
            print('The user name ' + i + ' has already been registered! Please change it and try again!')
            break
    else:
        print('Congratulations, the user name ' + i + ' is available!')

文字分析
这是一个典型的嵌套循环 + for-else 结构。外层遍历待检查的用户名列表 lst,内层遍历已注册列表 ls。使用 .lower() 将两个字符串都转为小写再比较,实现大小写不敏感的匹配。

  • 如果找到相同用户名(忽略大小写),则打印冲突提示并用 break 跳出内层循环。
  • for-elseelse 分支只有在循环没有被 break 中断时才会执行。因此,当内层循环完整遍历完都没找到匹配项时,就打印“用户名可用”。

2.4 简单的食物价格查询

a = input()
if a == 'pizza':
    print(10)
elif a == 'rice':
    print(2)
elif a == 'yogurt':
    print(5)
else:
    print(8)

文字分析
这是一个多分支判断。如果输入 pizza 输出 10,输入 rice 输出 2,输入 yogurt 输出 5,其他任何输入(包括空输入)都输出 8。适合用来模拟菜单定价逻辑。

2.5 学分绩点计算器(含终止条件)

x = 0.0
y = 0
for i in range(100):
    a = input()
    if a == 'A':
        b = int(input())
        x += b * 4.0
        y += b
    elif a == 'B':
        b = int(input())
        x += b * 3.0
        y += b
    elif a == 'C':
        b = int(input())
        x += b * 2.0
        y += b
    elif a == 'D':
        b = int(input())
        x += b * 1.0
        y += b
    elif a == 'F':
        b = int(input())
        x += b * 0
        y += b
    else:
        print("%.2f" % (x / y))
        break

文字分析
这是一个累计加权平均程序。最多循环 100 次,每次先输入等级(A~F),再输入该门课的学分。

  • 等级对应绩点:A=4.0,B=3.0,C=2.0,D=1.0,F=0.0。
  • 变量 x 存储加权总分(学分×绩点),y 存储总学分。
  • 当输入不是 A~F 中的任何一个时(比如直接回车或输入其他字符),程序就会计算平均绩点(x/y)并输出(保留两位小数),然后 break 退出循环。

这个例子很好地演示了循环内的条件分支和累计计算。

2.6 登录验证(嵌套 if)

username = input()
password = input()
if username == 'admis':
    if password == 'Nowcoder666':
        print("Welcome!")
    else:
        print("user id or password is not correct!")
else:
    print("user id or password is not correct!")

文字分析
先判断用户名是否为 admis(注意原题可能是 admin 的笔误)。如果用户名正确,再判断密码;否则直接报错。这种嵌套条件结构清晰,但重复的错误提示可以进一步合并。


三、循环语句专项练习

3.1 列表的创建与长度查询

mylist = ['P', 'y', 't', 'h', 'o', 'n']
print('Here is the original list:')
print(mylist)
print("")
print('The number that my_list has is:')
print(len(mylist))

文字分析
最简单的列表操作。len() 返回列表元素个数,这里输出 6。

3.2 遍历列表并格式化输出

ls = ['Niuniu', 'Niumei', 'Niu Ke Le']
for i in ls:
    print("Hi, " + i + "! Welcome to Nowcoder!")
print("Happy Programmers' Day to everyone!")

文字分析
for i in ls: 依次取出每个元素,拼接字符串后打印。循环结束后再打印一句节日祝福。这种模式常用于批量发送欢迎消息。

3.3 列表推导式与索引访问

a = [i for i in range(10, 51)]
print(a)
print(a[0], a[40])

文字分析
[i for i in range(10, 51)] 是列表推导式,生成从 10 到 50 的整数列表(共 41 个元素)。a[0] 是第一个元素 10,a[40] 是最后一个元素 50(因为索引从 0 开始)。注意 range(10,51) 包含 10,不包含 51。

3.4 输入多个整数并计算总和与平均值

a = input().split()
total = 0
count = 0
for i in a:
    i = int(i)
    total += i
    count += 1
average = total / count
print(total, round(average, 1))

文字分析
input().split() 将一行输入按空格分割成字符串列表。循环中将每个字符串转为整数,累加求和,同时计数。最后用 round(average, 1) 保留一位小数。这种方法不需要预先知道数字个数,非常灵活。

3.5 输出 0 到 18 之间的所有偶数

a = [i for i in range(0, 19, 2)]
for i in a:
    print(i)

文字分析
range(0, 19, 2) 生成步长为 2 的序列:0,2,4,...,18。再用列表推导式生成列表。也可以直接 for i in range(0,19,2): print(i)

3.6 输出 5 到 50 之间 5 的倍数

for i in range(5, 51, 5):
    print(i)

文字分析
步长设为 5,从 5 开始到 50(包括 50)。输出:5,10,15,...,50。

3.7 计算 2 的 1~10 次幂

ls = []
for i in range(1, 11):
    ls.append(2 ** i)
for i in ls:
    print(i)

文字分析
先创建空列表,然后在循环中用 append 添加每次计算的结果。2 ** i 表示 2 的 i 次幂。最后遍历列表输出所有值。

3.8 使用 list(range()) 快速生成列表

a = list(range(10))
print(a)

文字分析
range(10) 生成 0~9,再用 list() 转为列表。这是生成连续整数列表最简洁的方法。

3.9 循环弹出列表元素直到为空

ls = ['apple', 'ice cream', 'watermelon', 'chips', 'hotdogs', 'hotpot']
while ls != []:
    ls.pop()
    print(ls)

文字分析
while ls != []: 当列表不为空时,反复执行 pop()(默认删除最后一个元素并返回它)。每次删除后打印当前列表状态。最终列表变为空。这个例子展示了 pop() 的副作用。

3.10 带特殊判断的问候

ls = ['Niuniu', 'Niumei', 'HR', 'Niu Ke Le', 'GURR', 'LOLO']
for i in ls:
    if i == 'HR':
        print("Hi, " + i + "! Would you like to hire someone?")
    else:
        print("Hi, " + i + "! Welcome to Nowcoder!")

文字分析
在遍历时检查当前元素是否为 'HR',如果是则发送招聘询问,否则发送普通欢迎语。体现了循环内的条件分支。

3.11 查找元素并提前终止循环

ls = [3, 45, 9, 8, 12, 89, 103, 42, 54, 79]
a = int(input())
for i in ls:
    if i == a:
        break
    else:
        print(i)

文字分析
用户输入一个整数 a,程序遍历列表 ls。如果当前元素等于 a,则 break 跳出循环,不再输出后面的元素;否则打印当前元素。注意:找到目标后不会打印它,只打印它之前的所有元素。

3.12 跳过特定数字(continue 示例)

for i in range(1, 16):
    if i == 13:
        continue
    else:
        print(i, end=' ')

文字分析
continue 跳过本次循环剩余部分,直接进入下一次迭代。因此输出 1 到 15,但缺少 13。end=' ' 使 print 不换行,用空格分隔。

3.13 二维列表每个元素乘以 n

n = int(input())
ls = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for i in range(3):
    for j in range(3):
        ls[i][j] = ls[i][j] * n
print(ls)

文字分析
嵌套循环遍历 3×3 矩阵。外层循环 i 控制行,内层循环 j 控制列。每个元素都乘以用户输入的 n。这是修改二维列表的基础操作。


四、自定义函数练习

4.1 华氏度转近似摄氏度(for 循环版)

def Table_For(min, max):
    print("华氏度\t\t近似摄氏度")
    print("********************")
    for i in range(min, max + 1, 10):
        h = (i - 30) / 2
        print(f"{i}\t\t{round(h, 1)}")

文字分析
函数接收最小和最大华氏温度,步长为 10 进行遍历。近似公式:摄氏 ≈ (华氏 - 30) / 2。结果保留一位小数,使用 f-string 格式化输出。\t 表示制表符对齐。

4.2 华氏度转近似摄氏度(while 循环版)

def Table_While(min, max):
    print("华氏度\t\t近似摄氏度")
    print("********************")
    i = min
    while i <= max:
        h = (i - 30) / 2
        print(f"{i}\t\t{round(h, 1)}")
        i += 10

文字分析
与 for 版功能相同,但使用 while 循环,需要手动维护计数器 i。

4.3 精确摄氏度转换(for 版)

def Table_For(min, max):
    print("华氏度\t\t摄氏度\t\t近似摄氏度")
    print("****************************************")
    for i in range(min, max + 1, 10):
        h = (i - 30) / 2
        m = (i - 32) / 1.8
        print(f"{i}\t\t{round(m, 1)}\t\t{round(h, 1)}")

文字分析
增加精确转换公式:摄氏 = (华氏 - 32) / 1.8。输出三列:华氏度、精确摄氏度、近似摄氏度。便于对比两种算法的差异。

4.4 精确摄氏度转换(while 版)

def Table_While(min, max):
    print("华氏度\t\t摄氏度\t\t近似摄氏度")
    print("****************************************")
    i = min
    while i <= max:
        h = (i - 30) / 2
        m = (i - 32) / 1.8
        print(f"{i}\t\t{round(m, 1)}\t\t{round(h, 1)}")
        i += 10

文字分析
同上,只是循环方式不同。

4.5 列表追加并分阶段打印

def Append(primes, p):
    for i in primes:
        print(i)
    primes.append(p)
    for i in primes:
        print(i)

文字分析
该函数接收一个列表 primes 和一个元素 p。先打印原列表所有元素,然后将 p 追加到列表末尾,再打印一次完整列表。演示了列表是可变对象,函数内修改会影响外部。

4.6 生成奇数列表(for 循环)

def Odd_For(n):
    odds = []
    if n == 1:
        odds.append(n)
    else:
        for i in range(1, n + 1, 2):
            odds.append(i)
    return odds

文字分析
返回从 1 到 n 之间的所有奇数(包括 n 如果 n 是奇数)。range(1, n+1, 2) 步长为 2。注意边界情况 n=1 时也能正确返回 [1]。

4.7 生成奇数列表(while 循环)

def Odd_While(n):
    odds = []
    if n == 1:
        odds.append(n)
    else:
        i = 1
        while i < n + 1:
            odds.append(i)
            i += 2
    return odds

文字分析
while 版本逻辑相同,需要手动控制循环变量 i 的递增。


五、总结与学习建议

通过以上 20 多个小例子,你可以看到:

  • 条件判断用于控制程序的分支流向,常与比较运算符和逻辑运算符结合。
  • 循环用于重复执行代码块,for 适合遍历已知范围或可迭代对象,while 适合条件未知的循环。
  • 列表是 Python 最常用的数据结构,支持增删改查、切片、推导式等操作。
  • 函数将代码封装为可复用的单元,提高代码的组织性和可读性。

建议你依次运行每个代码段,尝试修改输入值或边界条件,观察输出的变化。例如:

  • 在成绩计算器中输入 F 学分 3,然后输入 X 结束,看看平均绩点是多少。
  • 修改二维列表乘法函数,让它支持不同尺寸的矩阵。
  • 将华氏度转换函数改为从键盘输入 min 和 max 再调用。

最后,编程能力的提升离不开持续的练习。你可以尝试将这些小函数组合成一个完整的程序,比如:用户登录成功后,显示温度转换表,并可以计算成绩。不断挑战自己,你会进步得更快!

Happy Coding!


2025江苏高校专项计划录取数据全解析|分数线、录取率、择校攻略一文看懂

深入探索C++移动构造:从实验看std::move与拷贝降级的真相

评 论