Python学习04_循环结构

应用场景

当需要重复执行某些语句的时候可以使用循环结构来进行重复执行的结构。在Python中构造循环有两种方法,for-in循环和while循环。

for-in循环

如果已知循环的次数或者对容器进行迭代。使用for-in进行循环会比较合适。

如求出1~n的总和。

"""
用for循环实现1~100求和
"""
sum=0
for x in range(101):
    sum+=x
print(sum)

image-20210121182630465

rang()可以构造数字范围。

  • range(101):产生0到100范围的整数
  • range(1,101):产生1~100范围的整数
  • range(1,101,2):产生1~100的计数。步长为2
  • range(100,0,-2):产生100到1的偶数,步长是-2

实现1~100之间的偶数求和。

"""
用for循环实现1~100之间偶数求和
"""
sum=0
for x in range(2,1012):
    sum+=x
print(sum)

image-20210121183403387

while循环

若干不知道循环的次数,推荐使用while循环。通过一个表达式来控制循环,表达式成立,循环继续,不成立,循环结束。

以猜数字游戏来看while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

"""
猜数字游戏
"""
import random  # 用于生成随机数
ans = random.randint(1, 100)
cnt = 0
while True:
    cnt += 1
    num = int(input('请输入:'))
    if num < ans:
        print('大一点')
    elif num > ans:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break  # 结束循环
print('你总共猜了%d次' % cnt)

image-20210121184649148

循环结构也是可以像分支结构一样进行嵌套。例如输出九九乘法表。

"""
九九乘法表
"""
for i in range(1,10):
    for j in range(1,1+i):
        print('%d * %d = %d'% (i,j,i*j),end='	')
    print()

image-20210121185148907

练习

练习一

提示:素数指的是只能被1和自身整除的大于1的整数。

"""
输入一个正整数判断它是不是素数
"""
num = int(input('请输入一个正整数:'))
flag = True
i = 2
while i*i <= num:
    if num % i == 0:
        flag = False
        break
    i += 1
if flag and num != 1:
    print('%d是素数' % num)
else:
    print('%d不是素数' % num)

image-20210121190059498

练习二

输入两个正整数,计算它们的最大公约数和最小公倍数。

提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。

"""
输入两个正整数计算它们的最大公约数和最小公倍数
"""
x=int(input('x='))
y=int(input('y='))
tmpx=x
tmpy=y

while tmpy!=0:
    r=tmpx%tmpy
    tmpx=tmpy
    tmpy=r
print('%d和%d的最大公约数是%d'%(x,y,tmpx))
print('%d和%d的最小公倍数是%d'%(x,y,x*y/tmpx))

image-20210121192016761

练习三

打印三角形

image-20210121192144665

"""
打印三角形
"""
row = int(input('请输入行数:'))
for i in range(row):
    for j in range(i+1):
        print('*',end='')
    print()

for i in range(row):
    for j in range(row):
        if j<row -i-1:
            print(' ',end='')
        else:
            print('*',end='')
    print()

for i in range(row):
    for j in range(row - i - 1):
        print(' ',end='')
    for k in range(2 * i + 1):
        print('*',end='')
    print()

image-20210121192839865

不积硅步,无以至千里。
原文地址:https://www.cnblogs.com/wyloving/p/14309985.html