Task 06 & Task 07 & 拓展02

Task 06

6.1 while循环

  • while 循环⽤于在满⾜某个条件的情况下重复执⾏⼀个代码块。 while 循环⾸先检查条件表达式的值。如果条件为 True,则执⾏代码块。执⾏完代码块后,重新检查条件表达式。如果条件仍为True,再次执⾏代码块。这⼀过程会⼀直重复,直到条件为 False,语法如下:
x = 0
while x < 5:
 print(x)
 x += 1
  • while的条件语句需要是布尔类型
  • 使用while循环务必检查,避免无限循环,除非真的需要
  • while循环可以嵌套使用
x = 0
while x < 3:
 y = 0
 while y < 2:
 print(f"x={x}, y={y}")
 y += 1
 x += 1

6.2 for循环

  • for 循环⽤于遍历序列(如列表、元组、字符串等)或任何可迭代对象。 for 循环从可迭代对象中获取第⼀个元素,将其赋值给循环变量,执⾏ for 循环体中的代码,然后获取下⼀个元素,直到遍历完可迭代对象中的所有元素。
  • range(start, stop, step)
    • start :序列的起始值,默认值为 0
    • stop :序列的终⽌值(不包括该值)
    • step :序列中数字之间的差值,默认值为 1
for i in [1, 2, 3, 4, 5]:
  print(i)

range(start, stop, step)

for i in range(5): # ⽣成 0 到 4 的序列
  print(i)
for i in range(1, 10, 2): # ⽣成 1 到 9 的序列,步⻓为 2
  print(i)

#嵌套使用
for i in range(3):
  for j in range(2):
    print(f"i={i}, j={j}")
  • for中的临时变量
for number in range(3):
 print(number)
print(number) # 虽然可以访问到,但不推荐这样做
# 如果接下来你没有重新赋值number变量,⽽是粗⼼直接使⽤,代码结果会出错,并且难以检查出来
if number < 5:
 print(number)
  • break 和 continue
    • break :⽤于提前退出循环(已达到⽬的 / 有错误)。
    • continue :⽤于跳过某次循环,进⾏下⼀次。
  • 示例:
# while 使⽤ break 提前退出循环
while i < 5:
 print("hello")
 break
# 上⾯代码只会输出⼀次hello
# while 使⽤ continue 跳过某次循环
while i < 5:
 if i < 4:
 continue
 print("hello")
# 上⾯代码只会输出⼀次hello
# for 使⽤ break 提前退出循环
for i in range(10):
 if i == 5:
 break
 print(i) # 输出 0 到 4
# for 使⽤ continue 跳过某次循环
for i in range(10):
 if i % 2 == 0:
 continue
 print(i) # 输出奇数 1, 3, 5, 7, 9
  • 注意作⽤域: break 和 continue 仅作⽤在所在的循环上
  • 作用域示例
# 下⾯的例⼦中,break 语句仅作⽤在内层循环上,只退出内层循环,不影响外层循环的执⾏
for i in range(3): # 外层循环
 for j in range(5): # 内层循环
 if j == 3:
 break # 仅退出内层循环
 print(f"i={i}, j={j}")
'''
输出如下
i=0, j=0
i=0, j=1
i=0, j=2
i=1, j=0
i=1, j=1
i=1, j=2
i=2, j=0
i=2, j=1
i=2, j=2
'''

Task 07 字符串

  • 字符串本质上就是字符的数据容器,和列表、元组⼀同属于序列类型
  • 字符串同样有下标索引,但字符串与元组⼀样是不可修改的,这意味着如果要修改字符串,必须创建⼀个新的字符串
  • 字符串三个特点:有序、元素不可变、元素可重复
操作 方法/属性 示例代码
查找某元素下标 .index(字符) my_string.index('a')
统计某元素数量 .count(字符) my_string.count('a')
查看字符串⻓度 len(字符串) len(my_string)
字符串中字符的替换 .replace(旧字符, 新字符) my_string.replace('a','b')
字符串的分割 .split(分隔符) my_string.split(',')
字符串的规整 .strip() my_string.strip()

