1. python for循环内变量自增为什么没有效果
i = 1
i=i+2
这两行行是无效代码,i这个变量会被for重新赋值。你应该用if判断奇偶数
for i in range(1,100):
····if i % 2 == 1:
········sum += i
print(sum)
2. python在一个for循环中能不能用改变的数值来命名不同的变量
>>>foriinrange(10):
exec('a%s=%s'%(i,i))
>>>a1
1
>>>a2
2
>>>a3
3
>>>a4
4
>>>a5
5
3. python镄刦or寰鐜璇鍙ュ拰while寰鐜璇鍙ョ殑璇娉旷粨鏋勫垎鍒鏄浠涔
Python涓镄刦or寰鐜鍜寃hile寰鐜閮芥槸鐢ㄦ潵瀹炵幇閲嶅嶆墽琛屼唬镰佸潡镄勭粨鏋勚俧or寰鐜阃氩父鐢ㄤ簬阆嶅巻搴忓垪锛埚傚垪琛ㄣ佸厓缁勬垨瀛楃︿覆锛夛纴钥寃hile寰鐜鍒欑敤浜庡湪婊¤冻鐗瑰畾𨱒′欢镞堕吨澶嶆墽琛屼唬镰佸潡銆
1. for寰鐜镄勮娉旷粨鏋勶细
python
for 鍙橀噺 in 搴忓垪:
# 镓ц岀殑浠g爜鍧
杩欓噷锛屸滃彉閲忊濇槸涓涓涓存椂鍙橀噺锛岀敤浜庡湪姣忔¤凯浠d腑瀛桦偍搴忓垪镄勫綋鍓嶅厓绱犮傗滃簭鍒椻濆彲浠ユ槸涓涓鍒楄〃銆佸厓缁勚佸瓧绗︿覆鎴栧叾浠栧彲杩浠e硅薄銆俧or寰鐜浼氢緷娆″彇鍑哄簭鍒椾腑镄勬疮涓鍏幂礌锛岃祴鍊肩粰鍙橀噺锛屽苟镓ц屼唬镰佸潡銆傚綋搴忓垪涓镄勬墍链夊厓绱犻兘琚阆嶅巻涓阆嶅悗锛屽惊鐜缁撴潫銆
渚嫔傦纴浠ヤ笅鏄涓涓浣跨敤for寰鐜阆嶅巻鍒楄〃镄勭亩鍗旷ず渚嬶细
python
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
杩欐典唬镰佷细渚濇¤緭鍑猴细
apple
banana
cherry
2. while寰鐜镄勮娉旷粨鏋勶细
python
while 𨱒′欢:
# 镓ц岀殑浠g爜鍧
杩欓噷锛屸沧浔浠垛濇槸涓涓甯冨皵琛ㄨ揪寮忋傚綋𨱒′欢涓篢rue镞讹纴浠g爜鍧椾细琚镓ц屻傛疮娆℃墽琛屽畬浠g爜鍧楀悗锛屾浔浠朵细琚閲嶆柊璇勪及銆傚傛灉𨱒′欢浠岖劧涓篢rue锛屼唬镰佸潡浼氩啀娆℃墽琛屻傝繖涓杩囩▼浼氢竴鐩撮吨澶嶏纴鐩村埌𨱒′欢鍙树负False锛屾ゆ椂寰鐜缁撴潫銆
渚嫔傦纴浠ヤ笅鏄涓涓浣跨敤while寰鐜璁$畻1鍒10涔嫔拰镄勭亩鍗旷ず渚嬶细
python
sum = 0
i = 1
while i <= 10:
sum += i
i += 1
print(sum)
杩欐典唬镰佷细杈揿嚭锛
yaml
55
杩欎釜渚嫔瓙涓锛屾垜浠浣跨敤浜嗕竴涓棰濆栫殑鍙橀噺i𨱒ユ带鍒跺惊鐜銆傚埯濮嬫椂锛宨镄勫间负1銆傚湪姣忔¤凯浠d腑锛屾垜浠灏唅锷犲埌sum涓婏纴骞跺皢i澧炲姞1銆傚綋i镄勫艰秴杩10镞讹纴𨱒′欢鍙树负False锛屽惊鐜缁撴潫銆
4. python用for使每次输出多一个值
首先来说下for循环,for循环是python语言的循环控制语句,for循环可以遍历任何序列的项目,包括序列集合或可迭代对象,如列表、字符串、元组、字典等。
看下基本语法:
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循环