我是基于 deepseek v3 的 AI 助手
本文主要介绍了Python中的循环结构和基本数据类型。首先,文章详细讲解了`while`循环的使用方法,展示了如何通过`while`循环输出1到10的数字,并介绍了循环中常见的控制语句`break`和`continue`,分别用于跳出循环和跳过当前迭代。接着,文章引入了`for`循环,展示了如何使用`for`循环遍历数字序列,并指出`for`循环适用于遍历可迭代数据和生成序列的场景。 在数据类型部分,文章介绍了Python中的基本数据类型,包括`int`、`float`、`str`和`bool`类型。文章特别强调了字符串的切片操作,展示了如何通过索引和步长来获取子字符串。此外,还介绍了字符串的三种格式化输出方式:`%`格式化、`format`格式化和`f-string`格式化。最后,文章讨论了`bool`类型的特点,指出`bool`类型是`int`的子类,并解释了其他类型转换为`bool`时的规则。 通过本文,读者可以掌握Python中循环结构的使用技巧,并了解基本数据类型的特性和操作方法。
# 循环
# while 循环
假如要输出 1-10 的数字,你可以这么做:
print(1) | |
print(2) | |
print(3) | |
print(4) | |
print(5) | |
print(6) | |
print(7) | |
print(8) | |
print(9) | |
print(10) |
或者使用 python 中的 while 循环
语法如下:
while 条件: # 条件为真继续循环,为假跳出 | |
语句 |
使用 while 循环优化后:
i = 0 | |
while i < 10: | |
i += 1 | |
print(i) |
循环中创建的变量在循环外访问,可能导致变量未定义
# 跳出和跳过
还是这样一道题:输出 1-10 的数字,不输出 5
你可以做多个循环,像这样:
i = 0 | |
while i < 4: | |
i += 1 | |
print(i) | |
i += 1 | |
while i < 10: | |
i += 1 | |
print(i) |
但 python 中提供了循环控制符: break 和 continue
break 可以跳出循环,continue 可以跳过循环 \
break 至多跳出一层循环,多次需要多个 break
现在用 continue 来优化一下代码:
i = 0 | |
while i < 10: | |
i += 1 | |
if i == 5: | |
continue | |
print(i) |
# for 循环
还是这道题
输出 1-10 的所有数字。
这回使用 for 循环解决
for i in range(10): | |
print(i+1) | |
# 或者 | |
for i in range(1,11) | |
print(i) |
for 循环的语法如下:
for 变量 in 序列(可迭代的):
range(头,尾) 方法可以生成一个从头到尾 - 1 的数字序列
range () 方法含头不含尾,需要调整参数
当然, break 和 continue 也适用与 for 循环
但 for 循环主要用于以下场景中:
遍历一个长度为 x 的可迭代数据;
生成一个符合条件的序列;
a = [5,6,7,8,9] | |
for i in a: | |
print(a,end=" ") # 5 6 7 8 9 |
print 的 end 参数指定结尾输出什么,默认为 '\n'(换行符)
容器类型的数据将会在 5 篇讲又一个坑
for 循环不如 while 循环灵活,尽量多使用 while 循环
else 并非分支结构专用,在循环后使用 else 代表正常退出循环后执行代码
正常退出循环:不使用 break 或报错退出
# 基本数据类型
# 指针
python 解释器使用指针来复用对象,节省内存,如下面所示:
a = 10;b = 10 | |
# 假设 10 的内存地址为 0x10f 假设 5 为 0x10d | |
print(id(a),id(b)) # 0x10f 0x10f | |
# 实际只占用了一个内存地址 | |
b = 5 | |
# b 的指针会被切换为 0x10d, 老指针会被自动回收 | |
print(id(a),id(b)) # 0x10f 0x10d |
# int 型
python 中的 int 不分长短型,不可迭代 (不可被 for 遍历)
从 float 到 int 是向下取整,1.99 -> 1
# float 型
python 中的 float 无位数限制,不可迭代
float 有不确定小数后缀,最好不要使用 == 比较,推荐使用 float-float<0.000001 这种方式
# str 型
str 型为字符串,可迭代,长度不限
# 切片
s = "python" | |
print(s[0]) # 输出 "p" |
索引如下所示:
p y t h o n 字符串
0 1 2 3 4 5 正向索引
-6 -5 -4 -3 -2 -1 反向索引
切片的语法格式: str[开始:结束:步长]
举个例子:
s = "python" | |
print(s[::2]) # 输出 pto | |
print(s[::-1]) # 输出 nohtyp | |
print(s[1:3]) # 输出 yt |
这个方法通常用于计算回文数: str(n) == str(n)[::-1]
# 格式化输出
# % 式格式化 | |
s = 10 | |
print("这个数是:%d"% s) | |
# 这个数是:10 | |
# format 格式化 | |
print("这个数是:{}".format(s)) | |
# f-string 格式化 | |
print(f"这个数是:{s}") |
% 式格式化如果有多个实参,需要用括号括起来
# bool 型
bool 是 int 型的子类,不可迭代,只有 True 和 False 两种
0=False 1=True 2 及以上同 1
当其他类转换到 bool 时,遵循以下原则:
- 数字类直接转换
- 可迭代数据,如果非空 (len (数据)>0) 即为 True, 否则为 False
- 字典非空即为 True
