python基础07_循环语句:while和for

本文介绍了Python中的循环结构,包括while循环的使用,如计算数列和、控制循环的break和continue函数,以及for循环的基础和应用,如随机数生成和双层for循环实现加法表。通过示例展示了如何在Python中有效地控制和操作循环。
摘要由CSDN通过智能技术生成

Python的循环语法

学习到此,看到循环两字,脑里不由的就跳出一堆成语,由始至终,有始有终,周而复始……无外乎,讲的就是一个重复的概念,当某个事件需要你用同一种方式去进行多次时,就要用到循环。

所谓,日复一日,年复一年,有谁能够每天都有不一样的明天呢?

while循环语句

while循环语句的语法格式比较简单,在设定条件判断的基础上选择循环或者是结束循环。

实现也非常容易,基本格式为:

while 条件
	语句1
    语句2
    ……

条件判断为真,则执行语句1、语句2……,再继续判断条件,为真继续执行语句1、语句2,

直至条件判断为假时结束循环。

可根据图示理解:

在这里插入图片描述

示例:

  1. 分别打印1-100的整数
i = 0
while i < 100 :
    i += 1
    print(i)

运行结果:略。

此例中利用变量i,通过循环每次加1,然后打印结果。

  1. 计算1-100的整数的和,即1+2+3+…+99+100=?
i = 0
s = 0
while i < 100 :
    i += 1
    s += i
    
print(s)

运行结果:

5050
  1. 计算1-100的整数加奇减偶的值,即1-2+3-4+5…-98+99-100=?
i = 0
s = 0
while i < 100 :
    i += 1
    # 判断i是奇数还是偶数,奇数加,偶数减
    if i % 2 == 0:
        s = s - i
    else:
        s = s + i
print(s)
可以控制while循环的两个函数
  • break :终止当前循环
  • continue :从contnue的位置处中止循环,重新开始循环

两个函数可以控制循环停止,但用途不一样,而且必须位于循环内。

图示理解

在这里插入图片描述

示例:计算1-100间的所有整数相加的和,即,2+4+6+…+98+100=?

i = 0
s = 0
while i < 100 :
    i = i + 1
    # 判断i是奇数还是偶数,偶数就累加,不是偶数则重新循环
    if i % 2 != 0:  # 条件改为 i % 2 == 0,则计算奇数和
        continue  # 不满足相加条件,中止本次循环后重新开始
    else:
        s = s + i

print(s)

运行结果:

2550

仅用于演示continue的功能,程序本身是可以写的更简单的。

break 的使用类似。

一个好的程序员就是能把腐朽变为神奇,所以这些东西怎么用仁者见仁智者见智。

  • 由于while循环是靠条件真假来决定是否循环的,所以用来做死循环是比较方便的,只要让条件恒为真即可,恒为真你可以用True,或者其他。

for循环语句

再来看看Python的另一种循环结构for循环:

for循环与while有很大的不同,虽然在某种程度上它们都可以实现相同的效果,但在我看来while更像一名勇士,春蚕到死丝方尽,但while更容易死不罢休,而for就更理智一些,在可设定范围内来尽力去做。

所以for循环的语法格式是这样的:

for 变量 in 可迭代对象:
	需要循环的语句

把可迭代对象里的东西逐一的,也就是一个一个的,挨个的,给这里设定的变量赋值,

直到每一个都搞一遍后结束。

可迭代对象,大概指的就是像字符串、列表、元组、字典、集合等这样的东西。精确而又比较通俗的定义暂时还不知道,有些东西还没学习所以不好解释。网上大概搜索了一下基本上都和一个___iter__的什么方法有关,这里暂时就不管了。

举个简单的示例,说明一下for循环的语法格式

# 建立可迭代对象,这里选字符串,因为比较简单
iter_str = '0123456789' #字符串里有十个字符

# 利用for循环把每一个字符打印出来
for i in iter_str:  # 循环的次数与iter_str的长度有关,数一数应该是10次
    print(i)  #每次打印一个字符
    
# 最后的运行的结果不难想象,就是分别打出0、1、2、……、8、9十个字符

运行的流程大概是这样的:

在这里插入图片描述

流程非常简洁,这就是一个可控的循环。

如果仅仅是控制循环的次数,有一个函数可以配合for使用

range(start, end, step)

  • 如果括号里只有一个数字的,range(3):表示循环3次,

for i range(3):中i的值分别取:0、1、2,不能取到3

  • 如果用两个参数,range(3,5):表示循环次数5-3为2次

for i range(3, 5):中i 的取值分别是:3、4,同样取不到5

  • 如果用三个参数,range(3, 10, 2):最后一个参数即步长,即走几步取一次值。这里就是每隔1个数取一次值,i 的取值分别是:3、5、7、9

示例:

# 这是一个随机数抽取示例,大概的目的就是在0~9十个数码里随机抽取三个,组成一个三位数

# 需要用到随机数,所以要用到random模块
import random

# 建立可迭代对象,这里选字符串,因为比较简单
iter_str = '0123456789' #字符串里恰好就包含我需要的十个数码

#再建一个空字符串用来拼接单个字符
numb_str = ''

#因为我要在iter_str里随机取三个位置上的字符,所以需要循环3次,用range()控制
for i in range(3):
    # 字符串里随机取值用ramdon.choice()
    p = random.choice(iter_str)
    # 每得到1个随机值就拼接一次字符串
    numb_str = numb_str + p
    
print(numb_str)

连续运行三次的结果:

889

401

382

这个示例里边使用的是字符串拼接得到三位数,这个三位数其实是str型数据。如果要int型,在循环完成后可以转换。

双层for循环

由内外两层for循环构成,基本语法形式:

for i in rang()
	for j in rang()
    	循环执行语句

这种循环结构,的示例:

打印一个加法表:用外层循环控制行数,内层循环控制列数

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{j}+{i}={i+j},\t', end = '')  #end = ''表示print后不换行
    print() #换行

运行结果:

1+1=2,
1+2=3,  2+2=4,
1+3=4,  2+3=5,  3+3=6,
1+4=5,  2+4=6,  3+4=7,  4+4=8,
1+5=6,  2+5=7,  3+5=8,  4+5=9,  5+5=10,
1+6=7,  2+6=8,  3+6=9,  4+6=10, 5+6=11, 6+6=12,
1+7=8,  2+7=9,  3+7=10, 4+7=11, 5+7=12, 6+7=13, 7+7=14,
1+8=9,  2+8=10, 3+8=11, 4+8=12, 5+8=13, 6+8=14, 7+8=15, 8+8=16,
1+9=10, 2+9=11, 3+9=12, 4+9=13, 5+9=14, 6+9=15, 7+9=16, 8+9=17, 9+9=18,

如果在print(f'{j}+{i}={i+j},\t', end = '')制表符\t前加个空格,就会大变样,感兴趣的可以试试,哈哈……

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值