python——循环(for循环、while循环)及练习

目标程序的三大流程

1.while 循环的基本使用2.break 和 continue3.while 循环嵌套123

在程序开发中,一共有三种流程方式:

顺序:从上向下,顺序执行代码分支:根据条件判断,决定执行代码的分支循环:让特定代码重复执行(解决程序员重复工作)123

一、for循环

1、基本用法

for 循环使用的语法:

“”"
for 变量 in range(10):
循环需要执行的代码
else:
循环结束时,需要执行的代码
“”"

for i in range(5):print(i)12

range的用法:

“”"
range(stop): 0~stop-1
range(start,stop): start~stop-1
range(start,stop,step): start~stop step(步长)
“”"
测试:

>>> range(5)[0, 1, 2, 3, 4]>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(1,11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>>> range(1,11,2)        ##取出奇数[1, 3, 5, 7, 9]>>> range(0,11,2)        ##取出偶数[0, 2, 4, 6, 8, 10]>>>1234567891011

2、练习:

(1)分别求1~100内偶数之和
sum = 0for i in range(2,101,2):    sum += iprint(sum)1234
(2)求1~100之间所有奇数之和
sum1 = 0for i in range(1,101,2):    sum1 += iprint(sum1)1234
(3)求阶乘
# 求阶乘num = int(input('请输入一个数字:'))res = 1for i in range(1, num + 1):   res*=iprint('%d的阶乘为:%d' %(num,res))123456
(4)有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数
sum = 0for i in (1,2,3,4):    for j in (1,2,3,4):            for k in (1,2,3,4):                        if i != j and j!= k and i != k:                                        sum += 1print('共有%d种组合' %sum)1234567
(5)有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数
for x in range(1,5):    for y in range(1,5):        for z in range(1,5):                if (x!=y) and (y!=z) and (z!=x):                        print("%d%d%d" % (x, y, z))12345
优化后
i = 0for x in range(1,5):    for y in range(1,5):        for z in range(1,5):                if (x!=y) and (y!=z) and (z!=x):                    i += 1                    if i%4:                        print("%d%d%d" % (x, y, z), end=" | ")                    else:                        print("%d%d%d" % (x, y, z))12345678910
(6)实现命令行提示符
  1. break:跳出整个循环,不会再执行循环后续的内容

  2. continue:跳出本次循环,continue后面的代码不再执行,但是还是会继续循环

  3. exit():结束程序的运行

    import os
    for i in range(1000):
    cmd = input(’[kiosk@test ~]$ ')
    if cmd:
    if cmd == ‘exit’:
    break
    else:
    print(‘run %s’ %(cmd))
    os.system(cmd)
    else:
    continue

(7)9*9乘法表
for i in range(1,10):    for j in range(1,i+1):            print('%d * %d = %d\t' %(i,j,i*j),end='')    print()1234
(8)用户登录管理系统

用户登录需求:
1.输入用户名和密码;
2.判断用户名和密码是否正确(name=‘root’,passwd=‘westos’)
3.登录仅有三次机会,超过3次会报错

for i in range(3):    user = input('请输入用户名:')    passwd = input('请输入密码:')        if user=='root' and passwd == 'westos':                print('%s用户登录成功' %user)                break        else:                print('密码错误,请重新输入密码,您还剩%d次机会' %(2-i))else:    print('超过三次,登录失败')12345678910
(9)求最大公约数和最小公倍数

输入两个数值:
求两个数的最大公约数和最小公倍数
最小公倍数=(num1 * num2) / 最大公约数

# 输入两个数字num1=int(input('Num1:'))num2=int(input('Num2:')) # 找出两个数中的较小者min_num = min(num1,num2) # 确定最大公约数for i in range(1,min_num+1):        if num1 % i ==0 and num2 % i ==0:                max_commer = i# 求最小公倍数min_commer =int(num1 * num2)/max_commer print('%s 和 %s 的最大公约数为%s' %(num1,num2,max_commer))print('%s 和 %s 的最小公倍数为%s' %(num1,num2,min_commer))12345678910111213

二、While循环

循环的作用就是让指定的代码重复的执行,while 循环最常用的应用场景就是让执行的代码按照指定的次数重复执行

while 条件():        条件满足时,做的事情1        条件满足时,做的事情2    ......1234
1、基本用法
# 定义一个整数变量,记录循环的次数i=1# 开始循环while i <= 3:    # 希望循环内执行的代码        print('hello python')        # 处理计数器    i+=112345678
2、死循环
while True:    print('hello python')12
3、求1~100之间数字的和
# 定义记录循环次数的变量i = 0# 定义结果变量result = 0while i <= 100:        result+=i        # 处理计数器        i+=1# 输出结果print('1~100之间的数字之和为:%d' %result)12345678910
4、用户登录管理
trycount = 0while trycount < 3:    name = input('用户名:')    passwd = input('密码:')    if name == 'root' and passwd == 'westos':        print('登录成功')        break    else:        print('登录失败')        print('您还剩余%d次机会' %(2 - trycount))        trycount += 1else:    print('登录次数超过三次,请稍后登录')1234567891011121314
5、while 循环嵌套

while 里面还有 while

1.在控制台连续输出五行*,每一行星号的数量依次递增2.完成 5 行内容的简单输出分析每行内部的*应该如何处理输出****** ***** *******12345678

如下:
第一种:

# 1.控制行    for i in range(6):        # 2.控制*的数量        for j in range(6):            if i > j :                print("*",end='')        print(" ")1234567

第二种

i =1while i <= 5:    j = 1    while j <= (5 - i):        print(" ",end='')        j += 1    while (j >(5-i) and j <= 5):        print("*",end='')        j += 1    print()    i += 1   1234567891011
如果想要星星倒过来呢

第三种:

# 1.控制行for i in range(6):    # 2.控制*的数量    for j in range(6):        if i < j :            print("*",end='')    print(" ")1234567

第四种:

i = 1while i <= 5:    j = 1    while j < i:        print(" ",end='')        j += 1    while j >= i and j <= 5:        print("*",end='')        j += 1    print()    i += 11234567891011
6、猜数字游戏

猜数字游戏:
1.系统随机生成一个1~100的数字;
2.用户共有5次机会猜;
3.如果用户猜测数字大于系统给出的数字,打印"too big"
4.如果用户猜测数字小于系统给出的数字,打印"too small"
5.如果用户猜测的数字等于系统给出的数字,打印"恭喜中奖",并退出循环

import randomnum = random.randint(1,100)print(num)i = 1while i <= 5:    ans = int(input("请猜数:"))    if ans > num:        print("too big,还剩%d次机会"%(5-i))    elif ans < num:        print("too small,还剩%d次机会"%(5-i))    else:        print("恭喜中奖!!!")        break    i += 112345678910111213141516
(0)

相关推荐