Day4-循环结构
重复一件相同的事情,就是循环。
Python 中有for-in循环,以及while循环
for-in循环
如果知道循环执行的次数或要对一个容器进行迭代(不理解?什么是迭代,更新换代?)。
""" 用for循环实现1-100求和 sum = 0 for x in range(101): sum += x print(sum) """
range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。range(1, 101, 2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。range(100, 0, -2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
""" 用for循环实现1-100之间的偶数求和 第一种方法 sum = 0 for x in range(2,101,2): sum += x print(sum) 第二种方法 sum = 0 for x in range(1,101): if x % 2==0: sum += x print(sum) """
while循环
如果不知道具体循环次数,推荐使用while循环。while循环通过一个bool值来控制循环。true则继续循环。false则停止循环。
""" 猜数字游戏 import random answer = random.randint(1, 100)#随机数产生的方法 couter = 0 while True: couter += 1 number = int(input("请输入:")) if number < answer: print("小了") elif number > answer: print("大了") else: print("答对了") break print("你总共猜了%d次" % couter) if couter > 7: print("智商余额不足!") """
break关键字为终止循环,只能终止他所在的那个循环
continue,用来放弃本次循环。直接进入下一轮循环。
""" 输出乘法口诀表 for i in range(1,10): for j in range (1,i+1): print("%d*%d=%d" % (i, j, i * j), end = "\t") print() """
练习
练习1:输入一个正整数判断是不是素数。
提示:素数指的是只能被1和自身整除的大于1的整数。
""" 判断素数 """ from math import sqrt num = int(input("请输入一个数")) #end = int(sqrt(num)) is_prime = True#先假设num是素数 for i in range(2, num): if num % i == 0: is_prime = False#num不是素数 break if is_prime and num != 1: print("%d是素数" % num) else: print("%d不是素数" % num)
练习2:输入两个正整数,计算它们的最大公约数和最小公倍数。
提示:两个数的最大公约数是两个数的公共因子中最大的那个数;两个数的最小公倍数则是能够同时被两个数整除的最小的那个数。
""" 练习2:输入两个正整数,计算他的最大公约数和最小公倍数 提示:两个数的最大公约数是两个数的公共因子中最大的那个数, 两个数的最小公倍数则是能够同时被两个数整除的最小的那个数 x = int(input("x=")) y = int(input("y=")) #如果x大于y,就交换x和y的值 if x > y: #通过下面的操作,将y值赋值给x,x值赋值给y x, y = y, x #从两个数中较小的数开始做递减的循环 for i in range(x, 0, -1): if x % i == 0 and y % i ==0: print("%d和%d的最大公约数是%d" % (x, y, i)) print("%d和%d的最小公倍数是%d" % (x, y, x * y // i))#//表示整数除法 break """
练习3:打印如下所示的三角形图案。
* ** *** **** ***** user = int(input("请输入行数")) star = "*" for i in range(user): for _ in range(i+1): print(star, end=" ") print()
* ** *** **** ***** user = int(input("请输入行数:")) for i in range(user): for j in range(user): if j < user - i - 1: print(" ", end=" ") else: print("*", end=" ") print()
* *** ***** ******* ********* user = int(input("输入行数:")) for i in range(user): for j in range(user-i): print(" ", end=" ") for k in range(2*i +1): print("*",end=" ") print()
浙公网安备 33010602011771号