【Python学习打卡-Day2】玩转字符串与逻辑判断的艺术
前言
大家好,Python 学习打卡第二天!昨天我们熟悉了变量和 f-string,感觉像是给编程世界打开了一扇门。今天,我们将深入探索 Python 中最常用的数据类型之一——字符串 (String),并学习如何让程序做出判断——比较运算。
今天的知识点非常实用,无论是以后做数据分析、网站开发还是自动化脚本,都离不开对字符串的处理和逻辑判断。让我们一起攻克它吧!
一、知识点总结:老师的课堂精华
在开始做题之前,我先把今天学习到的核心知识点进行一个梳理总结。
1. 变量的“四大家族”
Python 中有许多数据类型,但最基础、最常用的有四种:
- 字符串 (str): 用引号(单引号
'或双引号")包围的文本,如"你好"。 - 整数 (int): 没有小数点的数字,如
100、-5。 - 浮点数 (float): 带有小数点的数字,如
3.14、-0.5。 - 布尔值 (bool): 只有两个值,
True(真) 和False(假),通常是判断的结果。
我们可以用 type() 函数来查看任何一个变量的“真实身份”。
name = "小明"
print(f"name 的类型: {type(name)}") # 输出: <class 'str'>
2. 变量的“变身术”——类型转换
有时候,我们需要让变量在不同类型间转换。
str(): 将任何类型转换为字符串。int(): 将纯数字字符串或浮点数转换为整数(浮点数转换会直接舍弃小数部分)。float(): 将数字型字符串或整数转换为浮点数。
注意:不是所有字符串都能转成数字!例如 int("hello") 就会报错 ValueError。
3. 字符串的“庖丁解牛”
a. 拼接与长度
- 拼接
+: 像胶水一样把两个字符串粘在一起。 - 长度
len(): 计算字符串包含多少个字符。
b. 索引 (Indexing):精确定位
- Python 的索引从
0开始!第一个字符的索引是0。 - 支持负数索引,
-1代表最后一个字符,-2代表倒数第二个,非常方便。
c. 切片 (Slicing):批量提取
- 核心口诀:
[起始:结束:步长],但最重要的是记住“取左不取右”! text[0:5]提取的是索引0, 1, 2, 3, 4的字符,不包含索引5。起始或结束可以省略,省略起始表示从头开始,省略结束表示到末尾结束。
4. 程序的“法官”——比较运算符
比较运算符用来比较两个值,并返回一个布尔结果 (True或False)。
>(大于),<(小于),>=(大于等于),<=(小于等于)==(等于): 注意是两个等号! 一个等号=是赋值。!=(不等于)
二、今日实战演练
下面是今天作业的题目与我的解答。
题目1: 字符串基础操作 (简单)
要求:拼接 “Hello” 和 “Python”,计算长度,并获取首、次、尾字符。
我的解答:
# 定义两个字符串变量
str1 = "Hello"
str2 = "Python"
# 1. 拼接字符串,中间加一个空格
greeting = str1 + " " + str2
# 2. 计算拼接后字符串的长度
length = len(greeting)
# 3. 获取指定位置的字符 (索引从0开始, -1代表最后一个)
first_char = greeting[0]
second_char = greeting[1]
last_char = greeting[-1]
# 使用 f-string 打印结果
print(f"拼接结果: {greeting}")
print(f"字符串长度: {length}")
print(f"第一个字符: {first_char}")
print(f"第二个字符: {second_char}")
print(f"最后一个字符: {last_char}")
运行结果:
拼接结果: Hello Python
字符串长度: 12
第一个字符: H
第二个字符: e
最后一个字符: n
题目2:字符串切片练习 (中等)
要求:对 “PythonProgramming” 进行切片,提取 “Python”, “Programming” 和 “nProg”。
我的解答:
# 1. 定义字符串
text = "PythonProgramming"
# P y t h o n P r o g r a m m i n g
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 2. 提取前6个字符
part1 = text[:6] # 省略起始位置,表示从头开始
# 3. 提取后11个字符
# 方法一: 直接用负数索引
part2 = text[-11:]
# 方法二: 计算出起始位置
# part2 = text[6:]
# 老师没讲的小技巧:用 len() 计算总长再减去11,得到起始索引
# part2 = text[len(text)-11:]
# 4. 提取中间的 "nProg" (索引从5到9)
middle = text[5:10] # 结束位置是10,因为“取左不取右”
# 5. 计算 part1 和 part2 的长度之和
total_length = len(part1) + len(part2)
# 使用 f-string 打印结果
print(f"前6个字符: {part1}")
print(f"后11个字符: {part2}")
print(f"中间5个字符: {middle}")
print(f"part1和part2的总长度: {total_length}")
运行结果:
前6个字符: Python
后11个字符: Programming
中间5个字符: nProg
part1和part2的总长度: 17
题目3: 类型转换综合应用 (中等)
要求:将字符串"25", “1.75” 分别转为整数和浮点数,并将数字 95 转为字符串。
我的解答:
# 定义初始变量
age_str = "25"
height_str = "1.75"
score = 95
# 1. age_str -> 整数
age = int(age_str)
# 2. height_str -> 浮点数
height = float(height_str)
# 3. score -> 字符串
score_str = str(score)
# 4. 整数和整数相加
total = age + score
# 使用 f-string 和 type() 函数打印结果
print(f"年龄(整数): {age}, 类型: {type(age)}")
print(f"身高(浮点数): {height}, 类型: {type(height)}")
print(f"分数(字符串): {score_str}, 类型: {type(score_str)}")
print(f"年龄+分数: {total}")
运行结果:
年龄(整数): 25, 类型: <class 'int'>
身高(浮点数): 1.75, 类型: <class 'float'>
分数(字符串): 95, 类型: <class 'str'>
年龄+分数: 120
题目4: 字符串与比较运算综合 (中等偏难)
要求:检查密码 “python123” 的长度、首尾字符,并判断前缀是否为 “python”。
我的解答:
# 定义变量
password = "python123"
min_length = 8
# 1. 检查密码长度是否 >= min_length
# len(password) 计算出实际长度 9
# 9 >= 8 这个比较运算的结果是 True
is_length_valid = len(password) >= min_length
# 2. 获取首尾字符
first_char = password[0]
last_char = password[-1]
# 3. 提取前6个字符
prefix = password[:6]
# 4. 检查前6个字符是否等于 "python"
# "python" == "python" 这个比较运算的结果是 True
is_prefix_correct = (prefix == "python")
# 使用 f-string 打印所有结果
print(f"密码: {password}")
print(f"密码长度: {len(password)}")
print(f"长度符合要求(>={min_length}): {is_length_valid}")
print(f"首字符: {first_char}, 尾字符: {last_char}")
print(f"前6个字符: {prefix}")
print(f"前6个字符是否为'python': {is_prefix_correct}")
运行结果:
密码: python123
密码长度: 9
长度符合要求(>=8): True
首字符: p, 尾字符: 3
前6个字符: python
前6个字符是否为'python': True
总结与反思
Day 2 的内容比第一天要丰富得多,也更有趣。通过今天的学习,我深刻体会到:
- 数据类型很重要:搞清楚变量是什么类型,是进行正确操作的前提。
"25"和25在 Python 眼里是完全不同的东西。 - 字符串操作是基础技能:索引和切片是处理文本数据的“瑞士军刀”,必须熟练掌握。负数索引真的太方便了!
- 比较运算是逻辑的起点:
True和False是程序做出决策的基础,我们后面的if语句等都依赖于此。 - 犯错是好事:在做题时,我曾把
==写成=,或者切片范围搞错。但正是这些错误,让我对知识点的理解更加深刻。
感觉自己的编程技能条又增长了一点点!继续努力,期待明天的挑战!
最后,再次感谢 @浙大疏锦行 提供的优质学习内容!
更多推荐



所有评论(0)