Python入门第7章:用户输入和 while 、for循环

文章目录

Python入门第7章:用户输入和 while 、for循环

大家好呀~ 今天我们进入Python入门的第7章内容,这一章的知识点非常实用,也是我们从"写固定代码"走向"交互式程序"的关键一步------学会接收用户输入,并用while循环、for循环实现重复执行的逻辑。不管是做简单的交互工具,还是处理重复任务,这三个知识点都缺一不可,全程结合实例讲解,新手也能轻松跟上,赶紧往下看吧!

一、用户输入:让程序"听"懂你的指令

之前我们写的代码,变量的值都是我们提前设定好的,程序运行时只能按照固定逻辑执行。但实际开发中,我们常常需要让用户自己输入数据,比如让用户输入姓名、年龄,或者输入一个数字进行计算------这时候就需要用到Python的内置函数:input()。

1. input()函数的基础用法

input()函数的核心作用是:暂停程序运行,等待用户从键盘输入内容,然后将输入的内容作为字符串返回,我们可以用一个变量来接收这个返回值。

基本语法:

python 复制代码
# 变量名 = input("提示语")
# 提示语用于告诉用户需要输入什么,可选但建议加上,提升交互体验
name = input("请输入你的姓名:")
print(f"你好,{name}!欢迎学习Python~")

运行这段代码,程序会先显示"请输入你的姓名:",然后等待你输入内容,按下回车键后,程序会打印出包含你输入姓名的问候语。

这里有一个非常重要的注意点:无论用户输入的是数字、符号还是文字,input()函数返回的都是字符串类型。比如你输入"123",程序接收的不是数字123,而是字符串"123",这一点在进行数值运算时一定要注意,后面会详细说如何解决。

2. 数值输入与类型转换

如果我们需要用户输入数字(比如年龄、身高、成绩),并对这些数字进行计算,直接用input()接收就会出问题------因为字符串无法直接参与算术运算。这时候就需要用到类型转换函数,将字符串转换成我们需要的数值类型,常用的有int()(转换为整数)和float()(转换为浮点数)。

示例1:接收整数输入(计算两个数字的和)

python 复制代码
# 先接收用户输入,再转换为整数
num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))
sum_result = num1 + num2
print(f"两个数的和是:{sum_result}")

示例2:接收浮点数输入(计算圆的周长)

python 复制代码
# 圆的周长公式:2 * π * 半径,这里π取3.14
radius = float(input("请输入圆的半径:"))
circumference = 2 * 3.14 * radius
print(f"圆的周长是:{circumference}")

温馨提示:如果用户输入的内容无法转换为对应类型(比如让输入数字,却输入了字母),程序会报错,这个问题我们后续学习异常处理时会解决,目前只要确保输入符合要求即可。

3. 进阶:一次性输入多个值

有时候我们需要一次性让用户输入多个值,比如输入姓名和年龄,这时候可以结合split()函数实现,split()会根据指定的分隔符(默认是空格)将输入的内容分割成多个字符串,再分别转换类型。

python 复制代码
# 用空格分隔,一次性输入姓名和年龄
name, age = input("请输入你的姓名和年龄(用空格分隔):").split()
age = int(age)  # 将年龄转换为整数
print(f"姓名:{name},年龄:{age}岁")

二、循环结构:让程序"重复"做一件事

在生活中,我们经常会重复做一件事,比如每天早上起床、刷牙、洗脸;在程序中,也有很多需要重复执行的操作,比如打印10次"Hello Python"、让用户反复输入指令直到输入"退出"------这时候就需要用到循环结构。Python中最常用的两种循环就是while循环和for循环,它们各有优势,适用于不同场景,我们逐一讲解。

(一)while 循环:条件驱动的"重复执行者"

while循环的核心是条件判断,只要给定的条件为真(True),就会重复执行缩进的代码块(循环体),直到条件为假(False)时,循环才会停止。可以通俗地理解为:"只要满足条件,就一直做这件事",非常适合循环次数不确定的场景。

1. while循环的基本语法与示例

基本语法:

python 复制代码
while 条件表达式:
    # 缩进的循环体(条件为True时执行的代码)
    # 注意:必须有改变条件的语句,否则会陷入无限循环

示例:打印1到5的数字

python 复制代码
# 初始化计数器
count = 1
# 条件:count小于等于5时,执行循环体
while count <= 5:
    print(f"当前计数:{count}")
    # 关键:更新计数器,改变循环条件,避免无限循环
    count += 1  # 等价于 count = count + 1

