当前位置:   article > 正文

【Python】Python基础——循环结构 for-in【配合range(),enumerate()】、while,break,continue 简单介绍_for _ in range(cols)

for _ in range(cols)

如果在程序中我们需要 重复的执行某条或某些指令,比如控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令,这种代码结构我们叫做 “循环结构”

Python中构造循环结构有两种方式,一种是 for-in 循环,一种是 while 循环


一、for-in 循环

如果 明确的知道循环执行的次数 或者 要对一个容器进行迭代,那么使用 for-in 循环更合适。

Python 的for-in循环 比 C/C++ 中的for循环 更抽象,是 基于 对 容器中的元素 逐个迭代,这个容器可以是有下标的序列(listturplestring),也可以是没有下标的 dict,或者是其他的可迭代对象。

Python 中 for-in 循环的 一般格式

for variable in sequence:
    statements
  • 1
  • 2

就是 把序列sequence中的每个元素代入变量variable中,然后执行语句statements

举个例子

names = ['Bart', 'Lisa', 'Adam']
for name in names:
    print("Hello," + name + "!")

# 输出
# Hello,Bart!
# Hello,Lisa!
# Hello,Adam!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

range()函数

for-in循环 常常配合 range()函数 来使用

range([start,] stop[, step])

Python的内置函数,根据 start与stop指定的范围 以及 step设定的步长,生成一个等差数列的 生成器 (itrator),可以设置递增或者递减。

参数说明:

  • start: 计数 从 start 开始默认从 0 开始。例如 range(5) 等价于range(0, 5);
  • stop: 计数到 stop 结束,但 不包括 stop。例如:range(0,5) 是 [0, 1, 2, 3, 4] 没有5
  • step: 步长,默认为1。例如:range(0,5) 等价于 range(0,5,1)

简单来讲,就是 左闭右开 [ , )

range()的用法 非常灵活

>>> range(10)        # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)     # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)  # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)  # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 倒序
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

for-in循环中range()的常见用法

# 循环10次
for i in range(10):
    ...

# 遍历一个列表
for i in range(len(alist)):
    print(alist[i])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

enumerate()函数

enumerate - Python docs

Python enumerate() 函数 | 菜鸟教程

如果你在遍历序列时,需要同时获取下标和值,可以使用enumerate()函数

for i in range(len(nums)):
	print(i, nums[i])

print("------")

for i, num in enumerate(nums):
	print(i, num)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、while 循环

如果 不知道具体的循环次数,使用while循环更合适。

while循环 通过一个 条件表达式 来控制循环,表达式的值为 True(即条件满足)则循环继续,表达式的值为 False(即条件不满足)则循环结束

Python 中 while 语句的 一般格式

while condition:
    statements
  • 1
  • 2

举个例子

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

特殊用法:无限循环

我们可以通过设置条件表达式永远为 Trule 来实现无限循环,比如:

while True :  # 表达式永远为 true
   num = int(input("输入一个数字  :"))
   print ("你输入的数字是: ", num)
 
print ("Good bye!")
  • 1
  • 2
  • 3
  • 4
  • 5

你可以使用 CTRL+C 来退出当前的无限循环。

无限循环在服务器上客户端的实时请求非常有用。


break 和 continue 语句

break 结束循环

在这里插入图片描述

如果需要 提前结束循环,可以使用 break 语句

break语句可以 跳出当前 for 和 while 的循环体

n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

执行上面的代码可以看到,打印出1~10后,紧接着打印END,程序结束。

continue 跳过当前这次循环

continue 语句可以 跳过当前这次循环,直接开始进行下一次循环

举个例子:

for i in range(0, 11):
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)
  • 1
  • 2
  • 3
  • 4

上面的程序可以打印出1~10中的奇数,1,3,5,7,9。

pass 空语句

Python 中的 pass 是空语句,它 不做任何事情,一般用于 占位,以 保持程序结构的完整性,比如

>>>while True:
...     pass  # 等待键盘中断 (Ctrl+C)
  • 1
  • 2

应用案例

一、猜数字游戏

计算机出一个1~100之间的随机数由人来猜,计算机根据人猜的数字分别给出提示 大一点/小一点/猜对了

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
print('你总共猜了%d次' % counter)
if counter > 7:
    print('你的智商余额明显不足')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

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

素数指的是只能被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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

三、打印如下所示的三角形图案

*
**
***
****
*****
    *
   **
  ***
 ****
*****
    *
   ***
  *****
 *******
*********
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
row = int(input('请输入行数: '))
for i in range(row):
    for _ 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 _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

[参考资料]:

[1] Python3 循环语句 | 菜鸟教程

[2] 循环 - 廖雪峰的官方网站

[3] 循环结构

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/122999
推荐阅读
相关标签
  

闽ICP备14008679号