十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
首先来说下for循环,for循环是python语言的循环控制语句,for循环可以遍历任何序列的项目,包括序列集合或可迭代对象,如列表、字符串、元组、字典等。
我们提供的服务有:网站设计制作、网站设计、微信公众号开发、网站优化、网站认证、象山ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的象山网站制作公司
看下基本语法:
for 变量 in 序列: #变量为任意值,序列为列表、元组、字符串等
子代码模块
复制
比如我们想从一个列表中打印出来每个值,就可以用到for循环:
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #输出结果为:1 2 3 test
#每次只输出一个,因为for循环是遍历列表里的所有值,每遍历一次就输出一个值,然后遍历第二次,当遍历第二次时,变量i的值也会发生变化
复制
第一次循环:从列表中读取到 1 ,把1值赋值给变量 i ,然后进入到子代码中,此时 i 的值为 1,打印出 1 ,然后结束本次for循环,判断列表中还有其他值,开始第二次循环
第二次循环:从列表中读取到 2 ,把2值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 2,打印出2,然后结束本次for循环,判断列表中还有其他值,开始第三次循环
第三次循环:从列表中读取到 3 ,把3值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 3,打印出3,然后结束本次for循环,判断列表中还有其他值,开始第四次循环
第四次循环:从列表中读取到 test ,把test值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 "test",打印出 "test",判断列表中没有值了,结束本次遍历
最后输出的值为:1
2
3
test
如果我们把print(i)加到for循环外,此时打印的结果是什么呢?
for i in (1,2,3,"test"): #遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印每次循环的值
print(i) #因为最后一次遍历的值为“test”,所以最后输出的值为 test
复制
最后按个print(i)输出的值为:test
输出的值为:1
2
3
test #上面是for循环每次遍历得到的结果
test #这个是for循环外,打印i得到的结果
如果我们遍历一个字符串是什么样子呢?
for i in ("Atom"): #遍历字符串里的所有值,并把值赋值给变量 i
print(i) #打印的结果为:A
t
o
m
复制
打印出的结果为:A
t
o
m
遍历一个字符串,会把字符串的每个字符都遍历出来
第一次循环:从字符串中读取到 A ,把A值赋值给变量 i ,然后进入到子代码中,此时 i 值为 A,印出 A ,然后结束本次for循环,判断字符串中还有其他值,开始第二次循环
第二次循环:从字符串中读取到 t ,把t值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 t,打印出t,然后结束本次for循环,判断字符串中还有其他值,开始第三次循环
第三次循环:从字符串中读取到 o ,把o值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 o,打印出o,然后结束本次for循环,判断字符串中还有其他值,开始第四次循环
第四次循环:从字符串中读取到 m ,把m值赋值给变量 i ,然后进入到子代码中,此时 i 的值变成了 m,打印出 m,判断字符串中没有值了,结束本次遍历
现在我们用下range()函数
先说下rang()函数,rang()函数可以创建一个整数列表
range(3)就表示创建一个整数列表(0,1,2) range(5)表示创建一个整数列表(0,1,2,3,4)
for i in range(3): #创建一个整数列表(0,1,2),然后遍历列表里的所有值,并把值赋值给变量 i
print(i) #打印结果为:0
1
2
复制
打印结果为:0
1
2
最后来个for循环和if判断相结合的一个例子:
有一个列表(0,1,2,3),我们想取出列表中小于2的数字,应该怎么办?
这时候就可以先用for循环取出,列表里的每个值,然后再用if判断是否小于2,如果满足就打印出来,如果不满足结束本次循环,再去取第二个值:
for i in range(4): #创建一个列表(0,1,2,3),然后遍历列表中的每个值,赋值给i
if i 2: #得到列表中的每个值后,去进行判断,如果满足i 2,就打印出i的值
print(i) #输出的结果为:0 1
复制
第一次循环:从列表中读取到 0 ,把0赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 0,然后去进行if判断,i 2成立,进入到if子代码中,打印出i的值为0 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第二次for循环
第二次循环:从列表中读取到 1 ,把1赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 1,然后去进行if判断,i 2成立,进入到if子代码中,打印出i的值为1 ,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第三次for循环
第三次循环:从列表中读取到 2 ,把2赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 2,然后去进行if判断,i 2不成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中还有其他值,开始第四次for循环
第四次循环:从列表中读取到 3 ,把3赋值给变量 i ,然后进入for循环的子代码中,此时 i 的值为 3,然后去进行if判断,i 2成立,不进入if子代码中,结束本次if循环,然后结束本次for循环,判断列表中没有其他值了,结束本次遍历
总结下for循环就是,去一个个取出序列中的所有值,然后用每个值去进行for循环子代码下的运算,当结束for循环下子代码的运算后,再去判断序列中还有没有其他值,如果存在,再去把值取出,去进行for循环下子代码的运算,直到序列中的所有值,都进行过for循环子代码的运算,然后结束for循环
Python3中使用:print()函数
用法(从IDLE帮助上复制):
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
value即你要输出的值(大多数类型均可),sep是这多个值用什么分割(默认为空格),end是这个输出的末尾是什么(默认是换行)。
print() 方法用于打印输出,是python中最常见的一个函数。
该函数的语法如下:
参数的具体含义如下:
objects --表示输出的对象。输出多个对象时,需要用 , (逗号)分隔。
sep -- 用来间隔多个对象。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。
file -- 要写入的文件对象。
无论什么类型的数据,包括但不局限于:数值型,布尔型,列表变量,字典变量...都可以直接输出。
在C语言中,我们可以使用printf("%-.4f",a)之类的形式,实现数据的的格式化输出。
在python中,我们同样可以实现数据的格式化输出。我们可以先看一个简单的例子:
和C语言的区别在于,Python中格式控制符和转换说明符用%分隔,C语言中用逗号。
接下来我们仔细探讨一下格式化输出
(1).%字符:标记转换说明符的开始。
%字符的用法可参考上例,不再赘述。
最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*(星号),则宽度会从值元组中读出。
点(.)后跟精度值:如果需要输出实数,精度值表示出现在小数点后的位数。如果需要输出字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出。
可参考C语言的实现方式。
注:字段宽度中,小数点也占一位。
转换标志:-表示左对齐;+表示在数值前要加上正负号;" "(空白字符)表示正数之前保留空格();0表示转换值若位数不够则用0填充。
具体的我们可以看一下例子:
格式字符 说明 格式字符 说明
%s 字符串采用str()的显示 %x 十六进制整数
%r 字符串(repr())的显示 %e 指数(基底写e)
%c 单个字符 %E 指数(基底写E)
%b 二进制整数 %f,%F 浮点数
%d 十进制整数 %g 指数(e)或浮点数(根据显示长度)
%i 十进制整数 %G 指数(E)或浮点数(根据显示长度)
%o 八进制整数 %% 字符%
在python中,输出函数总是默认换行,比如说:
而显然,这种输出太占“空间”,我们可以进行如下改造:
参考文本第一部分对end参数的描述:end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符。