10.循环语句

目录

一、while循环

二、for循环

三、while_else和for_else

四、break、continue、exit()、pass

五、练习

第9课练习参考答案:


循环:事物周而复始的运动或变化。

 点我观看《明日边缘》视频

点我观看《源代码》视频

有很多循环题材的电影,例如上面看到的《明日边缘》《源代码》以及《恐怖邮轮》等,这种题材的电影主角都一开始身陷循环中,然后想方设法找出真想,最终逃出循环。

为了让我们的程序重复执行某些指令,我们就需要用到循环语句。

在Python中的循环语句主要有while循环和for循环。

一、while循环

while循环的基本格式如下:

while 条件表达式:
    条件满足时,需要执行的语句1
    条件满足时,需要执行的语句2
    ……
    条件满足时,需要执行的语句N

敲黑板划重点:while循环的特点是先判断,当条件表达式为真时,再执行循环体内的语句,其执行流程如下图所示。

实例1:输出1到10之间的所有偶数。

number = 1
while number <= 10:
    if number % 2 == 0:
        print(number)
    number += 1

number的初始值为1,while循环中的条件表达式判断number是否还在10以内,如果为真,则执行循环体内的语句。在循环体内,因为我们是要输出所有的偶数,所以需要if语句对每个数进行判断,判断偶数较简单的方法是使该数值与2取余数,如果余数为0(即判定该数为偶数),则输出该数,number+=1的作用是实现从1到10的累加。

如果将number+=1删除会发生什么?

在循环体内number的值将永远为1,且因为number永远为1,number<=10结果将永远为真,从而导致本循环成为死循环(无限循环,就像最开始的电影情节)。

敲黑板划重点*2:每一个循环语句都需要预先设定好退出循环的机制,如上面的number<=10和number+=1形成对循环的控制。在编写循环语句的时候,务必要检查此点。

敲黑板划重点*3:在循环语句中,类似if 语句,同样需要注意冒号和缩进对语句块的控制。

实例2:编写一段程序打印如下图形。

*
**
***
****
*****
******
*******
********
*********

该图形第1行1个*,从第2行开始每行增加一个*,一直到第9行由9个*组成。

代码如下:

n = 1
while n <= 9:
    print("*" * n)
    n += 1

接下来,我们仔细研究这一段代码的执行过程,然后回答三个问题:

问题1:循环体执行了几次?

问题2:结束循环时,n的值是多少?

问题3:n<=9判断了多少次?

n的初始值为1,碰到while,第一次判断n<=9,此时n=1,n<=9为真,进入第一次循环,执行循环体内的语句,输出*,通过n+=1,n的值变为2;然后再次判断n<=9,此时n=2,n<=9为真,进入第二次循环,执行循环体内的语句,输出**;接下来以此类推,当到了第9此循环时,n的值为9,输出*********(9个*),通过n+=1,n的值变为10,第10次判断n<=9,n=10,n<=9为假,结束循环。

你现在可以回答之前提出的三个问题了吗?你的答案是什么?

接下来还有两个值得思考的地方:

问题4:为什么初始要定义n的值?

问题5:如果初始n=0,代码应进行哪些调整?

二、for循环

在python中,for循环可以遍历任何序列,比如列表、字符串。

《白雪公主与七个小矮人》

for循环的基本格式如下:

for 变量 in 序列:
    循环语句

for循环的执行流程:

实例3:输出字符串中的每一个字母(for in string)

name = "Tom"
for word in name:
    print(word)

输出结果:
T
o
m

运行过程:序列为字符串,逐一从name中取出每一个元素存入到word中,遍历完所有元素循环结束。word在退出循环时的值为“m”。

实例4:输出一年四季(for in list)

seasons = ['Spring','Summer','Autumn','Winter']
for season in seasons:
    print(season)

输出结果:
Spring
Summer
Autumn
Winter

运行过程:序列为列表,逐一从seasons中取出每一个元素存入到season中,遍历完所有元素循环结束。season在退出循环时的值为“Winter”

实例五:输出0到5之间的所有整数。

for i in range(6):
    print(i)

输出结果:
0
1
2
3
4
5

