python系列4—循环结构

循环结构

应用场景:当我们在编写代码时,如果有一个需求是输出10次"hello world",这时候我们可以直接写十次print("hello world")。但是当我们需要些十万次"hello world"呢?肯定不会直接写十万行print("hello world")。这时候我们就需要用到循环语句了。

python中的循环语句分为两种语法:

  • for…in
  • while…

循环的条件:

  1. 初始值
  2. 控制条件(循环结束的条件)
  3. 步长

一、for…in循环

如果知道要迭代的次数或者要对某一个迭代器对象进行循环,这时候就可以使用for循环。

"""
用for循环实现1~10求和

Version: 0.1
Author: 柚子
"""

sum = 0
for x in range(10):
    sum += x
print(sum)

说明:range(1, 101)可以用来构造一个从1到100的范围数据,通过x对所有的数据进行循环取出,依次进行叠加。

附录: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:1~100之间的偶数求和
"""
用for循环实现1~100之间的偶数求和

Version: 0.1
Author: 柚子
"""

sum = 0
for x in range(2, 101, 2):
    sum += x
print(sum)
练习2:使用for循环判断1000以内的水仙花数
"""
水仙花数:个位数的3次方加十位数的3次方加百位数的3次方等于该数本身。

Version: 0.1
Author: 柚子
"""
for i in range(100,1000):
    gewei = str(i)[2]
    shiwei = str(i)[1]
    baiwei = str(i)[0]
    if int(gewei)**3+int(shiwei)**3+int(baiwei)**3==i:
        print(i)

二、while循环

如果要构造的循环不知道具体要循环的次数,这时候可以使用while循环进行控制。无限循环一般使用while Truewhile 1

语法格式:

"""
由初始值,结束条件,步长三部分组成
"""
num = 0
while num<10:
	num+=1

练习1:根据用户输入的金额输出可以买的西瓜的个数

"""
每个西瓜10元钱,每买一个西瓜,减去10元钱

Version: 0.1
Author: 柚子
"""
money = int(input('请输入金额:'))
while money >= 10:
    print('买一个西瓜')
    money -= 10
    print('剩余', money, '元')

三、break和continue

break用于终止循环,continue用于终止本次循环,继续进行下次循环,终止的都是最近的循环。

看代码分析区别

for i in range(5):
	if i==2:
		break
	print(i)
	
for i in range(5):
	if i==2:
		continue
	print(i)
练习1:猜数字游戏

random模块用于生成随机数,使用请参考random模块详解

"""
猜数字游戏:
	先随机生成一个数字,然后用户开始猜,每次给用户一个提示大或者小了。
	
Version: 0.1
Author: 柚子
"""
import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('请输入: '))
    if number < answer:
        print('大一点')
    elif number > answer:
        print('小一点')
    else:
        print('恭喜你猜对了!')
        break
print('你总共猜了%d次' % counter)
if counter > 7:
    print('你的智商余额明显不足')
练习2:猜拳游戏

在案例中使用了列表的语法,可以试用下标对列表取值。format是python的字符串格式化输出语法,字符串中用{}站位,后边跟上.format()

"""
猜拳游戏:
	系统随机生成0,1,2分别代表拳,剪刀,布。
	
Version: 0.1
Author: 柚子
"""

import random

num = 1
ying_num = 0
shu_num = 0
while num <= 3:
    if shu_num == 2 or ying_num == 2:
        break
    user = int(input('请出拳 0(石头) 1(剪刀) 2(布)'))
    if user > 2:
        print('不能出大于2的值')
    else:
        data = ['石头', '剪刀', '布']
        com = random.randint(0, 1)
        print("您出的是{},电脑出的是{}".format(data[user], data[com]))
        if user == com:
            print('平局')
        elif (user == 0 and com == 1) or (user == 1 and com == 2) or (user == 2 and com == 0):
            print('你赢了')
            ying_num += 1
        else:
            print('你输了')
            shu_num += 1       
    num += 1

和分支结构一样,循环结构也可以进行嵌套使用:

练习3:输出乘法口诀表
"""
使用双重循环生成99乘法表

Version: 0.1
Author: 柚子
"""
for i in range(1,10):
    for j in range(1,i+1):
        print(j,"*",i,"=",i*j,end="  ")
    print()

四、for…else和while…else…的用法

当for和else连用或者while和else连用时。如果循环遇到break结束时,就会执行else中的语句。

示 例1:
"""
此时没有break,else就会执行

Version: 0.1
Author: 柚子
"""
for i in range(5):
    print(i)
else:
    print("else")
示 例2:
"""
此时执行了break,else就会执行

Version: 0.1
Author: 柚子
"""
for i in range(5):
    print(i)
    break
else:
    print("else")
练习1:判断2-100的质数
"""
只能被1和它本身整除的数为质数

Version: 0.1
Author: 柚子
"""
for i in range(2,100):
    for j in range(2,i):
        if i%j==0:
            break
    else:
        print(i)
练习2:打印三角形图案
*
**
***
****
*****
   *
   **
  ***
 ****
*****
    *
   ***
  *****
 *******
*********
答案:
"""
打印三角形图案

Version: 0.1
Author: 柚子
"""

row = int(input('请输入行数: '))
for i in range(row):
    for _ in range(i + 1):
        print('*', end='')
    print()


for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(' ', end='')
        else:
            print('*', end='')
    print()

for i in range(row):
    for _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print()

猜你喜欢

转载自blog.csdn.net/qq_42486675/article/details/106591520