前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超详解——python条件和循环——小白篇

超详解——python条件和循环——小白篇

作者头像
小李很执着
发布2024-06-15 10:29:07
850
发布2024-06-15 10:29:07
举报
文章被收录于专栏:学习笔记学习笔记

1. 缩进和悬挂else

在Python中,代码块是通过缩进来表示的,这与其他许多编程语言不同。正确的缩进不仅影响代码的可读性,还直接影响程序的逻辑。悬挂else(hanging else)是指else子句和相应的if或循环在同一级别的缩进。

1.1 缩进的重要性

Python使用缩进来表示代码块,缩进的层次决定了代码的结构和执行顺序。

代码语言:javascript
复制
x = 5

if x > 0:
    print("Positive")
else:
    print("Non-positive")

else子句与if语句在同一级别的缩进。如果条件判断为False,则执行else子句中的代码。

1.2 悬挂else的使用

悬挂else指的是else子句和相应的if或循环在同一级别的缩进。

代码语言:javascript
复制
for i in range(5):
    if i == 3:
        print("Found 3")
        break
else:
    print("3 not found")

else子句与for循环在同一级别的缩进。只有当循环正常结束(没有被break打断)时,才会执行else子句。

1.3 代码示例和解释

代码语言:javascript
复制
number = 7

# 判断数字是正数、负数还是零
if number > 0:
    print("Positive number")
elif number == 0:
    print("Zero")
else:
    print("Negative number")

# 判断数字是否在某个范围内
if 5 <= number <= 10:
    print("Number is between 5 and 10")
else:
    print("Number is not between 5 and 10")

我们使用了if、elif和else来检查number的值,并且检查number是否在特定范围内。

2. 条件表达式

条件表达式(也称为三元运算符)允许我们在一行中进行简洁的条件判断。条件表达式的语法如下:

代码语言:javascript
复制
result = "Positive" if x > 0 else "Non-positive"

2.1 条件表达式的应用

条件表达式在需要简洁判断的情况下非常有用。

代码语言:javascript
复制
x = 5
result = "Positive" if x > 0 else "Non-positive"
print(result)  # 输出:Positive

x = -3
result = "Positive" if x > 0 else "Non-positive"
print(result)  # 输出:Non-positive

2.2 复杂条件下的使用

在更复杂的条件下,条件表达式依然可以简化代码。考虑以下示例:

代码语言:javascript
复制
age = 20
status = "Adult" if age >= 18 else "Minor"
print(status)  # 输出:Adult

score = 85
grade = "A" if score >= 90 else ("B" if score >= 80 else "C")
print(grade)  # 输出:B

通过嵌套条件表达式,我们可以在一行中实现多重判断。

2.3 条件表达式的优缺点

条件表达式的优点在于其简洁性和可读性,但在条件复杂时,过度使用可能会降低代码的可读性。在这种情况下,使用传统的if-else结构可能更为合适。

3. 和循环搭配的else

在Python中,循环结构(如for和while)可以使用else子句。只有当循环正常结束(即没有被break语句打断)时,else子句才会被执行。

3.1 for循环中的else

for循环中的else子句:

代码语言:javascript
复制
for i in range(5):
    print(i)
else:
    print("Loop finished")

# 如果循环被break打断,else子句不会执行
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("Loop finished")  # 不会执行

for循环正常结束,因此else子句被执行,输出"Loop finished"。在第二个示例中,for循环在i == 3时被break打断,因此else子句不会执行。

3.2 while循环中的else

while循环中的else子句也遵循相同的规则:

代码语言:javascript
复制
count = 0
while count < 5:
    print(count)
    count += 1
else:
    print("While loop finished")

# 如果循环被break打断,else子句不会执行
count = 0
while count < 5:
    if count == 3:
        break
    print(count)
    count += 1
else:
    print("While loop finished")  # 不会执行

while循环正常结束,因此else子句被执行。在第二个示例中,while循环在count == 3时被break打断,因此else子句不会执行。

