本周目标
- 掌握Python的四种基本数据类型:数字、字符串、布尔值
一、变量——给数据起个名字
1. 什么是变量?
变量就是一个装数据的盒子。你可以把数据存进去,给它贴个标签(变量名),以后通过这个标签就能找到里面的数据。
# 把数字 18 装进名为 age 的"盒子"里age = 18# 把字符串 "小明" 装进名为 name 的"盒子"里name = "小明"# 使用变量print(name) # 输出:小明print(age) # 输出:18
💡 类比理解:变量就像你家的储物箱——箱子上贴标签(变量名),箱子里放东西(数据)。你需要什么,就通过标签找到对应的箱子。
2. 变量的命名规则
给变量起名字需要遵守一些基本规则:
| | |
|---|
| age_1 | age-1 |
| 不能以数字开头 | num1 | 1num |
| 区分大小写 | Age | |
| my_class | class |
| student_name | a |
# ✅ 正确命名student_age = 20total_score = 95.5is_passed = True# ❌ 错误命名2nd_place = "亚军" # 不能以数字开头my-name = "张三" # 不能有横杠class = "一年级" # class 是关键字
⚠️ AI方向的命名习惯:在机器学习项目中,我们常用 X_train 表示训练集特征,y_train 表示训练集标签,model 表示模型,loss 表示损失值——这些命名规范在后续学习中会自然形成。
3. 变量的重新赋值
变量里的值是可以改变的:
score = 80print(score) # 80score = 95 # 重新赋值print(score) # 95score = score + 10 # 在原来的基础上加10print(score) # 105
二、数据类型(一)——数字(Numbers)
1. 整数(int)
整数就是没有小数点的数字:
age = 25year = 2026temperature = -5 # 可以是负数print(type(age)) # <class 'int'>
2. 浮点数(float)
浮点数就是带小数点的数字:
pi = 3.14159price = 99.9weight = -0.5print(type(pi)) # <class 'float'>
💡 AI小贴士:在AI领域中,神经网络的权重(weights)和偏置(biases)基本上都是浮点数。模型训练的过程,本质上就是不断调整这些浮点数的值。
3. 数字的运算
Python支持常见的数学运算,而且非常直观:
a = 10b = 3print(a + b) # 加法 → 13print(a - b) # 减法 → 7print(a * b) # 乘法 → 30print(a / b) # 除法 → 3.333...(注意:结果永远是浮点数)print(a // b) # 整除 → 3(只保留整数部分)print(a % b) # 取余(模运算)→ 1(10除以3余1)print(a ** b) # 幂运算 → 10³ = 1000
特别注意:在Python中,/ 除法永远返回浮点数,哪怕能整除:
print(10 / 2) # 5.0(是浮点数,不是整数5)
三、数据类型(二)——字符串(String)
1. 什么是字符串?
字符串就是一串文本,用引号包裹起来。单引号、双引号、三引号都可以:
# 三种写法,效果一样name = "张三"city = '北京'desc = """这是一个多行字符串""" # 三引号可以换行print(name) # 张三print(desc) # 这是一个\n多行字符串
💡 AI小贴士:在自然语言处理(NLP)中,文本数据(评论、新闻、对话)全部是以字符串的形式存储和处理的。
2. 字符串的操作
拼接(+):把两个字符串连在一起
first_name = "张"last_name = "三"full_name = first_name + last_nameprint(full_name) # 张三
重复(*):把字符串重复多次
line = "-" * 20print(line) # --------------------
获取长度(len):
text = "Hello AI"print(len(text)) # 8(注意:空格也算一个字符)
3. 转义字符
有些特殊字符需要用 \ 开头来表示:
print("Hello\nWorld")# 输出:# Hello# Worldprint("她说:\"你好\"")# 输出:她说:"你好"
4. 字符串的索引和切片(基础)
字符串中的每个字符都有编号(索引),从 0 开始:
text = "Python"# 索引: P y t h o n# 0 1 2 3 4 5print(text[0]) # P(第1个字符)print(text[1]) # y(第2个字符)print(text[-1]) # n(最后一个字符,-1表示倒数第1个)# 切片:取一段print(text[0:3]) # Pyt(从索引0取到索引2,不包含3)print(text[:3]) # Pyt(省略开头,表示从0开始)print(text[3:]) # hon(省略结尾,表示取到最后)
四、数据类型(三)——布尔值(Boolean)
布尔值只有两个:True(真)和 False(假)。注意首字母一定要大写!
is_sunny = Trueis_raining = Falseprint(type(is_sunny)) # <class 'bool'>
布尔值通常来自比较运算的结果:
age = 18print(age > 16) # True(18大于16)print(age == 18) # True(等于,注意是两个等号)print(age != 18) # False(不等于)print(age >= 20) # False
常见的比较运算符:
| | |
|---|
> | | 5 > 3 |
< | | 5 < 3 |
>= | | 5 >= 5 |
<= | | 5 <= 4 |
== | | 5 == 5 |
!= | | 5 != 3 |
💡 AI小贴士:布尔值在AI中无处不在。比如模型判断"这张图片是不是猫"(True/False)、“预测准确率是否大于0.9”(True/False)——这些都是布尔逻辑的体现。
五、类型转换
不同类型的变量之间有时需要相互转换:
# 转整数print(int("123")) # 123(字符串 → 整数)print(int(3.99)) # 3(浮点数 → 整数,直接截断,不四舍五入)# 转浮点数print(float("3.14")) # 3.14(字符串 → 浮点数)print(float(5)) # 5.0(整数 → 浮点数)# 转字符串print(str(100)) # "100"(数字 → 字符串)print(str(True)) # "True"(布尔值 → 字符串)
⚠️ 常见错误:把无法转换的内容转成数字会报错
int("hello") # ❌ ValueError:无法把"hello"转成数字
六、输入与输出
1. 输出——print()
print() 是我们最常用的输出函数,可以把内容打印到屏幕上:
print("Hello AI")print(123)print(True)# 一次输出多个内容,用逗号隔开name = "小明"age = 18print("姓名:", name, ",年龄:", age)# 输出:姓名: 小明 ,年龄: 18
2. 输入——input()
input() 可以让用户从键盘输入数据:
```pythonname = input("请输入你的名字:")print("你好,", name)
⚠️ 特别重要:input() 的返回值永远是字符串!
age = input("请输入你的年龄:")print(type(age)) # <class 'str'>print(age + 1) # ❌ 报错!字符串不能和数字相加
如果用户输入的是数字,我们需要手动转换:
age = input("请输入你的年龄:")age = int(age) # 转成整数print("明年你", age + 1, "岁") # ✅ 正常运算
⚠️ 常见错误:如果用户输入"abc"然后你用 int() 转换,程序会崩溃。如何处理这种异常情况,我们会在第9周(异常处理)中学习。现阶段练习时,请确保输入正确格式的数字。
七、实战小项目:个人名片生成器
把我们本周学到的知识综合起来,做一个简单的交互式程序:
# 个人名片生成器print("=" * 30)print(" 个人名片生成器")print("=" * 30)# 获取用户信息name = input("请输入你的姓名:")age = input("请输入你的年龄:")city = input("请输入你的城市:")hobby = input("请输入你的爱好:")# 计算信息(年龄转成整数,并计算5年后多大)age_num = int(age)future_age = age_num + 5# 生成名片print("\n" + "=" * 30)print(" 个 人 名 片")print("-" * 30)print(" 姓名:", name)print(" 年龄:", age, "岁")print(" 城市:", city)print(" 爱好:", hobby)print("-" * 30)print(" 5年后你将", future_age, "岁")print("=" * 30)# 判断是否成年is_adult = age_num >= 18print(" 是否成年:", is_adult)print("=" * 30)
运行效果示例:
============================== 个人名片生成器==============================请输入你的姓名:林小夕请输入你的年龄:22请输入你的城市:上海请输入你的爱好:AI编程============================== 个 人 名 片------------------------------ 姓名: 林小夕 年龄: 22 岁 城市: 上海 爱好: AI编程------------------------------ 5年后你将 27 岁============================== 是否成年: True==============================
八、动手练习
练习1:变量与运算
定义一个变量 radius 表示圆的半径(设为5),计算并输出圆的周长(2 * π * r)和面积(π * r²)。(π取3.14159)
👆 点击查看参考答案radius = 5pi = 3.14159perimeter = 2 * pi * radiusarea = pi * radius ** 2print("半径:", radius)print("周长:", perimeter) # 31.4159print("面积:", area) # 78.53975
练习2:字符串操作
定义字符串 s = "Python is powerful",完成以下操作:
👆 点击查看参考答案s = "Python is powerful"print(len(s)) # 19(含空格)print(s[0]) # Pprint(s[-1]) # lprint(s[7:9]) # is
练习3:类型转换
用户输入两个数字,计算它们的和并输出。(提示:不要忘记类型转换)
👆 点击查看参考答案a = input("请输入第一个数字:")b = input("请输入第二个数字:")a = float(a)b = float(b)print("两数之和为:", a + b)
练习4:布尔值练习
编写一段代码:
👆 点击查看参考答案score = 85print(score > 60) # Trueprint(score == 100) # Falseprint(score > 80 and score < 90) # True(and表示"并且")
练习5(综合挑战):温度转换器
编写一个程序:
- 将其转换为华氏温度(
°F),公式:°F = °C × 9/5 + 32
👆 点击查看参考答案celsius = input("请输入摄氏温度:")celsius = float(celsius)fahrenheit = celsius * 9 / 5 + 32print("华氏温度为:", round(fahrenheit, 1), "°F")# round(数字, 1) 表示保留1位小数
本周小结
本周我们掌握了Python最基础的"砖块":
| |
|---|
| 变量 | |
| 整数(int) | |
| 浮点数(float) | |
| 字符串(str) | |
| 布尔值(bool) | True |
| 类型转换 | int() |
| 输入输出 | print() |
下周预告:我们将学习条件判断(if/elif/else)与循环(for/while)——这是让程序拥有"判断力"和"重复执行能力"的关键!届时你写的代码将不再是"直来直去",而是可以根据不同情况做出不同反应。
📌 本周作业建议:把上面的"个人名片生成器"程序自己敲一遍并运行成功,然后尝试添加更多功能(比如:计算出生年份、判断是否达到法定饮酒年龄等)。