注:本实验来源于 实验楼:python3简明教程 作者: FrostSigh
索引:
项目 | Value |
---|---|
2.1:Fibonacci数列 | print()函数的打印说明 |
2.2:幂级数 | break的练习说明 |
2.3:乘法表 | 嵌套循环的练习 |
2.4:一些打印*号的例子 | while循环的应用练习 |
2.5:列表 | 列表的介绍(切片 操作) |
2.6:for循环 | for循环和range()函数 |
2.7:continue语句 | continue的练习说明 |
2.8:循环后的else语句 | 循环后的else执行情况 |
2.9:棍子游戏 | continue与break的综合练习 |
循环: 2.1 Fibonacci数列
a , b = 0, 1
while b < 100:
print(b)
a, b = b, a + b
运行结果:
实验记录: 默认情况下,print() 除了打印提供的字符串外,还会打印一个换行符。可以通过print()的另一个参数end来替换这个换行符。
while b < 100:
print(b, end = ' ')
(此处用一个空格替换了换行)
2.2 幂级数
计算幂级数:e^x = 1 + x + x^2 / 2! + x^3 / 3! + … + x^n / n! (0 < x < 1)
x = float(input("Enter the value of x: "))
n = term = num = 1
result = 1.0
while n <= 100:
term *= x / n # 累乘,计算x^n / n! :(x * x * ... * x / 1 * 2 * 3 *...* n )
result += term # 累加,计算 1 + x + ... + x^n/n!
n += 1 # 使n递增,利用循环计算每一项
if term < 0.0001: #判断语句,如果x^n / n! 小于0.0001 结束循环
break
print("No. of Times = {} and Sum = {}".format(n, result))
结果:
实验记录: 关键字:break
在if里面使用break,如果break得到执行,那么将终止break所在的这一层循环。
2.3 乘法表
打印10以内的乘法表
i = 1
print("-" * 50) #打印50个 " - "
while i < 11: #外层控制行,
n = 1
while n < 11: #内层控制列,打印每一行
print("{:5d}".format(i * n), end = ' ')
n += 1
print() #每次外层循环打印换行。
i += 1
print("-" * 50)
结果:
实验记录: 运用了嵌套循环。一般是二层循环,外层控制行,内层控制列。
print("-" * 50) #字符串乘上一个整数,将返回由n个字符串拼接起来的新字符串。
2.4 一些打印*号的例子
rows = int(input("Enter the number of rows: "))
n = rows
while n >= 1:
print("*" * n)
n -= 1
print()
n = rows
i = 1
while i <= n:
print("*" * i)
i += 1
print()
n = rows
i = 0
while n >= 1:
print(" " * i + "*" * n)
n -= 1
i += 1
结果:
2.5 列表
列表可想象为一组有序的元素(可以是不同类型)集合,编号从0开始,编号可称为索引。
当索引为负数时,是倒着进行索引。
列表的切片操作:
格式:a[ : : ]
1,切片不会改变正在操作的列表,返回的是子列表。
2,切片的索引:第一个默认为0,第二个索引默认为切片的字符串的大小。(python中有关下标的集合都满足左闭右开原则,像a[0:5]其索引值为0,1,2,3,4类似于数学中的**[0,5)**)
3,过大的索引值将被列表的实际长度所代替。
4,切片操作还可以设置步长,第三个索引值,默认为1.
5,列表允许修改。可以向列表中增添,删改元素
6,通过内建函数len(),可以返回列表的长度
7,列表允许嵌套。
2.6 for 循环
这里的for循环遍历任何序列(如列表和字符串)中的每一个元素。
range()函数:
格式:range(x, x, x)
如果你需要一个数值序列,range()函数会生成一个等差数列(同样满足左开右闭)。如:
for i in range(1, 9, 2):
print(i, end = ' ')
2.7 continue语句
如同break,在循环中使用continue,会跳过其后的代码回到循环开始处执行。(可以帮助我们跳过部分循环)
例:要求用户输入一个整数,如果输入的是负数,要求再次输入;如果输入的是正数,计算其平方。用户输入0来跳出循环。
while True:
n = int(input("Please input a number , and Enter '0' to quit!: "))
if n < 0:
continue
elif n == 0:
break
print("Square is : "n ** 2)
print("Goodbye!")
结果:
实验记录:
continue 与 break的运用,前者执行时,跳过其后语句,回到循环开始;
后者执行时,跳过整个循环,继续循环后的语句。
2.8 循环的else语句
可以在循环后面使用可选的else语句。它会在循环完毕后执行,除非有break语句终止了循环,else才不会执行。
2.9 棍子游戏
一个游戏,对continue和break做练习。
这是一个非常简单的游戏。这里有21根棍子,首先用户选1到4根,然后电脑选1到4根棍子。谁选到最后一根棍子谁就输了。(用户没有赢得机会)
这里的特别说明给出了答案(用户和电脑一次选的总数只能是5!!,一共21根,每一轮选走的棍子只能是5,那最后一根一定是用户选的!!!)
sticks = 21
print("There are 21 sticks, you can take 1-4 numbers of stick at a time")
print("Whoever will take the last stick will loose!")
while True:
print("sticks left: ", sticks)
sticks_taken = int(input("Take sticks(1-4): "))
if sticks == 1:
print("You took the last stick, you lose!")
break
if sticks_taken >= 5 or sticks_taken <= 0:
print("Wrong choice!")
continue
print("Computer took: ", (5 - sticks_taken))
sticks -= 5