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语句
  1. for i in range(1,101):
  2.     print i
复制代码
用while
  1. i=1
  2. while i<101:
  3.     print i
  4.     i+=1
复制代码

作者: xiaohuzai    时间: 2015-2-8 15:58
习题四:1加到100的和
用for:
  1. sum=0
  2. for i in range(1,101):
  3.     sum=sum+i
  4. print sum
复制代码
用while:
  1. sum=0
  2. i=1
  3. while i <101:
  4.     sum=sum+i
  5.     i+=1
  6. print sum
复制代码

作者: xiaohuzai    时间: 2015-2-8 16:11
习题5:等比数列,输入一个数,输出以这个值为公比,1位首项的等比数列前十项
用while:
  1. a=1
  2. n=input("输入您的公比:")
  3. i=0
  4. while i <10:
  5.     a=a*n
  6.     i+=1
  7. print a
复制代码
用for:
  1. a=1
  2. n=input("输入您的公比:")
  3. for i in range(0,10):
  4.     a=a*n
  5.     i+=1
  6. print a
复制代码

作者: xiaohuzai    时间: 2015-2-8 17:12
习题6:输出斐波那契数列,输入一个大于等于3的n,输出斐波那契数列的前n项
for:
  1. a1=1
  2. a2=1
  3. n=input("输入数列的项:")
  4. print a1
  5. print a2
  6. for i in range(3,n+1):
  7.     a3=a2+a1
  8.     print a3
  9.     a1=a2
  10.     a2=a3
  11.     i+=1
复制代码
while:
  1. a1=1
  2. a2=1
  3. i=3
  4. n=input("输入数列的项:")
  5. print a1
  6. print a2
  7. while i<=n:
  8.     a3=a2+a1
  9.     print a3
  10.     a1=a2
  11.     a2=a3
  12.     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, 下载次数: 289)

Python6.png


作者: 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, 下载次数: 296)

Python7.png


作者: 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, 下载次数: 269)

2.png

1.png (16.79 KB, 下载次数: 270)

1.png


作者: 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, 下载次数: 328)

QQ图片20181127073307.png


作者: 简言    时间: 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