🎯 本章你会学到:动态类型、f-string、切片:Python 最常用的三件事。建议边读边敲,每节练习先自己做,再展开答案对照。
Python 的变量是贴在对象上的名字,类型跟着值走。同一个名字可以先指向整数、再指向字符串——但每次运算时类型必须匹配,否则立刻报错。
类型与 f-string
name = "Ann"
score = 90
ratio = score / 100 # 除法总是得到 float
print(f"{name} scored {score}, ratio={ratio:.2f}")
print(type(score).__name__, type(ratio).__name__)
print(7 // 2, 7 % 2, 2 ** 10) # 整除、取余、幂
print(0.1 + 0.2) # 浮点精度问题依然存在运行结果
Ann scored 90, ratio=0.90
int float
3 1 1024
0.30000000000000004
字符串与切片
字符串常用操作
text = " Hello, Python World "
print(repr(text.strip())) # 去两端空白
print(text.strip().lower())
print(text.strip().split(", ")) # 按分隔符切分成列表
print("-".join(["a", "b", "c"])) # 列表拼回字符串
word = "python"
print(word[0], word[-1]) # 首字符、末字符
print(word[1:4], word[::-1]) # 切片、反转运行结果
'Hello, Python World'
hello, python world
['Hello', 'Python World']
a-b-c
p n
yth nohtyp
| 操作 | 写法 | 说明 |
|---|---|---|
| 格式化 | f"{x:.2f}" | f-string,最推荐的拼接方式 |
| 切片 | s[1:4] / s[::-1] | 左闭右开;步长 -1 表示反转 |
| 查长度 | len(s) | 字符串、列表、字典都通用 |
| 去空白 | s.strip() / lstrip() / rstrip() | 返回新字符串 |
| 切分与拼接 | s.split(sep) / sep.join(seq) | 处理文本的两个主力 |
| 类型转换 | int(s) / float(s) / str(x) | 转换失败抛 ValueError |
⚠️ 易错点 字符串不可变:
s.strip()、s.upper() 都返回新字符串,原来的 s 不会变。⚠️ 易错点
1 + "2" 会抛 TypeError。Python 不会帮你隐式转换——这是动态类型不等于弱类型的关键区别。✍️ 本节练习
2.1必做圆的面积
读入半径 r(浮点数),输出面积,保留 2 位小数。圆周率用 3.14159265。
输入 一个实数 r。
输出 一行 area=面积(2 位小数)。
样例输入
2样例输出
area=12.57💡 提示 float(input()) 读入小数;f-string 里 {x:.2f} 控制小数位。
✅ 查看参考答案与解析
r = float(input())
area = 3.14159265 * r * r
print(f"area={area:.2f}")解析 {area:.2f} 会四舍五入到 2 位小数;这种格式化方式比 % 和 format() 都更易读。
2.2挑战句子统计与反转
读入一行句子,输出单词数、最长的单词(并列取最先出现的)和整句反转后的结果。
输入 一行英文句子。
输出 三行:words=、longest=、reversed=。
样例输入
hello world python样例输出
words=3
longest=python
reversed=nohtyp dlrow olleh💡 提示 split() 切词,max(words, key=len) 找最长,切片 [::-1] 反转整句。
✅ 查看参考答案与解析
sentence = input()
words = sentence.split()
longest = max(words, key=len)
print(f"words={len(words)}")
print(f"longest={longest}")
print(f"reversed={sentence[::-1]}")解析 max 的 key=len 表示按长度比较,并列时返回最先出现的那个——这类按规则取最值的写法比手写循环短得多。