Python基础:条件判断、循环结构与字符串操作详解
条件判断语句
在Python中,条件判断是通过if语句实现的,它允许程序根据不同的条件执行不同的代码块。
基本语法结构:
if 条件表达式:
# 当条件为True时执行的代码块
执行语句1
执行语句2
# 此处代码与if语句同级,无论条件是否满足都会执行
print("条件判断外的代码")
示例代码:
if True:
print('条件成立时执行的语句1')
print('条件成立时执行的语句2')
# 以下代码没有缩进,与if语句同级
print('无论条件是否成立都会执行的代码')
条件判断实际应用
age = int(input("请输入您的年龄:"))
if age >= 18:
print('已成年,可以访问该网站')
if-else条件结构
当需要在条件不满足时执行另一段代码,可以使用if-else结构:
if 条件判断:
# 条件为True时执行的代码块
else:
# 条件为False时执行的代码块
实际案例:
age = int(input('请输入您的年龄:'))
if age >= 18:
print('已成年,可以访问该网站')
else:
print('未成年,请监护人陪同访问')
多重条件判断结构
当需要判断多个条件时,可以使用if-elif-else结构:
if 条件判断1:
# 条件1为True时执行
elif 条件判断2:
# 条件2为True时执行
elif 条件判断3:
# 条件3为True时执行
else:
# 所有条件都不满足时执行
多重条件判断是从上到下依次执行的,因此编写代码时,范围判断应遵循一定逻辑顺序。
案例:根据输入的月份判断季节
# 获取用户输入的月份
month = int(input("请输入月份 (1-12): "))
# 判断季节
if 3 <= month <= 5:
season = "春季"
elif 6 <= month <= 8:
season = "夏季"
elif 9 <= month <= 11:
season = "秋季"
elif month in [1, 2, 12]:
season = "冬季"
else:
season = "无效的月份"
# 输出结果
print(f"该月份属于: {season}")
嵌套条件结构
在一个条件判断内部再添加条件判断,形成嵌套结构:
if 外层条件:
# 外层条件满足时执行
if 内层条件:
# 内层条件满足时执行
else:
# 内层条件不满足时执行
else:
# 外层条件不满足时执行
案例:判断驾驶员是否酒驾
alcohol = int(input('请输入驾驶员100ml血液中的酒精含量:'))
# 判断酒精含量是否小于20mg
if alcohol < 20:
print('驾驶员不构成酒驾')
else:
# 已经构成酒驾,判断是酒驾还是醉驾
if alcohol >= 80:
print('驾驶员已构成醉驾')
else:
print('驾驶员已构成酒驾')
实战案例:猜拳游戏
import random
# 玩家出拳:0-石头,1-剪刀,2-布
player_choice = int(input('请出拳(0-石头,1-剪刀,2-布):'))
# 电脑随机出拳
computer_choice = random.randint(0, 2)
# 判断输赢
if (player_choice == 0 and computer_choice == 1) or \
(player_choice == 1 and computer_choice == 2) or \
(player_choice == 2 and computer_choice == 0):
print('玩家获胜!')
elif player_choice == computer_choice:
print('平局!')
else:
print('电脑获胜!')
循环结构
循环是指有条件地重复执行某段代码。Python中主要有两种循环:while循环和for循环。
- 当循环次数不确定时,建议使用while循环
- 当循环次数确定时,建议使用for循环
while循环基本语法
# 初始化计数器
counter = 0
# 编写循环条件
while counter < 10:
print(f"当前计数: {counter}")
# 更新计数器
counter += 1
案例:计算1到100之间所有偶数的和
# 初始化变量
num = 1
total = 0
# 循环条件
while num <= 100:
# 判断是否为偶数
if num % 2 == 0:
total += num
# 更新计数器
num += 1
print(f'1到100之间所有偶数的和:{total}')
循环控制关键字
Python中有两个重要的循环控制关键字:break和continue。
break:立即终止整个循环
counter = 1
while counter <= 5:
if counter == 3:
print('遇到特殊情况,终止循环')
break
print(f'当前计数: {counter}')
counter += 1
continue:跳过当前循环,继续下一次循环
counter = 0
while counter < 5:
counter += 1
if counter == 3:
print('跳过当前循环')
continue
print(f'当前计数: {counter}')
无限循环
当循环条件永远为True时,会形成无限循环:
while True:
print('这是一个无限循环')
while循环案例:猜数字游戏
import random
# 生成1到100之间的随机数
target_num = random.randint(1, 100)
print('猜数字游戏开始!请猜一个1到100之间的整数')
while True:
guess = int(input('请输入您猜的数字: '))
if guess == target_num:
print('恭喜您,猜对了!')
break
elif guess > target_num:
print('猜大了,再小一点!')
else:
print('猜小了,再大一点!')
for循环基本语法
for循环主要用于遍历序列类型的数据(如字符串、列表、元组等):
for 临时变量 in 序列:
# 循环体
执行语句
案例:遍历字符串
text = 'Python'
for char in text:
print(char)
range函数
range函数用于生成一个整数序列,常与for循环配合使用:
# 生成0到4的数字序列
for num in range(5):
print(num) # 输出: 0 1 2 3 4
# 生成2到7的数字序列
for num in range(2, 8):
print(num) # 输出: 2 3 4 5 6 7
# 生成1到10,步长为2的序列
for num in range(1, 11, 2):
print(num) # 输出: 1 3 5 7 9
for循环案例:计算偶数和
sum_even = 0
# 遍历1到100的数字
for num in range(1, 101):
if num % 2 == 0:
sum_even += num
print(f'1到100之间所有偶数的和为: {sum_even}')
综合案例:用户登录验证
# 设置正确的用户名和密码
correct_username = 'admin'
correct_password = 'admin123'
# 最多允许3次尝试
for attempt in range(3):
username = input('请输入用户名: ')
password = input('请输入密码: ')
if username == correct_username and password == correct_password:
print('登录成功!')
break
else:
remaining_attempts = 2 - attempt
if remaining_attempts > 0:
print(f'用户名或密码错误,还有{remaining_attempts}次尝试机会')
else:
print('尝试次数已达上限,账户已锁定')
else:
print('登录失败,请联系管理员')
for循环中的else结构
for循环可以与else配合使用,else中的代码在循环正常结束时执行:
for i in range(5):
print(i)
else:
print('循环正常结束')
如果循环被break终止,else中的代码不会执行:
for i in range(5):
if i == 3:
print('遇到3,终止循环')
break
print(i)
else:
print('这段代码不会执行')
字符串操作
字符串是Python中最常用的数据类型之一,可以使用引号创建。
字符串切片
字符串切片允许我们获取字符串的子串:
text = 'Python编程'
# 基本切片语法 [起始位置:结束位置:步长]
print(text[0:6]) # 输出: Python
print(text[:6]) # 输出: Python (从开头到索引5)
print(text[6:]) # 输出: 编程 (从索引6到结尾)
print(text[::2]) # 输出: Pto编 (每隔一个字符取一个)
print(text[::-1]) # 输出: 程编nohtyP (反转字符串)
字符串查找方法
find()方法:查找子串,返回索引或-1
sentence = 'Python是一种流行的编程语言'
print(sentence.find('编程')) # 输出: 9
print(sentence.find('Java')) # 输出: -1
index()方法:查找子串,返回索引或报错
sentence = 'Python是一种流行的编程语言'
print(sentence.index('编程')) # 输出: 9
# print(sentence.index('Java')) # 会抛出ValueError异常
字符串修改方法
replace()方法:替换字符串中的内容
text = 'Python是优秀的编程语言,Python易学易用'
print(text.replace('Python', 'Java')) # 替换所有匹配项
print(text.replace('Python', 'Java', 1)) # 只替换第一个匹配项
split()方法:分割字符串
fruits = '苹果,香蕉,橙子,葡萄'
fruit_list = fruits.split(',')
print(fruit_list) # 输出: ['苹果', '香蕉', '橙子', '葡萄']
join()方法:连接序列中的元素
fruit_list = ['苹果', '香蕉', '橙子', '葡萄']
result = '-'.join(fruit_list)
print(result) # 输出: 苹果-香蕉-橙子-葡萄
字符串格式化
name = '小明'
age = 25
# 使用f-string格式化
print(f'姓名: {name}, 年龄: {age}')
# 使用format方法
print('姓名: {}, 年龄: {}'.format(name, age))
经典案例:水仙花数
水仙花数是指一个n位数,其各位数字的n次幂之和等于它本身。
# 计算100到999之间的水仙花数
print('100到999之间的水仙花数有:')
for num in range(100, 1000):
# 将数字转换为字符串以便获取各位数字
num_str = str(num)
# 计算各位数字的立方和
sum_of_cubes = 0
for digit in num_str:
sum_of_cubes += int(digit) ** 3
# 判断是否为水仙花数
if sum_of_cubes == num:
print(num, end=' ')
print()