1.循环结构之while语句
注意:相同缩进量的语句在一起组成一个语句块。如果缩进不正确,会导致错误!
【例】累加
sum=0
n=99
while n>0:
sum=sum+n
n=n-2
print(sum)
运行结果:2500
【例】求斐波那契数列
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,……第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
n1=0
n2=1
count=2
nterms=int(input("斐波那契数列,你要几项:"))
print(n1,",",n2,end=", ")
while count
nth=n1+n2
print(nth,end=" , ")
#更新值
n1=n2
n2=nth
count+= 1
【例】输出以下图案:
i=1
while i<6:
j=0
while j
print("* ",end=' ')
j+=1;
print("\n")
i+=1
【例】构造一个1, 3, 5, 7, ..., 99的列表
L = []
n = 1
while n <= 99:
L.append(n)
n= n + 2
print(L)
更简洁的代码见列表生成式
L =[i for i in range(1, 100, 2)]
print(L)
2.循环结构之for……in语句
注意:相同缩进量的语句在一起组成一个语句块。如果缩进不正确,会导致错误!
for……in……循环
for 变量名字 in 范围(序列)
……
【例】输出列表中的元素
names=['Michael',"Bob",'Tracy',"小明"]
for name in names:
print(name,end='\t')
也可以利用索引(下标)输出列表中的元素
names=['Michael',"Bob",'Tracy',"小明"]
n=len(names)
for i in range(n):
print(names[i],end='\t')
运行结果相同
【例】累加1+2+3+……+100
sum=0
for i in range(1,101):
sum+=i
print(sum)
print(i)
运行结果:
5050
100
【例】累加100以内的奇数和,即1+3+5+7+……+99
sum=0
for i in range(1,101,2):
sum+=i
print(sum)
print(i)
运行结果:
2500
99
【例】随机产生十个-5~9之间的整数,并求它们的和
import random#导入random模块
sum=0
for i in range(10):
j=random.randint(-5,9)#使用random模块的randint()函数来生成随机数
print(j,end=',')
sum+=j
print('\n'f"sum={sum}")
【例】找出1000以内的所有完数
一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
from math import sqrt
n = int(input('输入一个数字:'))
sum = n*-1
k = int(sqrt(n))
for i in range(1,k+1):
if n%i == 0:
sum += n/i
sum += i
if sum == n:
print('YES')
else:
print('NO')
【例】
for letter in 'Python':#遍历'Python'这一个字符串
print('当前字母',letter)
fruits=["banana","apple","mango"]
for index in range(len(fruits)):#通过索引遍历列表中的三个字符串
print("当前水果:",fruits[index])
print(fruits)#输出完整序列
for shuiguo in fruits:#另一个方法循环遍历列表中的三个字符串
print("当前水果:",shuiguo)
print(shuiguo)
print(fruits)
【例】二维列表双重循环
a=[]
for i in range(2):
a.append([])
for j in range(2):
v=int(input("请输入元素:"))
a[i].append(v)
print(a)
【例】打印九九乘法表(左下角形式)
for i in range(1,10):
for j in range(1,i+1):
print(f"{j}×{i}={i*j}",end="\t")#一种格式化输出
print(" ")
或者:
for i in range(1,10):
for j in range(1,i+1):
print("%d*%d=%-3d"%(i,j,i*j),end="\t")#传统格式化输出
print(" ")
【例】打印九九乘法表(左上角形式)
for i in range(1,10):
for j in range(i,10):
print(f"{i}×{j}={i*j}",end="\t")#
print(" ")
【例】把九九乘法表的每个式子的结果存放到二维列表中,然后输出九九乘法表
list1=[[i*j for j in range(i,10)] for i in range(1,10)]
for i in range(9):
print(list1[i])
print("\n")
for i in range(1,10):
for j in range(i,10):
print(f"{i}×{j}={list1[i-1][j-i]}",end="\t")#print(" ")
也可以写成如下代码:
list1=[[i*j for j in range(i,10)] for i in range(1,10)]
for i in range(9):
print(list1[i])
print("\n")
for i in range(9):
for j in range(0,9-i):
print(f"{i+1}×{i+1+j}={list1[i][j]}",end="\t")#print("")
运行结果同上。