您的位置:首页 > 编程语言 > Python开发

Python3中循环语句while,for相关操作,代码以及用法简要分析(附简单练习题)

2018-07-12 21:27 916 查看

一:循环语句: 

什么是循环:重复做某一件事情。
生活中的循环:表,地球公自转
代码中什么情况下会使用循环: 当一段代码需要重复并且连续的时候需要用的循环。
循环三大条件: 1.定义循环的起始值
                          2.循环结束的条件
                          3.起始值递增或递减
无限循环:死循环

造成死循环的条件:1.当循环条件一直满足的情况(大于小于写错了,)

                                2.递增条件没有写。 

(1)while循环

while True:  #死循环
什么情况下写死循环:当不知道循环结束条件的时候。(就是指该过程需要重复执行而且不知道什么时候结束时。)
注意:在程序中0代表False其他数字代表True
例如:
while 1:
      print('这是死循环')
break 结束全部循环
continue 结束本次循环,进行下次循环(能别用尽量别用,可以不写或写pass)
while…else…当循环正常结束时就执行else
当循环通过braek结束的时候不执行else。
i=1
while i<3:
    print('这是循环')
   # if i==2:    
   #    break    
    i+=1
else:
    print('结束了')
执行程序观察有break和没有的break的区别

练习题:
1.1-10之和

[code]num = 1                              for循环:       sum=0   #注意缩进
sum = 0                                              for i in range(1,11):
while num <= 10:                                          sum += i
print(num)                                       print('1-10的和为:%d'%sum)
sum += num
num += 1
print('1到10的和为:%d'%sum)
2.1-100中奇数和偶数之和
[code]num=1                             for循环:        osum=0   #注意缩进
osum=0                                            jsum=0
jsum=0                                            for i in range(1,101):
while num<=100:                                       if i%2==0:
if num%2==0:                                        osum+=i
osum+=num                                    else:
else:                                               jsum+=i
num%2!=0                                 print('1-100奇数和为:%d,偶数和为:%d'%(jsum,osum))
jsum+=num
num=num+1
print('1-100的偶数和为:%d'%osum)
print('1-100的奇数和为:%d'%jsum)
3.1-100被3整除的数之和
[code]num=1                                       for循环: sum=0   #注意缩进
sum=0                                                 for i in range(1,101):
while num<=100:                                             if i%3==0:
if num%3==0:                                              sum+=i
sum+=num                                     print('1-100能被3整除的数的和为:%d'%sum)
num=num+1
print('1-100能被3整除的数的和为:%d'%sum)
4.倒叙输出1-10
[code]num=10                               for循环:     for i in range(10,0,-1): #注意range()括号内的取值范围
while 0<num<=10:                                          print(i)
print(num)
num-=1
5.输入一个数,求它的阶乘
[code]sum=1                              for循环:     sum=1   #注意缩进
a=0                                              n=int(input('请输入您要求阶乘的数:'))
while a<n:                                       for i in range(1,n+1):
sum*=a+1                                          sum*=i
a+=1                                         print(sum)
print('%d的阶乘为:%d'%(n,sum))
6.输出所有的三位水仙花数(例子:153=1*1*1+5*5*5+3*3*3)
[code]n=100                                          for循环: for i in range(100,1000):
while  n<=1000:                                              ge=n%10
ge=n%10                                                  shi=n//10%10
shi=n//10%10                                             bai=n//10//10%10
bai=n//10//10%10                                         if ge**3+shi**3+bai**3=i:
if ge*ge*ge+shi*shi*shi+bai*bai*bai==n:                      print(i)
print(n)
n+=1
7.循环录入学生的成绩并求出平均分,当录入负数时提示录入错误,当输入over时提示结束,最后输出总成绩,平均分以及录入了多少个成绩
[code]zcj=0
n=1
while True:
grade = input('请输入第%d个学生的成绩:'%n)                   #注意此题在输入over是并不会计算学生数,所以在
if grade=='over':                                           #最后计算平均成绩时应减去一个输入次数
print('录入结束!')
break
elif int(grade)<0:
print('录入错误!')
continue
zcj+=float(grade)
n += 1
print('总成绩为:%.1f,平均成绩为:%.1f,总共录入%d个学生成绩'%(zcj,zcj / (n-1),n-1))
8.while...else
[code]num=1                         for...else  #  同样 for循环也有 else 规则和while...else 一样 break结束不执行else
while num<=10:                                    for i in range(1,11):
print(num)                                         print(i)
num+=1                                             if i ==7:
if num==7:                                            break
break                                     else:
else:                                                 print('循环结束了!')
print('循环结束了!')
[/code]

 (2)for循环