示例代码:

my_string = " hello, world! "
# 查找某元素下标
print(my_string.index('o')) # 输出: 5
# 统计某元素数量
print(my_string.count('l')) # 输出: 3
# 查看字符串⻓度
print(len(my_string)) # 输出: 14
# 字符串中字符的替换
new_string = my_string.replace('world', 'Python')
print(new_string) # 输出: " hello, Python! "
# 字符串的分割
split_string = my_string.split(',')
print(split_string) # 输出: [' hello', ' world! ']
# 字符串的规整
trimmed_string = my_string.strip()
print(trimmed_string) # 输出: "hello, world!"

拓展 02 调试debug

1. bug的捕获处理

  • 异常(Exception),是我们常说的 bug,可能会出现在:
    • 语法错误(Syntax Error):例如,忘记关闭括号或使⽤不正确的语法。
    • 运⾏时错误(Runtime Error):例如,除以零、访问不存在的变量、⽂件未找到等。
  • 出现异常后,我们可以提前写好异常捕获,出现后对 bug 进⾏提醒,并继续执⾏程序。

1.1. 异常捕获的定义语法

定义异常捕获的基本语法如下:

try:
  可能发⽣异常的代码
except:
  发⽣异常时执⾏的代码

1.2. 捕获制定异常

  • except 后可以指定异常关键字,⽤来捕获特定的异常(即如果发⽣我们指定的异常,才捕获)
    常⻅的异常类型如下表所示:
    | 异常类型 | 描述 |
    | ---- | ---- |
    | EOFError | 当 input() 函数在没有读到数据时引发 |
    | ImportError | 当导⼊模块失败时引发 |
    | IndexError | 当序列索引超出范围时引发 |
    | KeyError | 试图访问不存在的字典键时引发 |
    | KeyboardInterrupt| ⽤户中断执⾏时(通常是按Ctrl+C)引发 |
    | NameError | 尝试访问未声明的变量时引发 |
    | SyntaxError | Python 语法错误时引发 |
    | ValueError | 操作或函数收到具有正确类型但不适当值的参数时引发 |
try:
 value = int(input("请输⼊⼀个整数: "))
except ValueError:
 print("输⼊的不是⼀个有效的整数")
except EOFError:
 print("没有读到任何数据")
except Exception: # 这⾥的Exception代指所有异常
 print("其他错误")

1.3.捕获所有异常

try:
 可能发⽣异常的代码
except Exception as e: # e只是个变量名字,也可以是error,⾃⼰取名字,⽤来打印具体的异常
 print(f"发⽣异常:{e}")

1.4. 捕获异常完整语法

try:
 可能发⽣异常的代码
except Exception as e:
 出现异常时执⾏的代码
else:
 没有出现异常时执⾏的代码(⼀般不⽤,没慎⽤)
finally:
 ⽆论是否出现异常都执⾏的代码

try:
 value = int(input("请输⼊⼀个整数: "))
except ValueError as e:
 print(f"输⼊错误: {e}")
else:
 print("输⼊的是⼀个有效的整数")
finally:
 print("异常捕获示例结束")

1.5. 异常具有传递性

异常具有传递性,即如果在函数内部抛出异常且未处理,则异常会传递到调⽤该函数的代码中进⾏处理。

def func1():
 return 1 / 0 # 这⾥会引发 ZeroDivisionError
def func2():
 try:
 func1()
 except ZeroDivisionError as e:
 print(f"在 func2 中捕获到异常: {e}")
func2() # 输出: 在 func2 中捕获到异常: division by zero

完结撒花 /撒花✿✿ヽ(°▽°)ノ✿

posted @ 2024-12-11 15:23  坚毅勤奋诚朴健美  阅读(2)  评论(0编辑  收藏  举报