文章目录
- 引言:为什么需要变量?
- 一、什么是变量
- 1. 变量的概念
- 2. 变量的命名规则
- 3. 变量的赋值与重新赋值
- 4. 同时给多个变量赋值
- 二、数字、字符串、布尔值
- 1. 数字类型
- 整数(int)
- 浮点数(float)
- 数字运算
- 2. 字符串(str)
- 字符串的创建
- 字符串操作
- 字符串方法
- 字符串格式化
- 3. 布尔值(bool)
- 4. None 类型
- 三、类型转换
- 1. 隐式类型转换
- 2. 显式类型转换
- 转换为整数 int()
- 转换为浮点数 float()
- 转换为字符串 str()
- 转换为布尔值 bool()
- 3. 类型检查
- 四、实战练习
- 练习1:个人信息卡
- 练习2:温度转换器
- 练习3:数据类型转换练习
- 练习4:简单计算器
- 五、常见问题与排错
- 问题1:类型不匹配报错
- 问题2:无法转换的类型
- 问题3:变量未定义
- 六、本篇小结
- 下期预告
✍创作者:全栈弄潮儿
🏡 个人主页:全栈弄潮儿的个人主页
🏙️ 个人社区,欢迎你的加入:全栈开发社区
📙 专栏:Python实战教程:从零基础到AI Agent开发
引言:为什么需要变量?
在第1期中,我们学会了编写第一个Python程序。但你可能发现了一个问题:如果我们想在程序中多次使用同一个数据,每次都要重新写一遍,非常麻烦。
比如,你想在程序中多次使用你的名字:
print("你好,小明!")print("小明,欢迎学习Python!")print("小明,今天天气不错!")如果名字变了,你需要修改每一行代码。这时候,变量就派上用场了。
变量就像一个有标签的盒子,可以把数据存储起来,需要的时候随时取用。
一、什么是变量
1. 变量的概念
变量就像一个有标签的盒子,用来存储数据。
# 创建一个变量,存储你的名字name="小明"# 创建一个变量,存储你的年龄age=25# 使用变量print(name)# 输出:小明print(age)# 输出:25💡提示:
=是赋值符号,意思是"把右边的值放进左边的盒子里"。
2. 变量的命名规则
# ✅ 正确的命名user_name="张三"# 使用下划线分隔age2=30# 可以包含数字,但不能以数字开头_private="私有变量"# 可以以下划线开头# ❌ 错误的命名# 2age = 30 # 不能以数字开头# user-name = "李四" # 不能使用连字符# class = "一班" # 不能使用Python关键字💡提示:变量命名要见名知意,使用英文小写字母,多个单词用下划线连接。
3. 变量的赋值与重新赋值
# 第一次赋值score=80print(score)# 输出:80# 重新赋值score=95print(score)# 输出:95# 基于原值修改score=score+5print(score)# 输出:100# 简写形式score+=10# 等同于 score = score + 10print(score)# 输出:1104. 同时给多个变量赋值
# 同时给多个变量赋相同的值a=b=c=0print(a,b,c)# 输出:0 0 0# 同时给多个变量赋不同的值x,y,z=1,2,3print(x,y,z)# 输出:1 2 3# 交换两个变量的值x,y=y,xprint(x,y)# 输出:2 1二、数字、字符串、布尔值
1. 数字类型
整数(int)
# 整数age=25count=-10big_number=1000000# 可以使用下划线提高可读性population=1_400_000_000print(population)# 输出:1400000000# 查看类型print(type(age))# 输出:<class 'int'>浮点数(float)
# 浮点数(小数)price=9.99pi=3.14159temperature=-5.5# 科学计数法big_float=1.5e10# 1.5 × 10^10small_float=2.5e-5# 2.5 × 10^-5print(type(price))# 输出:<class 'float'>数字运算
# 基本运算a=10b=3print(a+b)# 加法:13print(a-b)# 减法:7print(a*b)# 乘法:30print(a/b)# 除法:3.3333...(结果是浮点数)print(a//b)# 整除:3(只取整数部分)print(a%b)# 取余:1print(a**b)# 幂运算:1000(10的3次方)2. 字符串(str)
字符串的创建
# 单引号name1='小明'# 双引号name2="小红"# 三引号(多行字符串)poem=""" 静夜思 床前明月光, 疑是地上霜。 """print(poem)字符串操作
text="Hello, Python!"# 获取长度print(len(text))# 输出:14# 拼接greeting="Hello"+" "+"World"print(greeting)# 输出:Hello World# 重复line="-"*20print(line)# 输出:--------------------# 索引(从0开始)print(text[0])# 输出:Hprint(text[-1])# 输出:!# 切片print(text[0:5])# 输出:Helloprint(text[7:])# 输出:Python!字符串方法
text=" Hello, Python! "# 大小写转换print(text.upper())# 全大写print(text.lower())# 全小写print(text.title())# 首字母大写# 去除空白print(text.strip())# 去除两端空白print(text.lstrip())# 去除左侧空白print(text.rstrip())# 去除右侧空白# 查找与替换print(text.find("Python"))# 查找位置:9print(text.replace("Python","World"))# 替换# 分割与连接csv_line="apple,banana,orange"fruits=csv_line.split(",")# 分割成列表print(fruits)# 输出:['apple', 'banana', 'orange']joined="-".join(fruits)# 用-连接print(joined)# 输出:apple-banana-orange字符串格式化
name="小明"age=25score=95.5# 方法1:使用 + 拼接(不推荐)msg1="我叫"+name+",今年"+str(age)+"岁"# 方法2:使用 % 格式化(旧式)msg2="我叫%s,今年%d岁,分数%.1f"%(name,age,score)# 方法3:使用 format() 方法msg3="我叫{},今年{}岁,分数{:.1f}".format(name,age,score)# 方法4:使用 f-string(推荐,Python 3.6+)msg4=f"我叫{name},今年{age}岁,分数{score:.1f}"print(msg4)# 输出:我叫小明,今年25岁,分数95.5💡提示:推荐使用 f-string,语法简洁,可读性强。
3. 布尔值(bool)
# 布尔值只有两个:True 和 Falseis_student=Trueis_working=Falseprint(type(is_student))# 输出:<class 'bool'># 布尔值常用于条件判断age=20is_adult=age>=18print(is_adult)# 输出:True# 比较运算print(5>3)# Trueprint(5<3)# Falseprint(5==5)# True(等于)print(5!=3)# True(不等于)print(5>=5)# True(大于等于)print(5<=3)# False(小于等于)# 逻辑运算print(TrueandTrue)# Trueprint(TrueandFalse)# Falseprint(TrueorFalse)# Trueprint(notTrue)# False# 实际应用age=25has_id=Truecan_enter=age>=18andhas_idprint(can_enter)# 输出:True4. None 类型
# None 表示"空"或"没有值"result=Noneprint(result)# 输出:Noneprint(type(result))# 输出:<class 'NoneType'># 常用于表示函数没有返回值defsay_hello():print("Hello!")# 没有 return,默认返回 Noneresult=say_hello()print(result)# 输出:None# 判断是否为 NoneifresultisNone:print("结果为空")三、类型转换
1. 隐式类型转换
Python会自动进行一些类型转换:
# 整数 + 浮点数 = 浮点数result=10+3.5print(result)# 输出:13.5print(type(result))# 输出:<class 'float'># 布尔值参与运算print(True+1)# 输出:2(True 被当作 1)print(False+1)# 输出:1(False 被当作 0)2. 显式类型转换
转换为整数 int()
# 浮点数转整数(直接截断小数部分)print(int(3.7))# 输出:3print(int(-3.7))# 输出:-3# 字符串转整数print(int("123"))# 输出:123print(int("-45"))# 输出:-45# 布尔值转整数print(int(True))# 输出:1print(int(False))# 输出:0# ⚠️ 注意:无法转换的字符串会报错# int("hello") # 报错:ValueError# int("3.14") # 报错:ValueError(不能直接转换小数字符串)转换为浮点数 float()
# 整数转浮点数print(float(10))# 输出:10.0# 字符串转浮点数print(float("3.14"))# 输出:3.14print(float("100"))# 输出:100.0# 布尔值转浮点数print(float(True))# 输出:1.0print(float(False))# 输出:0.0转换为字符串 str()
# 数字转字符串print(str(123))# 输出:"123"print(str(3.14))# 输出:"3.14"# 布尔值转字符串print(str(True))# 输出:"True"print(str(False))# 输出:"False"# 实际应用:拼接字符串age=25# print("我今年" + age + "岁") # 报错!不能直接拼接print("我今年"+str(age)+"岁")# 正确:我今年25岁转换为布尔值 bool()
# 数字转布尔值print(bool(0))# False(0是False)print(bool(1))# True(非0是True)print(bool(-5))# Trueprint(bool(3.14))# True# 字符串转布尔值print(bool(""))# False(空字符串是False)print(bool("hello"))# True(非空字符串是True)print(bool(" "))# True(空格也是True)# None转布尔值print(bool(None))# False# 实际应用name=input("请输入你的名字:")ifname:# 等价于 if name != ""print(f"你好,{name}!")else:print("名字不能为空!")3. 类型检查
# 使用 type() 查看类型x=10print(type(x))# 输出:<class 'int'># 使用 isinstance() 检查类型print(isinstance(x,int))# 输出:Trueprint(isinstance(x,float))# 输出:Falseprint(isinstance(x,(int,float)))# 输出:True(是int或float之一)四、实战练习
练习1:个人信息卡
# 创建变量存储个人信息name="小明"age=25height=1.75is_student=True# 使用 f-string 格式化输出print("="*30)print(f"姓名:{name}")print(f"年龄:{age}岁")print(f"身高:{height}米")print(f"是否学生:{'是'ifis_studentelse'否'}")print("="*30)预期输出:
============================== 姓名:小明 年龄:25岁 身高:1.75米 是否学生:是 ==============================练习2:温度转换器
# 摄氏度转华氏度celsius=25fahrenheit=celsius*9/5+32print(f"{celsius}°C ={fahrenheit}°F")# 华氏度转摄氏度fahrenheit=77celsius=(fahrenheit-32)*5/9print(f"{fahrenheit}°F ={celsius:.1f}°C")练习3:数据类型转换练习
# 用户输入的是字符串,需要转换user_input="25"# 转换为整数age=int(user_input)print(f"年龄:{age},类型:{type(age)}")# 转换为浮点数price=float("9.99")print(f"价格:{price},类型:{type(price)}")# 转换为字符串score=95score_str=str(score)print(f"分数:{score_str},类型:{type(score_str)}")练习4:简单计算器
# 获取用户输入num1=input("请输入第一个数字:")num2=input("请输入第二个数字:")# 转换为浮点数a=float(num1)b=float(num2)# 计算并输出print(f"\n计算结果:")print(f"{a}+{b}={a+b}")print(f"{a}-{b}={a-b}")print(f"{a}×{b}={a*b}")print(f"{a}÷{b}={a/b:.2f}")五、常见问题与排错
问题1:类型不匹配报错
原因:字符串和数字不能直接拼接
解决方法:
- 使用
str()将数字转换为字符串 - 或使用 f-string 格式化
# ❌ 错误age=25print("我今年"+age+"岁")# TypeError# ✅ 正确print("我今年"+str(age)+"岁")# 或使用 f-stringprint(f"我今年{age}岁")问题2:无法转换的类型
原因:字符串内容不是有效的数字格式
解决方法:
- 确保字符串内容是有效的数字
- 使用 try-except 处理异常
# ❌ 错误number=int("hello")# ValueError# ✅ 正确:使用 try-except 处理try:number=int("hello")exceptValueError:print("无法转换为整数")问题3:变量未定义
原因:使用变量前没有定义
解决方法:先定义再使用
# ❌ 错误print(x)# NameError# ✅ 正确:先定义再使用x=10print(x)六、本篇小结
今天,我们完成了以下学习内容:
- 变量的概念:理解变量是存储数据的容器
- 变量命名规则:掌握变量命名的规范和限制
- 三种基本数据类型:
- 数字(int、float):用于数学运算
- 字符串(str):用于文本处理
- 布尔值(bool):用于条件判断
- 类型转换:学会使用 int()、float()、str()、bool() 进行类型转换
请记住这三个结论:
- 变量是编程的基础:所有程序都需要用变量来存储和处理数据
- 数据类型决定操作方式:不同类型的数据支持不同的操作
- 类型转换要谨慎:转换前确保数据格式有效
下期预告
在第3期中,我们将学习Python的条件判断与循环,包括:
- if-elif-else 条件语句
- for 循环和 while 循环
- break、continue 和 pass
- 循环的高级用法
敬请期待!
✍坚持原创,求关注,点赞,收藏