Python从入门到精通第3天(循环结构的使用)

循环结构

  • for-in循环
  • while循环
  • break和continue关键字
  • 练习

在写程序的时候,一定会遇到需要重复执行某条或某些指令的场景,例如用程序控制机器人踢足球,如果机器人持球而且还没有进射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。这个场景中,让机器人向球门方向移动就是一个需要重复的动作。

循环结构就是程序中控制某条或某些指令重复执行的结构,在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

for-in循环

如果明确的知道循环执行的次数或者要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in循环,例如下面代码中计算1~100求和的结果:


# 求1~100的和

# 定义一个求和的变量
num = 0

# 这里的range()函数包头不包尾,且从0开始累加1
# 跟数学里面的取值范围[0,101)有点相似

for i in range(101):
    num += i

print('求的和为:',num)

当然我们的range函数还有给定步长进行累加的功能,跟数学的等差数列有点相似,步长就相当于等差数列的d。例如下面求1~100的奇数的和:

'''求1~100的奇数的和'''

# 给定一个求和的变量
sum = 0

for i in range(101):
    # 判断是否为奇数,通过取模如果余数为0则为偶数
    # 余数不为0则为奇数,此时if语句才能执行
    # 当然我们这里也可以将if语句改为  if i % 2 != 0:
    if i % 2:
        sum += i

print('所有的奇数和为:',sum)

while循环

如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。

我们可以通过下面的猜数字的游戏来说明一下while循环:

'''
猜数字的小游戏
'''

# 定义一个开关使用布尔值进行定义
b = True

# 定义一个需要猜的值
c = 48

while b:

    # 通过键盘输入猜的数字
    a = int(input('请输入一个0~100的数字:'))
    if a == c:
        print('恭喜您猜对了!')
        b = False
    elif a > c:
        print('您输入的数偏大哦!')
    elif a < c:
        print('您输入的数偏小哦!')

break和continue关键字

break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。例如:

'''
测试break和continue的使用
'''

for i in range(10):
    if i == 3:
        print('此时我会执行continue语句跳过本次循环')
        continue
    elif i == 8:
        print('此时我会执行break语句,中止程序')
        break

    print(i)

和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个九九乘法表:

'''
打印九九乘法表
'''

for x in range(1,10):
    for y in range(1,x+1):
        print(f'{y}*{x} = {x*y}',end='\t')
    print()

练习

输入一个正整数判断是不是素数

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


# 导入求平方根的包
from math import sqrt

num = int(input('请输入一个正整数:'))

# 这里目的是减少循环的次数
end = int(sqrt(num))

is_prime = True
for x in range(2, end + 1):
    if num % x == 0:
        is_prime = False
        break
if is_prime and num != 1:
    print('%d是素数' % num)
else:
    print('%d不是素数' % num)

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

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

x = int(input('x = '))
y = int(input('y = '))
# 如果x大于y就交换x和y的值
if x > y:
    # 通过下面的操作将y的值赋给x, 将x的值赋给y
    x, y = y, x
# 从两个数中较小的数开始做递减的循环
for factor in range(x, 0, -1):
    if x % factor == 0 and y % factor == 0:
        print('%d和%d的最大公约数是%d' % (x, y, factor))
        print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor))
        break

打印三角形图案

# 第一种排列
row = int(input('请输入行数: '))
for i in range(row):
    for _ in range(i + 1):
        print('*', end='')
    print()
print('第一种排列')

# 第二种排列
for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(' ', end='')
        else:
            print('*', end='')
    print()
print('第二种排列')


# 第三种排列
for i in range(row):
    for _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print()
print('第三种排列')

输出结果为:

Python从入门到精通第3天(循环结构的使用)_第1张图片

你可能感兴趣的:(Python从入门到精通,python,开发语言,机器人)