【Python入门教程05】3分钟学会条件判断与循环, is与==的区别

【原创文章】欢迎正常授权转载(联系作者)
【反对恶意复制粘贴,如有发现必维权】
【微信公众号原文传送门


在这里插入图片描述
​条件判断与循环是计算机自动化的基础,本节教程将简单介绍Python下判断与循环的基本使用。


01 条件判断

(1)if 条件判断

条件判断主要与布尔值打交道,如果不熟悉这一基本数据类型,可以查看我之前的文章(点我就到),话不多说直接上语法。

# 单条件
if 条件1:
  业务代码1
else:
  业务代码2
  
# 多条件情况
if 条件1:
  业务代码1
elif 条件2:
  业务代码2
  ....
elif 条件k:
  业务代码k
else:
  其他

单条件时,很简单也很好理解,条件1为真执行业务代码1,不满足执行业务代码2。多条件时,从第一个条件开始,哪一个条件为真就执行对应的业务代码,执行完后直接跳出该条件判断代码块。

需要强调的是:一定注意代码中的空格对齐,与c++不同,为了开发者高效的开发,Python中减去了一些繁琐的操作,例如:一句代码结束不使用分号,代码块不使用大括号而使用对齐等。因此,很多初学者总会出现,代码没有错,但是运行时总是出现报语法错误,多半是对齐的问题。

(2)条件表达式

条件表达式除了可以使用基本的逻辑运算符和关系运算符外,Python还支持一些特殊的运算,总结如下:

  • 大于或大于等于 ---- > 或 >=;
  • 小于或小于等于 ---- < 或 <=;
  • 等于 ---- ==;
  • 不等于 ---- !=;
  • 与 ---- and;
  • 或 ---- or;
  • 非 ---- not;
  • 是 ---- is;
  • 包含 ---- in
a = 10
if 0 < a <= 12:  # Python中支持这样的关系表达式连写
    print('ha ha ha ')
else:
    print('he he he')if a != 10:   # 此时a等于10 因此下面的业务代码不执行,跳到下一条件
    print('老子不是10')
elif not a:   # a=10,对应的布尔值为True,not a 是False
    print('a的布尔值是False')
else:
    print(a)

运行结果:

ha ha ha 
10

着重说一下 isin 的用法。

  • is 的基本用法

is是判断比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。先来看代码。

a = 10
b = 10
st = 'I\'m a boy!'
st2 = 'I\'m a boy!'
print('a is b:', a is b)
print('st is st2:', st is st2)
​
ls = [12, 45, 'st', a]
ls2 = [12, 45, 'st', a]
t = (12, 's')
t2 = (12, 's') 
dic = {'name': 'Tom'}
dic2 = {'name': 'Tom'}
print('ls is ls2:', ls is ls2)
print('t is t2:', t is t2)
print('dic is dic2:', t is t2)

运行结果:

a is b: True                
st is st2: True
ls is ls2: False
t is t2: False
dic is dic2: False

上述代码中ab明显是不同的变量,只是有同样的值,根据is的功能来看,a is b的结果应该是False,为什么会判断他们是一样的呢?而且似乎对于整数和字符串而言,is与 == 没有什么区别。其实这与Python内部的缓存机制有关,Python会对一些较小的对象进行缓存,下次用的时候直接从缓存中获取这个小对象,上面代码中的整数和字符串就属于这种情况,因此,a is b的结果True。当对象较大时就会发生变化,例如下面的代码:

a = 10 * 1000000000000000000
b = 10 * 1000000000000000000
st = 'I\'m a boy!' * 1000    # 表示将前面的字符串重复1000次并连接
st2 = 'I\'m a boy!' * 1000
print('a is b:', a is b)
print('st is st2:', st is st2)

运行结果:

False
False

结果是不是不一样了,这次对象较大,ab就不是同一个对象了。

  • in 的基本用法

通常在条件表达式中,in 用于判断对象是否存在另一可迭代对象(包含多个子对象)中,这里的可迭代对象不包括生成器。具体用法如下所示:

# 字符串中
st = 'I\'m a boy!'
print('a' in st)
# 列表中
ls = [12, 45, 'st']
print(12 in ls)
# 元组中
t = (12, 's')
print('s' in t)
# set 中
s = set([4, 4, 5, 6, 7])        # 这里是 set 数据类型
print(s)
print(4 in s)

执行结果:

True
True
True
{4, 5, 6, 7}
True

02 循环

(1)for 循环

for 元素 in 迭代对象:
  循环体

语法非常简单,每次循环时,从迭代对象中依次“拿出”元素,然后执行循环体,直到迭代对象中没有元素时结束。(这里“拿出”只是形象的说法,并不是真的将迭代对象中的元素拿出来,这个过程只获得元素,并不对迭代对象进行实质性的改变。)

sl = 'abcdefg'
for s in sl:
    print(sl)
    
ls = [1, 2, 3, 4, 5]
for num in ls:
    print(num)

是不是很方便?直接就获得对象,不用像c语言一样使用计数加索引的方式来处理。
有时候我们只是要循环固定次数,怎么做呢?配合 range 函数就可以了。

for i in range(需要循环的次数):
  循环体

有时候有了循环的迭代对象,但需要知道当前元素的索引,添加一个变量来计数吗?其实Python还提供了 enumerate 函数可以快速简单的实现这一常用需求。

sl = 'abcd'
for index, s in enumerate(sl):
    print(index, s)

运行结果:

0 a
1 b
2 c
3 d

(2)while 循环

while 条件表达式:
  循环体

执行到while 循环代码块时,先判断条件表达式的值,结果是True时执行循环体,之后再判断-循环,直到条件表达式的值为False时停止。

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

执行结果:

2500

(3)循环中的控制

循环中的控制主要指在一定特殊情况下跳过或跳出循环,主要涉及到 breakcontinue 语句。 break :直接跳出整个循环; continue :从此处跳过后续循环内容。

for 元素 in 迭代对像:
  ...
  if 跳出循环条件:
    break
  if 跳过循环条件:
    continue
  ...
    
while 循环条件:
  ...
  if 跳出循环条件:
    break
  if 跳过循环条件:
    continue
  ...

本文配套源代码下载地址:
关注下方公众号,回复关键字即可获取

回复“ Python基础教程源代码 ”获取。


如果你读后有收获,欢迎关注我的微信公众号
上面有更多完全免费教程,我也会不定期更新
ღ ღ ღ 打开微信扫描下方二维码关注 ღ ღ ღ

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章