python核心基础(4)- 条件和循环

条件语句

先看一个简单的条件语句,例如表示y= |x|这个函数:

# y = |x|
if x < 0:
    y = -x
else:
    y = x

情况稍复杂点的时候,会有多个条件判断,这时候需要用到else if,在Python中使用elif表示,看这个例子:

if id == 0:
    print('red')
elif id == 1:
    print('yellow')
else:
    print('green') 

有人喜欢省略判断条件,省略的常见情况如下(但是不推荐):
在这里插入图片描述
除了boolean类型的数据,其他数据类型鼓励使用显性的判断条件,比如在判断一个整数类型是否为0时,最好写出判断条件:

if i != 0:
	pass

而不是:

if i:
	pass
循环语句

python中的循环一般通过for和while实现。
例如,循环遍历一个列表中的全部元素,并打印输出:

list = [1,3,5,7,9]

for i in list:
  print(i)

Python中的数据结构只要是可迭代的(iterable),比如列表、集合等等,那么都可以通过下面这种方式遍历:

for item in xxx:
	pass

字典本身只有键可以遍历:

d = {'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}
for k in d: # 遍历字典的键
    print(k)

如果要遍历字典的值或者键值对,需要使用内置函数values()或items(),values()返回字典的值的集合,items()返回键值对的集合:

for v in d.values(): # 遍历字典的值
    print(v)
    
for k, v in d.items(): # 遍历字典的键值对
    print('key: {}, value: {}'.format(k, v))

实际工作中我们经常会使用集合的索引来遍历元素,通常是搭配range()函数拿到索引去遍历:

l = [1, 2, 3, 4, 5, 6, 7]
for index in range(0, len(l)):
    if index < 5:
        print(l[index]) 

当我们同时需要索引和元素时,还有一种更简洁的方式,那就是通过Python内置的函数enumerate()。用它来遍历集合,不仅返回每个元素,并且还返回其对应的索引,这样一来,上面的例子就可以写成:

l = [1, 2, 3, 4, 5, 6, 7]
for index, item in enumerate(l):
    if index < 5:
        print(item)  

在循环语句中,我们还常常搭配continue和break一起使用。所谓continue,就是让程序跳过当前这层循环,继续执行下面的循环;而break则是指完全跳出所在的整个循环体。在循环中适当加入continue和break,往往能使程序更加简洁、易读。
比如,给定两个字典,分别是产品名称到价格的映射,和产品名称到颜色列表的映射。我们要找出价格小于1000,并且颜色不是红色的所有产品名称和颜色的组合。如果不用continue,代码应该是下面这样的:

# name_price: 产品名称(str)到价格(int)的映射字典
# name_color: 产品名字(str)到颜色(list of str)的映射字典
for name, price in name_price.items():
    if price < 1000:
        if name in name_color:
            for color in name_color[name]:
                if color != 'red':
                    print('name: {}, color: {}'.format(name, color))
        else:
            print('name: {}, color: {}'.format(name, 'None'))

而加入continue后,代码显然清晰了很多:

# name_price: 产品名称(str)到价格(int)的映射字典
# name_color: 产品名字(str)到颜色(list of str)的映射字典
for name, price in name_price.items():
    if price >= 1000:
        continue
    if name not in name_color:
        print('name: {}, color: {}'.format(name, 'None'))
        continue
    for color in name_color[name]:
        if color == 'red':
            continue
        print('name: {}, color: {}'.format(name, color))

前面讲了for循环,对于while循环,原理也是一样的。它表示当condition满足时,一直重复循环内部的操作,直到condition不再满足,就跳出循环体。很多时候,for循环和while循环可以互相转换,比如要遍历一个列表,我们用while循环同样可以完成:

l = [1, 2, 3, 4]
index = 0
while index < len(l):
    print(l[index])
    index += 1

那么,两者的使用场景又有什么区别呢?
通常来说,如果你只是遍历一个已知的集合,找出满足条件的元素,并进行相应的操作,那么使用for循环更加简洁。但如果你需要在满足某个条件前,不停地重复某些操作,并且没有特定的集合需要去遍历,那么一般则会使用while循环。
比如,某个交互式问答系统,用户输入文字,系统会根据内容做出相应的回答。为了实现这个功能,我们一般会使用while循环,大致代码如下:

while True:
    try:
        text = input('Please enter your questions, enter "q" to exit')
        if text == 'q':
            print('Exit system')
            break
        ...
        ...
        print(response)
    except Exception as err:
        print('Encountered error: {}'.format(err))
        break 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值