range函数用来返回一个数字序列,例如range(6),将得到[0,1,2,3,4,5],range函数的完整格式为[<start缺省时默认为0>,<end>,<step缺省时默认为1>]。例如range(1,10,2)将得到[1,3,5,7,9],即返回从1开始到10结束步长为2的数字序列。但是要记住end应理解为开区间,数字序列的结束不包含end的值。

在本实例中,for i in range(6)等效于for i in [0,1,2,3,4,5],每次循环返回其中的一个值。(注意range(6)每次生成一个值,如果需要得到所有的值,可使用list(range(6))。)

for index,number in enumerate(range(6)):
    print(index,number)

输出结果:
0 0
1 1
2 2
3 3
4 4
5 5

enumerate函数用来返回下标及元素。index获得下标,number获得元素。

words = "hello world"
for index,word in enumerate(words):
    print(index,word)

输出结果:
0 h
1 e
2 l
3 l
4 o
5  
6 w
7 o
8 r
9 l
10 d

三、while_else和for_else

在python中的while循环和for循环还有一种特殊用法,即while_else和for_else。else可表示为循环条件不满足或循环结束时执行的语句。

实例六:计算1到10000所有偶数的和。

number = 1
total = 0
while number <= 10000:
    if number % 2 == 0:
        total += number
    number += 1
else:
    print("1到10000所有偶数的和为%d" % total)
for i in range(1, 5):
    print(i)
else:
    print('The for loop is over')

输出结果:
1
2
3
4
The for loop is over

四、break、continue、exit()、pass

break语句

在循环语句中,如果遇到了break语句,将立即退出当前循环。(当前循环指的是break所属层级的循环,因为有可能出现多层循环嵌套的情况)

start = 5
while start >= 0:
    start -= 1
    if start == 3:
        break
    print(start)
else:
    print("Time is over")
print("I am a survivor.")

结果为:
4
I am a survivor.

将break换成continue,continue的作用是结束本次循环进入下一次循环。

start = 5
while start > 0:
    start = start - 1
    if start == 3:
        continue
    print(start)
else:
    print("Time is over.")
print("I am survive.")

结果为:
4
2
1
0
Time is over.
I am survive.

再将continue换成exit(),exit()的作用是终止整个程序,多用来处理异常。

start = 5
while start > 0:
    start = start - 1
    if start == 3:
        exit()
    print(start)
else:
    print("Time is over")

print("i am survive")

结果为:
4

再将exit()换成pass,pass的作用不做任何事,只做占位。

start = 5
while start > 0:
    start = start - 1
    if start == 3:
        pass
    print(start)
else:
    print("Time is over")

print("I am a survivor.")

结果为:
4
3
2
1
0
Time is over
I am a survivor.

五、练习

1.有一分数序列,2/1、3/2、5/3、8/5、13/8、21/13……,求出这个数列的前20项之和。

2.求1+2!+3!+4!+……+20!的值。

3.将“hello world”用相反顺序打印出来。

4.判断字符串中是否有连续三个英文单词。如:"Hello World hello"的结果为True、"He is 123 man"的结果为False、"1 2 3 4"结果为False、"bla bla bla bla"的结果为True。(提醒:可能需要用到split()、isalpha()、isdigit()等函数)

第9课练习参考答案:

1.一年四季。根据输入的月份输出对应的季节。(输入:3月,输出:春季,输入8月,输出:夏季)(春季:3、4、5月,夏季:6、7、8月,秋季:9、10、11,冬季:12、1、2)

month = input("请输入月份")
if month in ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']:
    if month in ['3月','4月','5月']:
        print("春季")
    elif month in ['6月','7月','8月']:
        print('夏季')
    elif month in ['9月','10月','11月']:
        print('秋季')
    else:
        print('冬季')
else:
    print("请输入正确的月份,格式如11月")

2.三只小熊。三只小熊的年龄分别为6、3、4岁,请编程实现对他们年龄从小到大排序。(bear1_old = 6,bear2_old = 3,bear3_old = 4,输出3、4、6)

# 解决方案一:
bear1_old = 6
bear2_old = 7
bear3_old = 4
if bear1_old > bear2_old:
    if bear2_old < bear3_old:
        if bear3_old < bear1_old:
            print(bear2_old,bear3_old,bear1_old)
        else:
            print(bear2_old,bear1_old,bear3_old)
    else:
        print(bear3_old,bear2_old,bear1_old)