for循环(一般结合数据结构使用)
格式:for 变量名称 in 列表
for会结合range()函数一起使用
range():生成一堆的数据,将数据存储在列表(容器)中    range汉语是范围的意思,
range(1,100)   1<=x<100  1为起始值   100为最大值,取不到最大值
Range(1,100,3)  3为步长  即每次增加的值

 (3)for while双层嵌套循环

 

 内层循环先结束,外层循环才结束。

 先写内循环,再写外循环。

练习题:星星  (兴趣 思维练习题 如果你是初学者 跳过把,如果你感兴趣,却又感觉烧脑,下边有我自己的理解)

(1)

 

(2)

 

(3)

 

(4)

 

(5)

 

       关于星星问题和for循环问题,由于这是我上课第三天,老师说先并不深入讲for循环,重点在while循环上,因为班上有的学生底子比较差,照顾大众,所以,下边  我重点用while循环讲下星星问题,以及while多层循环的使用方法
       (1)
                

            首先分析图形:总共有5行星星,第一行可以看做是1个星星,4个空格,每行的星星数随着行数+1  相反空格-1

            因此我们应该要写三个循环,一个循环控制输出星星数,一个循环控制输出空格数,一个循环控制输出的行数。
            首先我们写控制星星的循环:第一行1个 ,第二行2个,第三行3个..等等
            
            这时候我们就发现这个图形5行所有的星星都在得到了,但是全在一行,这并不我们要的结果,所以我们要在每行星星循环完后把空格的循环加上,如下:
           
           当我们把5个空格循环加上之后,这时候我们发现虽然空格循环已经加在了里边但是所有结果还是在一行,所以我们还要在每一行的星星和空格循环结束后,加入一个print()让每一行的星星循环和空格循环结束后进行换行,如下:

           
           

           至此,我们已经打印出了我们想要的图形,但是我们会发现代码很长,但是,最重要的一点来了,认真观察的同学已经发现规律了,本章开头已经说了,循环是什么,循环是我们一直重复的做一件事,而上边的代码就是在重复的做两件事,输出第一行的星与空格,然后输出第二行的星与空格,,,,,直到第五行,每一行的星与空格的输出也各自是一个循环,星星数i每次循环+1,空格数j每次-1,所以我们先把输出一行星与空格的代码块Ctrl+X,放到剪切板。分析出这一点,我们来写第三层循环:
          

          根据上边图片提示我们把控制星与空格的代码块粘贴在此处:

         
         所以,嵌套循环就这样完成了,先把内层循环写完,最后写外层循环,然后在外层循环体内粘贴我们写好的内层循环,这里还有一个注意点,便是z,i和j的变化,根据外层循环的变化规律,得出i,j的变化规律关系式,不同的关系式就可以得到不同的图形,所以这一块也是我们控制星星图案的重点。

          作为刚刚学习python3的菜鸟,我只是把我每天学习的内容分享出来,由于水平还有限,一些题的解题方法,用目前所学的知识解起来都显得比较笨拙与复杂,不过也没办法,谁让这是老师的要求不能用后边的知识呢,毕竟用目前所学的知识解题有很大的局限性,随着课程的学习,我会回过头重新来过,用新的知识去写解题方法。如果我的笔记有任何问题,请及时与我联系,我会及时更改,谢谢。
        

 

        

 

 

 

 

 

 

 

 

 

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: