zoukankan      html  css  js  c++  java
  • Python流程控制之循环结构

    当出现有规律或者是重复的事情就可以使用循环。
    1、循环变量初始化
    2、循环条件
    3、循环体
    4、改变循环变量

    while循环

    循环变量初始化
    while 循环条件:
    	循环体
    	改变循环变量
    

    打印1-100

    a=1
    while a<=100:
    	print(a)
    	a+=1
    

    打印能被3整除,但是不能被5整除

    a=1
    while a<=100:
    	if a%3==0 and a%5!=0:
    		print(a)
    	a+=1
    

    打印1-100的和

    a=1
    sum=0
    while a<=100:
    	sum=sum+a
    	a+=1
    print(a)
    

    打印2008(包含)到2009(不包含)年有多少天?

    a = 2008
    while a<2019:
    	if(a%4==0 and a%100!=0) or a%400==0:
    		sum=sum+366
    		print(a)
    	else:
    		sum=sum+365
    	a+=1
    print(sum)
    

    for循环

    for 变量 in [列表]:
    	循环体
    

    打印1-100

    for a in range(1,101):
        print(a)
    

    嵌套循环

    1.外循环决定行数,内循环决定列数
    2.外循环每执行一次,内循环执行所有次

    break、continue、pass

    • break:结束所有循环
    • continue:结束本次循环
    • pass:没有任何意义,只是为了补全语法

    练习

    1.打印如下结果:
    1*5=5
    2*10=20
    3*15=45
    ...
    10*50=500

    j =5
    for i in range(1,11):
        print(i,"*",j,"=",i*j)
        j+=5
    
    i=1
    j=5
    while i<=10:
        print(i,"*",j,"=",i*j)
        j+=5
        i+=1
    

    2.本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少?

    a=10000
    for y in range(5):
        a=a+0.003*a
        y+=1
    print(a)
    

    3.计算1900年1月1日到今天(如:2019年08月20日)相距多少天?

    '''
    分析:
    能被4整除且又不能被100整除是闰年(366天)
    能被400整除是闰年
    1,3,5,7,8,10,12月份是31天
    4,6,9,11月份是30天
    2月份 平年28天 闰年29天(2019年是平年)
    '''
    
    sum=0
    day=0
    for a in range(1900,2019):
        if (a % 4 == 0 and a % 100 != 0) or a % 400 == 0:
            sum = sum + 366
        else:
            sum = sum + 365
    for a in range(1,8):
        if a in [1,3,5,7,8,10,12]:
            sum+=31
        elif a in [3,6,9,11]:
            sum+=30
        elif a==2:
            if (a % 4 == 0 and a % 100 != 0) or a % 400 == 0:
                sum+=29
            else:
                sum +=28
    print(sum+20)
    

    4.输入一个年份和一个月份,打印这个月的日历(提示:1900.1.1是星期一)

    y=int(input("输入年份:"))
    m=int(input("输入月份:"))
    sum=0
    for a in range(1900,y):
        if (a % 4 == 0 and a % 100 != 0) or (a % 400 == 0):
            sum = sum + 366
        else:
            sum = sum + 365
    for a in range(1,m):
        if a in [1,3,5,7,8,10,12]:
            sum = sum + 31
        elif a in [4, 6, 9, 11]:
            sum = sum + 30
        elif a==2:
            if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):
                sum=sum+29
            else:
                sum=sum+28
    xq=(sum+1)%7
    print((sum+1)%7) #求星期
    
    curr_day=1
    if m in [1, 3, 5, 7, 8, 10, 12]:
        curr_day=31
    elif m in [4, 6, 9, 11]:
        curr_day= 30
    elif m == 2:
        if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0):
            curr_day=29
        else:
            curr_day=28
    
    print("	",y,"年",m,"月")
    print("日	一	二	三	四	五	六")
    for a in range(1,curr_day+1+xq):
        if a<=xq:
            print("	",end="")
        else:
            print(a-xq,"	",end="")
        if a%7==0: # 换行
            print("")
    

    5.打印如下图案:
    *
    **
    ***
    ****
    *****

    for a in range(1,6):
        for b in range(1,a+1):
            print("*",end="")
        print("")
    

    6.打印如下图案:
    *
    ***
    *****
    *******
    *********

    for a in range(1,6):
        for b in range(1,2*a):
            print("*",end="")
        print("")
    

    7.打印如下图案:
    #####*
    ####***
    ###*****
    ##*******
    #*********

    # 行与列的规律,#的规律: b=6-a,*的规律:c=2*a-1
    # 方法一
    for a in range(1,6):
        for b in range(6,a+6):
            print("#"*(6-a)+"*"*(2*a-1),end="")
            break
        print("")
    
    # 方法二
    for a in range(1,6):
        for b in range(5,a-1,-1):
            print("#",end="")
        for c in range(1,2*a):
            print("*",end="")
        print("")
    
    # 方法三
    for a in range(1,6):
        for b in range(1,7-a):
            print("#",end="")
        for c in range(1,2*a):
            print("*",end="")
        print("")
    

    8.(挑战题)打印如下图案:
    *
    ***
    *****
    *******
    *********
    *******
    *****
    ***
    *

    for a in range(1,6):
        for b in range(1,6-a):
            print(" ",end="")
        for c in range(1,2*a):
            print("*",end="")
        print("")
    for x in range(2,6):
        for y in range(1,x):
            print(" ",end="")
        for z in range(1,10-2*y):
            print("*",end="")
        print("")
    

    9.打印99乘法表

    # 正
    for a in range(1,10):
        for b in range(1,a+1):
            print(str(a)+"*"+str(b)+"="+"%2s"%str(a*b),end=" ")
        print("")
    
    # 倒
    for a in range(9,0,-1):
        for b in range(1,a+1):
            print(str(a)+"*"+str(b)+"="+"%2s"%str(a*b),end=" ")
        print("")
    

    10.定义一个List,任意输入10个数字保存到List,然后按从小到大排序。(冒泡排序)
    思路1(从左往右推):先确定最大值,然后再确定第二大的值,然后再确定第三大的值。以此类推。

    lis=[]
    for a in range(1,11):
        number = int(input("请输入一个数字:"))
        lis.append(number)
    
    for cs in range(len(lis)):
        for a in range(len(lis)-1):
            if lis[a]>lis[a+1]:
                temp=lis[a]
                lis[a]=lis[a+1]
                lis[a+1]=temp
    print(lis)
  • 相关阅读:
    GDI+学习笔记2
    GDI+学习笔记1- 概述
    Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
    Java网络编程和NIO详解开篇:Java网络编程基础
    我在阿里工作的这段时间里,都学到了哪些东西
    在大公司做凤尾,还是在小公司做鸡头?
    蚂蚁金服财富技术部,诚招Java研发工程师。校招内推!!!
    测试课程
    新笔记
    阅读书籍电技术
  • 原文地址:https://www.cnblogs.com/TD1900/p/11884780.html
Copyright © 2011-2022 走看看