Python的循环结构 for-in while
循环结构循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。for-in循环如果明确的知道循环执行的次数或者要对一个容器进行迭代,推荐使用for-in循环,例如下面代码中计算1~100求和的结果。sum=0for i in range(101):sum+=iprint(sum)说明:上面代码中的range(101
循环结构
循环结构就是程序中控制某条或某些指令重复执行的结构。在Python中构造循环结构有两种做法,一种是for-in
循环,一种是while
循环。
for-in循环
如果明确的知道循环执行的次数或者要对一个容器进行迭代,推荐使用for-in
循环,例如下面代码中计算1~100求和的结果。
sum=0
for i in range(101):
sum+=i
print(sum)
说明:上面代码中的
range(101)
可以用来构造一个从1到100的范围,当我们把这样一个范围放到for-in
循环中,就可以通过前面的循环变量x
依次取出从1到100的整数。
range
的用法
- range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。
- range(1, 101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
- range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
- range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
故计算1~100中偶数和的结果,如下:
sum=0
for i in range(2,101,2):
sum+=i
print(sum)
while循环
如果要构造不知道具体循环次数的循环结构,推荐使用while
循环。while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
则继续循环;表达式的值为False
则结束循环。
下面我们通过一个“猜数字”的小游戏来看看如何使用while
循环。
猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。
import random
answer=random.randint(1,100)
counter=0
while True:
counter +=1
num=int(input("请输入:"))
if num>answer:
print("小一点")
elif num<answer:
print("大一点")
else:
print("猜对了!")
break
print(f'你一共猜了{counter}次')
说明:上面程序中用了random.randint(1,100),产生1-99随机的整数
循环也可嵌套。如输出一个九九乘法表
for i in range(10):
for j in range(1,i+1):
print(f'{j}*{i}={i*j}')
练习1:输入一个正整数判断是不是素数。
提示:素数指的是只能被1和自身整除的大于1的整数。
num=int(input("请输入一个整数:"))
if num<=1:
print("输入错误!")
flag=True
for i in range(2,num):
if num%i==0:
flag=False
break
if flag:
print(f'{num}是素数')
else:
print(f'{num}不是素数')
练习2:输入两个正整数,计算它们的最大公约数和最小公倍数。
提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。辗转相减法:先比较两数字大小,得出大的数和小的数;第二步:大数=大数-小数(大数此时已经更新了);第三步:再次比较两数字大小,得出大的数和小的数;第四步:大数=大数-小数;……;直至结果相减结果为0时结束,此时的两数字已经相等,这时的数字即是最大公约数。最小公倍数=原数字相乘/最大公因数。
x=int(input("x="))
y=int(input("y="))
a=x
b=y
while True:
if x==y:
break;
elif x>y:
x=x-y
else:
y=y-x;
print(f'最大公约数为:{x},最小公倍数为:{a*b/x}')
练习3:打印如下所示的三角形图案。
注意:使用print()函数想要不换行,需要在后面注明end="",否则默认换行。
n=5
for i in range(n):
for j in range(i+1):
print('*',end="")
print()
print()
for i in range(n):
for j in range(n):
if j<n-i-1:
print(" ",end="")
else:
print("*",end="")
print()
print()
for i in range(n):
for j in range(2*n):
if j<n-i-1:
print(" ",end="")
elif j>n+i-1:
print(" ", end="")
else:
print("*",end="")
print()
更多Python框架梳理,请参考: 【Python学习】Python最全总结
有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。
更多推荐
所有评论(0)