循环结构

  循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。根据判断条件,循环结构又可细分为以下两种形式:先判断后执行的循环结构和先执行后判断的循环结构。

  Python 中的循环语句有 for while

任务:爱理财的小明

随着“理财时代”的到来,小明意识到理财的必要性,稳妥起见,他选择的银行定期存款。小明积攒多年的1万块压岁钱,如果存1年定期(利率3.25%),自动转存,5年后存款总额是多少?来帮小明算一下吧。

完善计算算式,然后运行程序,帮助小明计算出5年后有多少存款

#输入本金
money = float(input("请输入你的本金:"))
#输入利率
rate = float(input("请输入年利率:"))
#输入存款年限
year = float(input("请输入存款年限:"))

#计算存款总额,请填入算式
money = 

#输出总额
print("存入",year,"年后,一共可得",money)

列表

  在Python中,列表(List)是一种有序、可变的数据类型,被广泛用于存储和处理多个元素。

新建

  创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:

# 空列表
empty_list = []

# 包含元素的列表
int_list = [2,4,5,6,8]
float_list = [3.0,3.14,100.1,99.999]
colors = ['RED','GREEN','BLUE','YELLOW']
bools = [True,False,True,True,False]
list1 = ['red', 'green', 'blue', 'yellow', 'white', 'black']

访问

  访问列表的元素(引用),列表索引从 0 开始,第二个索引是 1,依此类推。通过索引可以对列表进行读取、修改、删除等操作。

>>>colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
>>>print(colors[0])				#输出列表第1个元素的值
	red
>>>print(colors[1])
	green

>>>colors[1] = 2001				#修改列表第2个元素的值
>>>print(colors)
	['red', 2001, 'blue', 'yellow', 'white', 'black']

>>>del colors[2]				#删除列表第3个元素
>>>print(colors)
	['red', 2001, 'yellow', 'white', 'black']

>>>colors.append('grey')		#在列表末尾增加一个元素
>>>print(colors)
	['red', 2001, 'yellow', 'white', 'black', 'grey']

For循环

  for 循环是 Python 中最常用的循环语句之一,可以遍历任何序列,如一个列表或者一个字符串。基本语法为:

for 变量 in 序列:
    语句块1

  for循环运行的流程图

样例:用for循环逐个输出列表的元素

colors = ['red', 'green', 'blue', 'yellow', 'white', 'black']
for i in colors:
	print(colors[i])

运行结果:

red

green

blue

yellow

white

black

任务一:求浮动利率存款总额

  已知5年间每年利率依次为:3.25%、3%、3%、2%、1.75%。请帮助小明计算一下他的压岁钱50000元,5年到期后存款总额是多少。

完善以下代码后提交给老师

money=									#本金50000元
rate=									#利率列表
for
										#计算每年存款总额
print('5年以后存款总额:',money,'元')		#输出结果

Range函数

  range是python中的一个内置函数,用于生成一系列连续的整数,创建一个整数列表,一般用在 for 循环中。

  函数语法

range(start, stop[, step])

  参数说明:

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(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)
[]

样例:使用range函数,用for循环输出1-10所有的数

#思考:为什么range函数从1开始,11结束
for i in range(1,11):
	print(i)

任务二:求1-n之和

  输入一个数n,计算从1+2+3+……+n的合。将程序保存好后提交给老师。

拓展任务

  1. 求1-n之间所有偶数的和。

  2. 求1-n之间所有3的倍数的数字之和。

任务:猜数游戏

请将if语句的条件补充完整,运行程序让你的同桌猜一下数。

print("这是一个猜数游戏,请猜一个1~100的整数,我会告诉你偏大还是偏小")

a = 25							#设定答案
s = input()
b = int(s)
if    :							#补充条件
    print("猜对了!")
if    :							#补充条件
    print("猜的数字太大了")
if    :							#补充条件
    print("猜的数字太小了")

While循环

  while 循环用于循环执行一组语句,直到条件不满足时停止执行。基本语法为:

while 条件:
    语句块1

  while 循环的流程图

样例:用while输出数字0-9

i = 0
while i<10:				#请注意循环条件
    print(i)
    i = i + 1			#在循环内部修改循环条件

注意:使用while循环的时候要在循环的内部修改循环条件相关变量,否则会成为死循环。可以使用 CTRL+C 来退出无限循环。

运行结果:

0

1

2

3

4

5

6

7

8

9

任务三:优化猜数游戏

使用while语句优化猜数游戏,不用每次都重新运行,直到用户猜对自动退出。将程序保存好后提交给老师。

拓展任务

  1. 小明用存了5年的前购买了10万元一年期收益率3·7%的银行保证收益型理财产品。每年理财赎回后,他会提取x元(键盘输入)用作生活所需,余下资金仍购买此种理财。在收益率不变的情况下,多少年后资金被全部取出?

  2. 国王赏麦:传说从前有个叫舍罕的印度国王,因为他的宰相达依耳发明了国际象棋,打算予以奖赏一番。国王问宰相想要什么,宰相对国王说:‘ 陛下,请您在这个棋盘的第一个格子里赏给我 1 粒麦子,在第二个格子里给 2 粒,第三个给 4 粒,以后每一个格子都比前一个多 1 倍,请您将这个棋盘上的 64 个格子全部摆满。’ 请问国王需要拿出多少麦粒?

拓展知识

for循环的完全体

  当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码,如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句。

for 变量 in 序列:
    语句块1
else:
    语句块2

样例程序:

for x in range(6):
	print(x)
else:
	print("Finally finished!")
print("out of for loop")

运行结果:

0

1

2

3

4

5

Finally finished!

out of for loop

列表截取与拼接

有列表

L=['Google', 'Runoob', 'Taobao']

截取:

Python 表达式

结果

描述

L[2]

'Taobao'

读取第三个元素

L[-2]

'Runoob'

从右侧开始读取倒数第二个元素: count from the right

L[1:]

['Runoob', 'Taobao']

输出从第二个元素开始后的所有元素

>>> L=['Google', 'Runoob', 'Taobao']
>>> L[2]
'Taobao'
>>> L[-2]
'Runoob'
>>> L[1:]
['Runoob', 'Taobao']
>>>

拼接:

>>> squares = [1, 4, 9, 16, 25]
>>> squares += [36, 49, 64, 81, 100]
>>> squares
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>

更多列表操作,参见:Python3 列表 | 菜鸟教程

九九乘法表

print('打印乘法表')
for i in range(1,10):  
	 for j in range(1,i+1):
	   	print('%d*%d=%d'%(j,i,i*j),end='\t')
	 print('')