3.3 实际应用

在实际应用中,for-else和while-else结构可以用于查找特定元素或条件。例如,检查一个列表中是否存在某个元素:

代码语言:javascript
复制
numbers = [1, 2, 3, 4, 5]

for number in numbers:
    if number == 3:
        print("Found 3")
        break
else:
    print("3 not found")

在这个示例中,如果在列表中找到了数字3,则打印"Found 3"并结束循环。如果循环正常结束而没有找到数字3,则打印"3 not found"。

4. 可调用对象

在Python中,可调用对象包括函数、方法、类等。可调用对象是可以被调用执行的一类对象。我们可以使用callable()函数判断一个对象是否可调用。

4.1 可调用对象的示例

不同类型的可调用对象:

代码语言:javascript
复制
# 定义一个函数
def my_function():
    print("Hello, world!")

# 定义一个类
class MyClass:
    def __call__(self):
        print("Instance called")

# 创建对象
func = my_function
obj = MyClass()

# 检查对象是否可调用
print(callable(func))  # True,因为func是一个函数
print(callable(obj))  # True,因为obj是一个可调用的类实例

# 调用对象
if callable(func):
    func()  # 输出:Hello, world!

if callable(obj):
    obj()  # 输出:Instance called

4.2 可调用类实例

在Python中,类实例也可以是可调用的。如果一个类定义了__call__方法,则其实例为可调用对象。

代码语言:javascript
复制
class Counter:
    def __init__(self):
        self.count = 0

    def __call__(self):
        self.count += 1
        print(f'Current count: {self.count}')

counter = Counter()
counter()  # 输出:Current count: 1
counter()  # 输出:Current count: 2

4.3 使用函数作为参数

函数是Python中的一等公民,可以作为参数传递给其他函数。

代码语言:javascript
复制
def greet(name):
    return f'Hello, {name}!'

def call_function(func, arg):
    return func(arg)

result = call_function(greet, 'Alice')
print(result)  # 输出:Hello, Alice!

greet函数作为参数传递给call_function函数,并调用它。

4.4 高阶函数

高阶函数是指接受函数作为参数或返回一个函数的函数。高阶函数的用法:

代码语言:javascript
复制
def add(x):
    def add_to(y):
        return x + y
    return add_to

add_five = add(5)
result = add_five(3)
print(result)  # 输出:8

add函数返回一个新函数add_to,该函数将其参数与add函数的参数相加。

4.5 匿名函数(Lambda)

匿名函数(lambda)是一种简洁的定义函数的方法。lambda表达式通常用于定义简单的、临时的函数。

代码语言:javascript
复制
add = lambda x, y: x + y
print(add(2, 3))  # 输出:5

# 使用lambda表达式进行排序
data = [(1, 'one'), (2, 'two'), (3, 'three')]
data.sort(key=lambda item: item[1])
print(data)  # 输出:[(1, 'one'), (3, 'three'), (2, 'two')]

总结

在条件判断和循环中使用缩进和悬挂else,可以使代码结构清晰。条件表达式使简单的条件判断更加简洁。循环结构中的else子句在循环正常结束时执行。可调用对象包括函数、方法、类等,可以使用callable()函数判断对象是否可调用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 缩进和悬挂else
    • 1.1 缩进的重要性
      • 1.2 悬挂else的使用
        • 1.3 代码示例和解释
        • 2. 条件表达式
          • 2.1 条件表达式的应用
            • 2.2 复杂条件下的使用
              • 2.3 条件表达式的优缺点
              • 3. 和循环搭配的else
                • 3.1 for循环中的else
                  • 3.2 while循环中的else
                    • 3.3 实际应用
                    • 4. 可调用对象
                      • 4.1 可调用对象的示例
                        • 4.2 可调用类实例
                          • 4.3 使用函数作为参数
                            • 4.4 高阶函数
                              • 4.5 匿名函数(Lambda)
                              • 总结
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档