运行结果:

plaintext 复制代码
当前计数:1
当前计数:2
当前计数:3
当前计数:4
当前计数:5

这里一定要注意:循环体中必须有改变条件的语句(比如count += 1),否则条件会一直为真,循环会无限执行下去,只能通过Ctrl+C手动终止,这就是我们常说的"无限循环",开发中要尽量避免无控制的无限循环。

2. 循环控制:break 和 continue

有时候我们不需要等到循环条件为假才停止循环,而是需要根据特定情况提前终止循环,或者跳过当前轮次的剩余代码------这时候就需要用到break和continue两个关键字,它们的作用完全不同,一定要区分清楚。

(1)break:立即终止整个循环

break的作用是:当满足某个条件时,直接跳出整个while循环,无论循环条件是否还为真,都不再执行后续的循环体内容。

示例:让用户输入内容,输入"退出"则终止程序

python 复制代码
while True:  # 条件始终为真,理论上是无限循环
    user_input = input("请输入内容(输入'退出'结束):")
    if user_input == "退出":
        break  # 满足条件,终止整个循环
    print(f"你输入了:{user_input}")
(2)continue:跳过当前轮次,进入下一轮

continue的作用是:当满足某个条件时,跳过当前轮次循环体中剩余的代码,直接回到循环条件判断处,开始下一轮循环,并不会终止整个循环。

示例:打印1到10中的偶数(跳过奇数)

python 复制代码
num = 0
while num < 10:
    num += 1
    if num % 2 != 0:  # 如果是奇数,跳过当前轮次的打印
        continue
    print(f"偶数:{num}")

运行结果:

plaintext 复制代码
偶数:2
偶数:4
偶数:6
偶数:8
偶数:10
3. while-else 结构(可选)

while循环还可以搭配else块使用,else块中的代码会在**while循环正常结束(即条件变为False,没有被break终止)**时执行。如果循环被break终止,else块不会执行。

示例:

python 复制代码
count = 1
while count <= 3:
    print(f"循环中:{count}")
    count += 1
else:
    print("循环正常结束,执行else块")

运行结果:

plaintext 复制代码
循环中:1
循环中:2
循环中:3
循环正常结束,执行else块
4. while循环的常见应用场景

while循环的优势在于"不确定循环次数"的场景,比如:

  • 用户交互:让用户反复输入指令,直到输入退出指令。

  • 处理未知长度的数据:比如读取文件直到末尾,或处理数据流。

  • 累加/累乘计算:比如计算1到100的和、1到10的乘积。

  • 动态操作数据结构:比如向列表中添加元素,直到满足指定条件。

示例:计算1到100的和

python 复制代码
total = 0  # 初始化累加器
num = 1
while num <= 100:
    total += num  # 等价于 total = total + num
    num += 1
print(f"1到100的和是:{total}")

(二)for 循环:迭代驱动的"高效遍历者"

和while循环的"条件驱动"不同,for循环是迭代驱动,核心作用是遍历可迭代对象(比如列表、字符串、字典等),依次取出对象中的每个元素,执行循环体操作,直到遍历完所有元素,循环自动终止。它的语法简洁,无需手动控制循环条件,非常适合已知循环次数或需要遍历数据的场景。

1. for循环的基本语法与核心概念

基本语法:

python 复制代码
for 变量名 in 可迭代对象:
    # 缩进的循环体(遍历每个元素时执行的代码)

核心概念解释:

  • 变量名:每次循环中,会将可迭代对象中的一个元素赋值给这个变量,可自定义(如item、i、name等)。

  • 可迭代对象:能依次取出元素的对象,常见的有列表、字符串、元组、字典、range()函数生成的序列等。

2. for循环的常见用法(结合实例)

用法1:遍历字符串(依次取出每个字符)

python 复制代码
message = "Python入门"
# 遍历字符串中的每个字符
for char in message:
    print(char)

运行结果:

plaintext 复制代码
P
y
t
h
o
n
入
门

用法2:遍历列表(依次取出每个元素)

python 复制代码
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
# 遍历列表中的每个水果
for fruit in fruits:
    print(f"我喜欢吃:{fruit}")

用法3:使用range()函数(生成指定范围的整数序列,适合固定次数循环)