else:
    if bear1_old < bear3_old:
        if bear2_old < bear3_old:
            print(bear1_old,bear2_old,bear3_old)
        else:
            print(bear1_old,bear3_old,bear2_old)
    else:
        print(bear3_old,bear1_old,bear2_old)

# 解决方案二:
bears_old = [bear1_old,bear2_old,bear3_old]
bears_old.sort()
print(bears_old)

3.算数题。已知函数y = \left\{\begin{matrix} x^{2}-1\\ x^{2}+1 \end{matrix}\; \; \right.\begin{matrix} x\leq 2.5\\ x> 2.5 \end{matrix} ,根据输入的x值计算y的值,设计一个程序实现以上算法。

x = float(input("please input x value"))
if x <= 2.5:
    y = x**2 + 1
else:
    y = x**2 - 1
print(y)

4.儿童票。游乐园儿童购票的规定如下:若身高不超过1.1m,则无需购票;若身高超过1.1m但不超过1.4m,可买半票;如果超过1.4m,应买全票,全票价格为298元。设计一个程序实现以上算法。小明和妹妹小青的身高分别为1.3m和0.9m,请问他们去游乐园玩需要付多少钱的门票?

def count_price(height):
    if height <= 1.1:
        discount_price = 0
    elif height > 1.1 and height <= 1.4:
        discount_price = 298 * 0.5
    else:
        discount_price = 298
    return discount_price

summary = 0
for height in [1.3,0.9]:
    price = count_price(height)
    summary += price
print("应付金额为:",summary)

5.体质指数。体质指数 (Body Mass Index,简称BMI),是国际最常用来量度体重与身高比例的工具。它利用身高和体重之间的比例去衡量一个人是否过瘦或过肥。体制指数的计算公示BMI = \frac{Weight(kg)}{Height(m)^{2}}。其中亚裔成年人的体质指数评判标准如下:

BMI<=18.5 过轻

18.5<BMI<=23.9  正常

24<=BMI<=27.9 超重

BMI>=28 肥胖

设计一个程序实现以上算法。

height = float(input('请输入身高'))
weight = float(input('请输入体重'))

bmi = weight / height ** 2

if bmi <= 18.5:
    print(bmi,"体重过轻")
elif bmi > 18.5 and bmi <= 23.9:
    print(bmi,"体重正常")
elif bmi >= 24 and bmi <= 27.9:
    print(bmi,"超重")
else:
    print(bmi,"肥胖")

 

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
在Java,while循环语句是一种常见的循环控制结构,用于重复执行一段代码,直到指定的条件不再满足为止。while循环语句的基本语法如下所示: ``` while (condition) { // 循环体代码 } ``` 其,`condition`是一个布尔表达式,表示循环条件。只要`condition`的值为`true`,就会重复执行循环体代码。当`condition`的值为`false`时,循环就会终止。 下面是一个简单的示例,演示了如何使用while循环语句来计算1到10的整数之和: ``` int sum = 0; int i = 1; while (i <= 10) { sum += i; i++; } System.out.println("1到10的整数之和是:" + sum); ``` 上面的代码,`sum`变量用于存储1到10的整数之和。`i`变量用于控制循环次数,初始值为1。在每次循环,先将`i`加到`sum`,然后将`i`的值加1,直到`i`的值大于10为止。 另外,Java还有一种类似的循环语句叫做do...while循环语句。它的语法与while循环语句有所不同,具体如下: ``` do { // 循环体代码 } while (condition); ``` do...while循环语句先会执行一次循环体代码,然后再判断循环条件是否满足。只要循环条件满足,就会继续执行循环体代码,直到循环条件不再满足为止。 下面是一个简单的示例,演示了如何使用do...while循环语句来输入一个整数,直到输入的值为0为止: ``` Scanner scanner = new Scanner(System.in); int num; do { System.out.print("请输入一个整数(输入0结束):"); num = scanner.nextInt(); } while (num != 0); System.out.println("输入结束。"); ``` 上面的代码,使用Scanner类从控制台读取整数,然后使用do...while循环语句判断输入的值是否为0。只要输入的值不为0,就会继续输入,直到输入的值为0为止。最后输出“输入结束”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胡老师11452

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值