Crossin的编程教室
标题: 【Python 第12课】 for循环 [打印本页]
作者: crossin先生 时间: 2014-4-23 17:24
标题: 【Python 第12课】 for循环
大家对while循环已经有点熟悉了吧?今天我们来讲另一种循环语句:
for ... in ...
同while一样,for循环可以用来重复做一件事情。在某些场景下,它比while更好用。
比如之前的一道习题:输出1到100(回复903可看详细内容)。
我们用while来做,需要有一个值来记录已经做了多少次,还需要在while后面判断是不是到了100。
如果用for循环,则可以这么写:
for i in range(1, 101):
print i
解释一下,range(1, 101)表示从1开始,到101为止(不包括101),取其中所有的整数。
for i in range(1, 101)就是说,把这些数,依次赋值给变量i。
相当于一个一个循环过去,第一次i = 1,第二次i = 2,……,直到i = 100。当i = 101时跳出循环。
所以,当你需要一个循环10次的循环,你就只需要写:
for i in range(1, 11)
或者
for i in range(0, 10)
区别在于前者i是从1到10,后者i是从0到9。当然,你也可以不用i这个变量名。
比如一个循环n次的循环:
for count in range(0, n)
for循环的本质是对一个序列中的元素进行递归。什么是序列,以后再说。先记住这个最简单的形式:
for i in range(a, b)
从a循环至b-1
现在,你可以用for循环来改写习题903,904,905,906了。
作者: 珍妮晚上好 时间: 2014-4-23 21:09
终于补上了啦。我照着WORD版的已经学到40多课了,还是发论坛好,可以互动
作者: crossin先生 时间: 2014-4-24 11:53
珍妮晚上好 发表于 2014-4-23 21:09
终于补上了啦。我照着WORD版的已经学到40多课了,还是发论坛好,可以互动
努力补完中
作者: lenfari 时间: 2014-6-23 09:48
crossin先生 发表于 2014-4-24 11:53
努力补完中
请问习题在哪里能找到呢?
作者: crossin先生 时间: 2014-6-23 16:26
lenfari 发表于 2014-6-23 09:48
请问习题在哪里能找到呢?
http://crossin.me/forum.php?mod=forumdisplay&fid=42
http://crossincode.com/static/wechat/exercise.html
作者: lenfari 时间: 2014-6-24 10:08
crossin先生 发表于 2014-6-23 16:26
http://crossin.me/forum.php?mod=forumdisplay&fid=42
http://crossincode.com/static/wechat/exercise. ...
多谢~
作者: 萧风 时间: 2014-6-30 08:37
903
作者: crossin先生 时间: 2014-6-30 16:21
萧风 发表于 2014-6-30 08:37
903
这个是要在微信里回复的。
或者去你楼上那两个链接就能看到
作者: 萧风 时间: 2014-6-30 16:25
看到了,谢谢啊,现在做到第10题了
作者: sunbin726 时间: 2015-1-16 19:15
903
作者: xiaohuzai 时间: 2015-2-8 15:50
习题三,输出1到100
用for语句- for i in range(1,101):
- print i
复制代码 用while- i=1
- while i<101:
- print i
- i+=1
复制代码
作者: xiaohuzai 时间: 2015-2-8 15:58
习题四:1加到100的和
用for:- sum=0
- for i in range(1,101):
- sum=sum+i
- print sum
复制代码 用while:- sum=0
- i=1
- while i <101:
- sum=sum+i
- i+=1
- print sum
复制代码
作者: xiaohuzai 时间: 2015-2-8 16:11
习题5:等比数列,输入一个数,输出以这个值为公比,1位首项的等比数列前十项
用while:- a=1
- n=input("输入您的公比:")
- i=0
- while i <10:
- a=a*n
- i+=1
- print a
复制代码 用for:- a=1
- n=input("输入您的公比:")
- for i in range(0,10):
- a=a*n
- i+=1
- print a
复制代码
作者: xiaohuzai 时间: 2015-2-8 17:12
习题6:输出斐波那契数列,输入一个大于等于3的n,输出斐波那契数列的前n项
for:- a1=1
- a2=1
- n=input("输入数列的项:")
- print a1
- print a2
- for i in range(3,n+1):
- a3=a2+a1
- print a3
- a1=a2
- a2=a3
- i+=1
复制代码 while:- a1=1
- a2=1
- i=3
- n=input("输入数列的项:")
- print a1
- print a2
- while i<=n:
- a3=a2+a1
- print a3
- a1=a2
- a2=a3
- i+=1
复制代码
作者: cross 时间: 2015-4-21 08:54
习题集找不着了
作者: fix 时间: 2015-5-12 12:41
#903
for i in range(1,101):
print i
#904
sum = 0
for i in range(1,101):
sum = sum+i
print i
print sum
#905
print 3
for i in range(0,10):
b = 3**i
print b
#906
num = input()
print 1
print 1
a = 1
b = 1
for i in range(1,num-1):
c = a+b
a = b
b = c
print c
作者: 草办 时间: 2015-12-2 14:44
不错 get
作者: MarlboroEdc 时间: 2015-12-5 15:45
903
作者: crossin先生 时间: 2015-12-5 20:42
MarlboroEdc 发表于 2015-12-5 15:45
903
这个是要在微信里回复的
作者: catherinemic 时间: 2015-12-19 16:52
a=1
905:
b=input('please enter your favorite number:')
for i in range(1,11):
a=a*b
print a
-
Python6.png
(5.05 KB, 下载次数: 522)
作者: catherinemic 时间: 2015-12-19 17:11
906:
a=0
b=1
n=input('please enter your favorite number:')
print 1
for n in range(1,n):
c=a+b
a=b
b=c
print c
-
Python7.png
(3.87 KB, 下载次数: 528)
作者: crossin先生 时间: 2015-12-19 23:51
catherinemic 发表于 2015-12-19 17:11
906:
a=0
b=1
你进步很快啊,要赞一下!
作者: Gerald2016 时间: 2016-1-14 06:29
903
作者: crossin先生 时间: 2016-1-14 13:31
Gerald2016 发表于 2016-1-14 06:29
903
这个要在微信公众号里回复
作者: Gerald2016 时间: 2016-1-15 04:14
crossin先生 发表于 2016-1-14 13:31
这个要在微信公众号里回复
好的,谢谢
作者: 追风 时间: 2016-4-29 17:14
珍妮晚上好 发表于 2014-4-23 21:09
终于补上了啦。我照着WORD版的已经学到40多课了,还是发论坛好,可以互动
没错,看到其他同学的提出的各种问题,自己也可以思考,关键是有些问题自己想不到
作者: liudaguo520 时间: 2016-7-26 13:45
上交作业!
作者: liudaguo520 时间: 2016-7-26 13:45
903:
#while
a = 0
while a <100:
a = a + 1
print a
#for
for b in range(1,101):
print b
作者: liudaguo520 时间: 2016-7-26 13:52
liudaguo520 发表于 2016-7-26 13:45
903:
#while
a = 0
904:
while:
a = 0
b = 0
while a <100:
a = a + 1
b = b + a
print b
for:
c = 0
for d in range(1,101):
c = c + d
print c
作者: liudaguo520 时间: 2016-7-26 14:09
liudaguo520 发表于 2016-7-26 13:52
904:
while:
a = 0
905:这两个输出的时候第一位是2,不是1.请看一下!
a = 1
print "shuru yige dengbi zhi"
b = input()
c = 0
while c < 10:
c = c + 1
a = a * b
print a
a = 1
print "shuru dengbi zhi"
c = input()
for b in range(1,11):
b = b + 1
a = a * c
print a
作者: crossin先生 时间: 2016-7-26 14:42
liudaguo520 发表于 2016-7-26 14:09
905:这两个输出的时候第一位是2,不是1.请看一下!
a = 1
print "shuru yige dengbi zhi"
你把print放前面,或者先输出一下,就是从1开始了
作者: liudaguo520 时间: 2016-7-26 14:51
crossin先生 发表于 2016-7-26 14:42
你把print放前面,或者先输出一下,就是从1开始了
谢谢,我刚想到了,也试验了,果然是这样,但是习题906“输出裴波那契数列”有点蒙!还得下功夫!!
作者: liudaguo520 时间: 2016-7-26 16:42
crossin先生,您好,我想问一下!如果我有一个代码不理解(比如:用while和for求和,我只理解了while),我强行记住利用for求和的用法,对于后续的学习有影响吗?还是说必须把这个研究明白,在进行下一课程的学习比较好??
作者: liudaguo520 时间: 2016-7-26 16:44
liudaguo520 发表于 2016-7-26 16:42
crossin先生,您好,我想问一下!如果我有一个代码不理解(比如:用while和for求和,我只理解了while),我 ...
或者说,您留的这个几个练习(903 904 905 906),906我写不出来,我能强行记住同学们的思路,继续学习后面的课程吗?
作者: crossin先生 时间: 2016-7-27 15:15
liudaguo520 发表于 2016-7-26 16:44
或者说,您留的这个几个练习(903 904 905 906),906我写不出来,我能强行记住同学们的思路,继续学 ...
for循环还是比较基本的,建议先理解扎实了再往后会比较好
至少你要能看懂别人的方法,不仅仅是强行记住
作者: iceland_girl 时间: 2016-8-23 19:06
本帖最后由 iceland_girl 于 2016-8-23 19:13 编辑
哈哈
作者: zsymax 时间: 2016-10-16 19:06
903
作者: crossin先生 时间: 2016-10-16 20:19
zsymax 发表于 2016-10-16 19:06
903
是在微信公众号中回复
作者: l0ve1o24 时间: 2016-12-4 16:22
906
c = 1
d = 1
a = input()
print 1
print 1
for b in range(1,a-1):
b = c + d
d = c
c = b
print b
作者: wwyy4ever 时间: 2018-2-1 15:11
#905:
a=1
n=int(raw_input('输入一个值:'))
for i in range(0,10):
print a :
a=a*n
作者: wwyy4ever 时间: 2018-2-1 15:50
本帖最后由 wwyy4ever 于 2018-2-1 15:52 编辑
#菲波那切数列
n=int(raw_input('输入一个值:'))
a=1
b=1
print a
print b
for i in range(2,n):
c=a+b
a=b
b=c
print c
作者: demiismore 时间: 2018-3-11 15:51
906交作业
作者: demiismore 时间: 2018-3-11 15:52
q=input()
a1=0
a2=1
n=1
while n<=q:
n=n+1
print a2
a2=a1+a2
a1=a2-a1
作者: JH013142 时间: 2018-5-3 16:52
904
作者: lricsome 时间: 2018-11-15 21:05
903交作业
while 循环
a=0
b=0
while b<=100:
a=a+1
b=b+1
print a
for 循环
x=0
for x in range(1,101):
print x
x=x+1
作者: lricsome 时间: 2018-11-15 21:08
904交作业
a=0
b=1
while b<=100:
a=a+b
b=b+1
print a
for 循环
a=o
for b in range (1,101):
a+a+b
b=b+1
print a
作者: lricsome 时间: 2018-11-15 21:22
liudaguo520 发表于 2016-7-26 14:09
905:这两个输出的时候第一位是2,不是1.请看一下!
a = 1
print "shuru yige dengbi zhi"
我也在想怎么输出首项1?
作者: lricsome 时间: 2018-11-15 21:31
905等比数列交作业:
while循环
b=1
print"""请输入任意一个公比,我将会输出这个等比数列的前10项
你输入的公比是?"""
a=input()
c=1
print b
while c<10:
b=b*a
c+=1
print b
for循环
b=1
print"""请输入任意一个公比,我将会输出这个等比数列的前10项
你输入的公比是?"""
a=input()
b=1
print b
for i in range (1,10):
b=b*a
i+=1
print b
作者: lricsome 时间: 2018-11-15 21:32
发现print 写在循环里面和外面是不一样的结果。如等比数列这道题目,print写在循环里面把每次的结果都输出了;print写在外面的话就是输出最后的结果1024
作者: crossin先生 时间: 2018-11-15 21:35
lricsome 发表于 2018-11-15 21:22
我也在想怎么输出首项1?
把print放在循环内的第一句
作者: crossin先生 时间: 2018-11-15 21:37
lricsome 发表于 2018-11-15 21:32
发现print 写在循环里面和外面是不一样的结果。如等比数列这道题目,print写在循环里面把每次的结果都输出 ...
那肯定咯,程序的执行过程都不一样了
作者: lricsome 时间: 2018-11-17 20:54
906交作业
-
2.png
(8.59 KB, 下载次数: 501)
-
1.png
(16.79 KB, 下载次数: 504)
作者: lricsome 时间: 2018-11-17 20:55
crossin先生 发表于 2018-11-15 21:35
把print放在循环内的第一句
谢谢crossin先生
作者: 简言 时间: 2018-11-26 22:36
老师打包exe,之后打开exe的时候出现该应用已停止运行
作者: crossin先生 时间: 2018-11-26 23:23
简言 发表于 2018-11-26 22:36
老师打包exe,之后打开exe的时候出现该应用已停止运行
你从命令行进入目录下运行你这个 .exe ,然后把报错信息发上来,不然没法判断的。
或者还有个办法就是你去掉一部分打包,直到成功,然后看是什么语句导致的失败
作者: 简言 时间: 2018-11-27 07:33
就这个
-
QQ图片20181127073307.png
(6.96 KB, 下载次数: 608)
作者: 简言 时间: 2018-11-27 07:35
crossin先生 发表于 2018-11-26 23:23
你从命令行进入目录下运行你这个 .exe ,然后把报错信息发上来,不然没法判断的。
或者还有个办法就是你 ...
在论坛里面看到,其他同学遇到和我同样的错误,解决方法是删掉了font前面的内容,这个怎么删,没懂
作者: 简言 时间: 2018-11-27 08:14
简言 发表于 2018-11-27 07:35
在论坛里面看到,其他同学遇到和我同样的错误,解决方法是删掉了font前面的内容,这个怎么删,没懂 ...
打包前几次的游戏可以,最终版的游戏不行,估计要改改代码了,
作者: crossin先生 时间: 2018-11-27 10:09
简言 发表于 2018-11-27 08:14
打包前几次的游戏可以,最终版的游戏不行,估计要改改代码了,
那很可能是font字体没放进去或者有问题,试着去掉字体部分
作者: 哦哦UP 时间: 2020-3-15 16:09
第一个链接已经失效了啊
作者: crossin先生 时间: 2020-3-15 17:06
哦哦UP 发表于 2020-3-15 16:09
第一个链接已经失效了啊
https://mp.weixin.qq.com/mp/home ... 518ac25edb0f9167cc0
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) |
Powered by Discuz! X2.5 |