目录
1、三元表达式
2、for 循环
3、while 循环
4、迭代遍历
1、三元表达式
python 支持从列表中挑选对象
用法:
a = [x,y][z]
如果 z 为真,将 y 赋值给 a,如果 z 为假,则将 x 赋值给 a 。
示例代码:
x = 1
a = [1, 2][x>5]
print(a)
x = 6
a = [1, 2][x>5]
print(a)
运行结果:
2、for 循环
对于元组、列表、字符串这些的遍历比较简单,主要就是注意对于字典的遍历,使用 for 循环迭代的是字典的各个键:
my_dis = {'name':'myon', 'age':'21'}
for i in my_dis:print(i)
可以使用 range 函数生成包含多个整数的 range 对象
用法:
range(start,end,step)
在 for 循环中有两个很常用的语句:break 和 continue
下面我们通过一个例子来看看 break 和 continue 的区别:
用 for 循环找出 100~999 内的前 10 个回文数(3 位数中个位和百位相同的数字)
a = []
n = 0
for i in range(100, 999):s = str(i)if s[0] != s[-1]:continuea.append(i)n += 1if n == 10:break
else:print('over')
print(a)
在 continue 处,如果不是回文数,则跳到循环开头,i 取下一个值继续循环;
在 break 处,如果已经找到 10 个回文数了,则跳出 for 循环。
从下面的运行结果我们可以看出,break 跳出 for 循环后会跳过 else 语句。
(因为结果并没有输出'over')
下面介绍嵌套使用 for 循环
示例:输出 100 以内的素数
print(2, 3, end=' ')
for i in range(4, 100):for x in range(2, i):if i%x == 0:breakelse:print(i, end=' ')
else:print('over')
其中 2,3 是素数,直接输出,end=' ' 指定以空格结尾,不然默认是换行符;
if i%x == 0 如果余数是 0 说明 i 不是素数,使用 break 结束内层的 for 循环,则会跳过内层的 else 语句(这里的 else 语句是用来输出素数的),如果余数不是 0 ,if 语句不满足,则会执行内层的 else 语句输出素数,外层的 else 语句是在外层 for 循环结束后执行的,输出 'over' 。
运行结果如下:
3、while 循环
与 for 循环类似,也可在循环体中使用 break 和 continue 语句,else 部分可省略。
示例:
计算 1+2+3+...+100
s = 0
i = 1
while i <= 100:s += ii += 1
print('1+2+3...+100=', s)
在 while 循环中使用 break 语句跳出循环
示例:
输出 100 以内的素数
x = 2
while x < 100:n = 2while n < x-1:if x%n == 0:breakn += 1else:print(x, end=' ')x += 1
else:print('over')
嵌套使用 while 循环
示例:
输出九九乘法表
a = 1
while a < 10:b = 1while b <= a:print('%d*%d=%2d'%(a, b, a*b), end=' ')b += 1print()a += 1
这里的 %d 和 %2d 是格式化字符串中的占位符,用于将数字插入到字符串中,%d不限定宽度,而 %2d 则是确保其至少占两个字节宽度,不足的地方用空格填充。
在前面文章中我们还提到过 %s,在Python中,%s 和 %d 都是字符串格式化中的占位符。它们用于在字符串中插入变量的值。%d 用于整数格式化,表示将一个整数插入到指定位置,%s 用于字符串格式化,表示将一个字符串插入到指定位置。
此外,还可以使用 f(f-string)进行字符串格式化,使用方括号 {} 作为占位符,里面插入表达式,这使得我们可以在字符串中直接嵌入变量。整个内容再使用引号包裹,开头加上 f 即可。
使用示例:
name = "Myon"
age = 21
message = f"Hello, {name}! I am {age} years old."
print(message)
4、迭代遍历
最后简单给大家介绍一下迭代
python 中的各种序列(字符串、列表、元组、字典)都是可迭代对象,可迭代对象可以使用迭代器来遍历包含的元素。
文件对象有自己的迭代器,但是字符串、列表、元组、字典它们没有自己的迭代器,我们需要使用 iter() 函数来生成可迭代对象的迭代器,然后对迭代器调用 next() 函数来遍历对象。next 函数可以依次返回可迭代对象的一个元素,无元素返回时,会抛出异常。
对于文件对象,直接调用它自己的迭代器:__next__() 方法
with open('ip.txt', 'r') as f:a = f.__next__()print(a)b = f.__next__()print(b)
如果我将文件内容改为只有两行
在迭代到第三行时没有元素返回,因此抛出异常:StopIteration
对于没有迭代器的对象(这里以列表为例):
my_list = [1, 2, 3]
l = iter(my_list)
a = next(l)
print(a)
b = next(l)
print(b)
c = next(l)
print(c)
d = next(l)
print(d)
先用 iter() 函数生成迭代器,再使用 next() 函数来遍历对象的元素
同样当没有元素返回时,产生了 StopIteration 异常
当然,对于文件对象,它虽然有自己的迭代器,我们也可以通过调用 next() 函数来遍历它;
with open('ip.txt', 'r') as f:print(next(f))