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("\t",y,"年",m,"月")
print("日\t一\t二\t三\t四\t五\t六")
for a in range(1,curr_day+1+xq):
    if a<=xq:
        print("\t",end="")
    else:
        print(a-xq,"\t",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)
posted @ 2019-11-15 05:00  心脏鼓点  阅读(504)  评论(0编辑  收藏  举报