range()函数是for循环的常用工具,能生成一个整数序列,有3种常用用法:

  • range(n):生成0到n-1的整数(不包含n)

  • range(a, b):生成a到b-1的整数(不包含b)

  • range(a, b, step):生成a到b-1的整数,步长为step(每次递增/递减的数值)

python 复制代码
# 示例1:生成0-4的整数,循环5次
for i in range(5):
    print(f"循环第{i+1}次")

# 示例2:生成1-5的整数(包含1,不包含6)
for i in range(1, 6):
    print(f"当前数字:{i}")

# 示例3:生成1-9的奇数(步长为2)
for i in range(1, 10, 2):
    print(f"奇数:{i}")

用法4:遍历字典(三种方式,按需选择)

python 复制代码
person = {"name": "小明", "age": 18, "gender": "男"}
# 方式1:遍历字典的键(默认遍历键)
print("字典的键:")
for key in person:
    print(key)

# 方式2:遍历字典的值
print("\n字典的值:")
for value in person.values():
    print(value)

# 方式3:遍历字典的键值对(最常用)
print("\n字典的键值对:")
for key, value in person.items():
    print(f"{key}:{value}")
3. for循环的循环控制(break、continue、else)

for循环同样支持break、continue关键字,用法和while循环完全一致;也支持else块,else块在循环正常遍历完所有元素(未被break终止)时执行。

示例1:用break终止for循环(遍历列表,找到指定元素后停止)

python 复制代码
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
# 寻找"橙子",找到后终止循环
for fruit in fruits:
    if fruit == "橙子":
        print(f"找到目标水果:{fruit}")
        break
    print(f"当前遍历:{fruit}")

示例2:用continue跳过当前轮次(遍历1-10,跳过偶数)

python 复制代码
for i in range(1, 11):
    if i % 2 == 0:
        continue  # 跳过偶数,进入下一轮
    print(f"奇数:{i}")

示例3:for-else结构

python 复制代码
for i in range(3):
    print(f"for循环中:{i}")
else:
    print("for循环正常遍历结束,执行else块")
4. for循环的常见应用场景

for循环的优势在于"已知循环次数"或"遍历数据"的场景,比如:

  • 遍历数据:遍历列表、字符串、字典等可迭代对象,处理每个元素。

  • 固定次数循环:比如打印10次提示信息、执行5次计算。

  • 数据处理:对列表、元组中的元素进行批量操作(如求和、筛选)。

  • 嵌套循环:实现更复杂的逻辑(如打印九九乘法表)。

示例:打印九九乘法表(嵌套for循环)

python 复制代码
# 外层循环控制行数(1-9)
for i in range(1, 10):
    # 内层循环控制每行的列数(1到当前行数)
    for j in range(1, i+1):
        print(f"{j}×{i}={i*j}", end="\t")
    # 每行结束后换行
    print()

(三)while循环与for循环的核心区别

很多新手会混淆两种循环,其实只要记住核心区别,就能灵活选择,具体对比如下:

  • 驱动方式:while循环是条件驱动 ,只要条件为真就循环;for循环是迭代驱动,遍历完可迭代对象就终止。

  • 循环次数:while循环适合循环次数不确定 的场景(如用户输入直到退出);for循环适合循环次数确定或需要遍历数据的场景(如遍历列表、固定执行10次)。

  • 语法复杂度:while循环需要手动初始化计数器、更新条件,容易出现无限循环;for循环无需手动控制条件,语法更简洁,不易出错。

一句话总结:知道要循环多少次、要遍历数据,用for循环;不知道循环多少次、按条件循环,用while循环。

三、综合案例:结合用户输入和两种循环

学到这里,我们已经掌握了用户输入、while循环和for循环的核心用法,下面结合三个综合案例,帮大家巩固知识点,学会灵活运用两种循环。

案例1:猜数字游戏(while循环+用户输入)

功能:程序随机生成一个1-100之间的数字,用户反复猜数字,程序提示"猜大了"或"猜小了",直到猜对为止,并统计猜测次数。(适合用while循环,循环次数不确定)

python 复制代码
import random  # 导入随机数模块

# 生成1-100之间的随机数
secret_num = random.randint(1, 100)
count = 0  # 统计猜测次数

print("欢迎来到猜数字游戏!数字范围1-100,猜一猜吧~")
while True:
    # 接收用户输入,并转换为整数
    guess_num = int(input("请输入你猜测的数字:"))
    count += 1  # 每猜一次,次数加1
    
    # 判断猜测结果
    if guess_num == secret_num:
        print(f"恭喜你!猜对啦🎉")
        print(f"你一共猜了{count}次")
        break  # 猜对了,终止循环
    elif guess_num < secret_num:
        print("猜小啦!再试试更大的数字~")
    else:
        print("猜大啦!再试试更小的数字~")

