文章目录
- [Python入门第7章:用户输入和 while 、for循环](#Python入门第7章:用户输入和 while 、for循环)
-
- 一、用户输入:让程序"听"懂你的指令
-
- [1. input()函数的基础用法](#1. input()函数的基础用法)
- [2. 数值输入与类型转换](#2. 数值输入与类型转换)
- [3. 进阶:一次性输入多个值](#3. 进阶:一次性输入多个值)
- 二、循环结构:让程序"重复"做一件事
-
- [(一)while 循环:条件驱动的"重复执行者"](#(一)while 循环:条件驱动的“重复执行者”)
-
- [1. while循环的基本语法与示例](#1. while循环的基本语法与示例)
- [2. 循环控制:break 和 continue](#2. 循环控制:break 和 continue)
- [3. while-else 结构(可选)](#3. while-else 结构(可选))
- [4. while循环的常见应用场景](#4. while循环的常见应用场景)
- [(二)for 循环:迭代驱动的"高效遍历者"](#(二)for 循环:迭代驱动的“高效遍历者”)
-
- [1. for循环的基本语法与核心概念](#1. for循环的基本语法与核心概念)
- [2. for循环的常见用法(结合实例)](#2. for循环的常见用法(结合实例))
- [3. for循环的循环控制(break、continue、else)](#3. for循环的循环控制(break、continue、else))
- [4. for循环的常见应用场景](#4. for循环的常见应用场景)
- (三)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!")
四、本章重点总结
这一章的知识点不难,但非常重要,是后续编写交互式程序、处理重复任务的基础,大家一定要多动手练习,重点掌握以下几点:
-
input()函数:接收用户输入,默认返回字符串,需根据需求用int()/float()转换类型;可结合split()一次性输入多个值。
-
while循环:条件驱动,适合循环次数不确定的场景,必须有改变条件的语句,避免无限循环;支持break、continue、else。
-
for循环:迭代驱动,适合遍历可迭代对象或固定次数循环;常用range()函数生成序列,同样支持break、continue、else;可实现嵌套循环。
-
两种循环的区别与选择:知道循环次数/遍历数据用for,不知道次数/按条件循环用while。
-
综合运用:结合用户输入和两种循环,实现简单的交互式程序(如猜数字、菜单交互)。
练习建议:把本章的示例代码都敲一遍,然后尝试修改代码(比如修改猜数字的范围、增加用户输入的错误提示、完善菜单功能),多动手才能真正掌握。下一章我们会学习函数敬请期待~
如果在练习中遇到问题,欢迎在评论区留言,一起交流学习呀!❤️