Python基础(二)-分支与循环

分支和循环

if

if 语句用于根据条件控制代码需要执行的逻辑。
示例:

age = 20

if age >= 18:
    print("成年人")
elif age >= 13 and age < 18:
    print("青少年")
else:
    print("儿童")

在这个示例中,首先检查 age 是否大于或等于18,如果是,则输出 “成年人”。如果不是,则继续检查 age 是否在1317岁之间,如果是,则输出 “青少年”。如果上述两个条件都不满足,则执行 else 子句,输出 “儿童”。
注意:每个条件后面都需要跟一个冒号,并且在条件为真的情况下执行的代码需要适当的缩进(通常是4个空格或者1个制表符)。此外,Python中用于判断条件的表达式可以是任意能够计算出布尔值(True或者False)的表达式。

关于代码缩进:Python 使用严格的代码缩进表示代码块(一般为四个空格),多加空格或少加空格都会引发语法错误。

当代码块中不需要执行实际的逻辑时,为了让程序能正常运行,可以使用 pass 表示什么都不做,如:

if some_condition:
    pass # 什么都不做
else:
	...

Python 中没有 switch-case 语句。

Python中的空置判断

Python中判断一个值是否为空,可以使用is Noneis not None==None=!None

# is None
variable = None
if variable is None:
	# 变量variable是None
	...
else:
	# 变量variable不是None

is not None则相反

# 使用is not None
if variable is not None:
    # 变量variable不是None
    ...
else:
    # 变量variable是None
# 使用 == None
if variable == None:
    # 可能适用于某些情况,但在比较复杂类型时可能引起意料之外的结果
else:
    # 变量variable不等于None
# 使用 != None
if variable != None:
     # 变量variable不等于None
else:
     # 变量variable等于None
  • 尽管 ==!= 在大多数情况下也能工作,但由于is关键字专门用来检测两个对象是否是同一个对象引用,对于None这样的单例对象而言,is操作符提供了更加准确且符合直觉的比较。同时,考虑到Python的动态类型特性,直接用 is Noneis not None 检查空值避免了潜在的类型转换陷阱, 因此在实践中更推荐使用这两种形式。

Python的条件表达式

# val_is_true if condition else val_is_false
age = 25
status == "成年" if age >= 18 else "未成年"

for 和 while 语句

for循环

for循环主要用于遍历任何可迭代对象,包括但不限于列表、元组、字符串、字典、集合以及生成器等。
基础示例:

fruits = ['apple', 'banana', 'cherry']

for fruit in fruits:
    print(fruit) # apple banana cherry

另外可选else子句

for item in iterable:
	# 循环体
	# 执行相关逻辑
# 可选else子句,会在循环结束后(非break跳出的情况下)执行
else:
	...

示例

numbers = [1, 2, 3, 4, 5]
found_even = False

for number in numbers:
    if number % 2 == 0:
        found_even = True
        print(f"找到偶数:{number}")
        break
else:
    print("列表中没有找到偶数")

# 如果在循环体中找到偶数并执行了break,则else部分不会被执行
# 如果在循环正常结束(即没有执行break),else部分将会被执行

while循环

while循环会不断地执行循环体内的代码,直到指定的条件不再满足为止。

while conditon:
    # 这里是循环体 只要条件为True就会一直执行
    # 执行相关操作

# 可选的else子句,同样在循环结束以后(非break跳出情况下)执行
else:

举例

count = 0
while count < 5:
	print(count) # 0 1 2 3 4
	count += 1

区别:

  • for循环常用语已知次数或遍历已知集合的情况。
  • while循环适用于不确定循环次数,需要依赖某种条件才能决定何时退出循环的情况。
  • for循环通常与迭代器配合使用,无需手动管理索引或迭代过程。
  • while循环在需要不断检查某个状态或者条件时更有优势,循环次数往往不能事先确定。
    共同点:
    二者都可以通过break语句提前跳出循环,也可以通过continue语句跳过本次循环进入下一轮循环,并且都支持使用else子句在特定条件下执行额外的代码块。

range 函数,enumerate 函数 ,break,continue

range() 函数在Python中用于生成一个整数序列,只要配合for循环来遍历一定范围内的数字。

range(stop)
range(start, stop)
range(start, stop, step)
  • stop 参数指定了序列结束位置(不包含该值本身)。
  • start 参数是序列开始的位置,默认是0。
  • step 参数定义了序列中相邻两个元素之间的差值,默认为1。
for i in range(5):
	print(i) # 0 1 2 3 4

for i in range(1, 6, 2):
	print(i) # 1 3 5

enumerate() 函数用于将一个可迭代对象(如列表、元组或其他序列类型)组合成一个索引序列,同时列出数据项及其相应的索引。这在需要同时访问序列中的索引和值时非常有用。其基本语法如下:

enumrate(iterable, start=0)
  • iterable是要枚举的对象
  • start指定计数从哪个数字开始,默认为0
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumrate(fruits):
	print(f"index:{index}, fruit: {fruit}")
	# index:0, fruit: apple
	# index:1, fruit: banana
	# index:2, fruit: cherry

break语句用于强制退出当前正在执行的循环(无论是for还是while循环)。一旦执行到break,程序将立即离开循环结构,继续执行循环之后的代码。

for num in range(10):
	if num == 5:
	break
	print(num) # 0 1 2 3 4 (不会打印5及5后的数字

continue语句用于跳过当前循环体中剩余的语句,然后直接进入下一轮循环的判断阶段。当执行到continue时,本次循环余下的代码将被忽略。

for num in range(10):
	if num % 2 == 0:
		continue
	print(num) # 1 3 5 7 9 (只打印基数,每次遇到偶数时就跳过输出并进入下一次循环

列表推导与字典推导

列表推导(List Comprehension)和字典推导(Dictionary Comprehension)是Python中两种高效简洁的创建序列结构的方法。

列表推导

列表推导允许你从其他可迭代对象(如列表、元组、字符串、range对象等)中创建一个新的列表。它的基本形式是将一个表达式嵌入在[]方括号内,并可能包含循环和条件判断。

numbers = [1, 2, 3, 4, 5]
# 使用列表推导生成一个新的列表,其中每个元素都是原列表元素的平方
squared_numbers = [n**2 for n in numbers]
# [1, 4, 9, 16, 25]

# 同时还可以添加条件过滤
even_squared = [n**2 for n in number if n % 2 == 0]
# [4, 16]

字典推导

字典推导与列表推导类似,但它用来创建字典而不是列表。字典推导采用一对键值对的形式,置于花括号内{},并同样支持循环和条件判断。

# 姓名
names = ['Alice', 'Bob', 'Charlie']
# 年龄
ages = [25, 30, 35]

# 使用字典推导创建一个字典,键为姓名值为年龄
person_dict = {name:age for name, age in zip(names, ages)}
# 结果: {'Alice':25, 'Bob': 30, 'Charlie':35}

# 添加条件过滤,只保留年龄大于30的人
adults_dict = {name: age for name, age in zip(names, ages) if age >= 30}

列表推导和字典推导都是Python中简化和优化代码的有效手段,尤其是处理大量数据转换和筛选时尤为实用。

zip 是 Python 内置函数,它用于将多个可迭代对象(在这个例子中是 namesages 两个列表)的元素按序配对。具体来说,zip 函数会返回一个迭代器,这个迭代器会产生由输入序列中相对应位置的元素组成的元组。对于每一个输入序列,zip 函数都会取出相同索引位置上的元素,直到任一输入序列耗尽为止。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值