案例2:批量处理用户输入(for循环+用户输入)

功能:接收3个用户的姓名和年龄,存储到列表中,最后批量打印所有用户信息。(适合用for循环,循环次数固定为3次)

python 复制代码
users = []  # 用列表存储多个用户信息
# 循环3次,接收3个用户的信息
for i in range(1, 4):
    print(f"\n请输入第{i}个用户的信息:")
    name = input("姓名:")
    age = int(input("年龄:"))
    # 将用户信息添加到列表中
    users.append({"name": name, "age": age})

# 遍历列表,打印所有用户信息
print("\n所有用户信息:")
for user in users:
    print(f"姓名:{user['name']},年龄:{user['age']}岁")

案例3:用户菜单交互(while+for循环结合)

功能:显示用户菜单,用户可选择"查看列表""添加元素""退出",循环执行直到用户选择退出;其中"查看列表"用for循环遍历,"添加元素"用while循环保证输入有效。

python 复制代码
my_list = ["Python", "Java", "C++"]  # 初始列表

while True:
    # 显示菜单
    print("\n===== 列表操作菜单 =====")
    print("1. 查看列表元素")
    print("2. 添加列表元素")
    print("3. 退出程序")
    choice = input("请输入你的选择(1/2/3):")
    
    # 根据用户选择执行操作
    if choice == "1":
        # 查看列表,用for循环遍历
        print("当前列表元素:")
        for item in my_list:
            print(f"- {item}")
    elif choice == "2":
        # 添加元素,用while循环保证输入不为空
        while True:
            new_item = input("请输入要添加的元素(不能为空):")
            if new_item.strip() != "":  # 判断输入不为空
                my_list.append(new_item)
                print(f"元素「{new_item}」添加成功!")
                break
            else:
                print("输入不能为空,请重新输入!")
    elif choice == "3":
        print("退出程序,再见!")
        break
    else:
        print("输入错误,请输入1、2或3!")

四、本章重点总结

这一章的知识点不难,但非常重要,是后续编写交互式程序、处理重复任务的基础,大家一定要多动手练习,重点掌握以下几点:

  1. input()函数:接收用户输入,默认返回字符串,需根据需求用int()/float()转换类型;可结合split()一次性输入多个值。

  2. while循环:条件驱动,适合循环次数不确定的场景,必须有改变条件的语句,避免无限循环;支持break、continue、else。

  3. for循环:迭代驱动,适合遍历可迭代对象或固定次数循环;常用range()函数生成序列,同样支持break、continue、else;可实现嵌套循环。

  4. 两种循环的区别与选择:知道循环次数/遍历数据用for,不知道次数/按条件循环用while。

  5. 综合运用:结合用户输入和两种循环,实现简单的交互式程序(如猜数字、菜单交互)。

练习建议:把本章的示例代码都敲一遍,然后尝试修改代码(比如修改猜数字的范围、增加用户输入的错误提示、完善菜单功能),多动手才能真正掌握。下一章我们会学习函数敬请期待~

如果在练习中遇到问题,欢迎在评论区留言,一起交流学习呀!❤️

相关推荐
天若有情67313 分钟前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
好家伙VCC17 分钟前
**发散创新:基于Python与ROS的机器人运动控制实战解析**在现代机器人系统开发中,**运动控制**是实现智能行为的核心
java·开发语言·python·机器人
2401_8274999917 分钟前
python项目实战09-AI智能伴侣(ai_partner_2-3)
开发语言·python
派葛穆20 分钟前
汇川PLC-Python与汇川easy521plc进行Modbustcp通讯
开发语言·python
代码小书生1 小时前
Matplotlib,Python 数据可视化核心库!
python·信息可视化·matplotlib
lzhdim1 小时前
SharpCompress:跨平台的 C# 压缩与解压库
开发语言·c#
嘿嘿嘿x31 小时前
Linux记录过程
linux·开发语言
默 语1 小时前
Records、Sealed Classes这些新特性:Java真的变简单了吗?
java·开发语言·python
架构师老Y1 小时前
013、数据库性能优化:索引、查询与连接池
数据库·python·oracle·性能优化·架构
止观止1 小时前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext