前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python——循环(for循环、while循环)及练习

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

作者头像
用户7886150
修改2021-01-22 14:22:50
修改2021-01-22 14:22:50
5.4K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python while循环

目标程序的三大流程 

1.while 循环的基本使用        

2.break 和 continue        

3.while 循环嵌套

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

顺序:从上向下,顺序执行代码        

分支:根据条件判断,决定执行代码的分支        

循环:让特定代码重复执行(解决程序员重复工作)

一、for循环 

1、基本用法 

for 循环使用的语法: 

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

for i in range(5):

    print(i)

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]

>>>

2、练习: 

(1)分别求1~100内偶数之和 

sum = 0

for i in range(2,101,2):

    sum += i

print(sum)

(2)求1~100之间所有奇数之和 

sum1 = 0

for i in range(1,101,2):

    sum1 += i

print(sum1)

(3)求阶乘 

# 求阶乘

num = int(input('请输入一个数字:'))

res = 1

for i in range(1, num + 1):   

    res*=i

print('%d的阶乘为:%d' %(num,res))

(4)有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数 

sum = 0

for 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 += 1

print('共有%d种组合' %sum)

(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))

优化后 

i = 0

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):

                    i += 1

                    if i%4:

                        print("%d%d%d" % (x, y, z), end=" | ")

                    else:

                        print("%d%d%d" % (x, y, z))

(6)实现命令行提示符 

 break:跳出整个循环,不会再执行循环后续的内容  continue:跳出本次循环,continue后面的代码不再执行,但是还是会继续循环  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()

(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('超过三次,登录失败')

(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))

二、While循环 

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

while 条件():    

    条件满足时,做的事情1    

    条件满足时,做的事情2

    ......

1、基本用法 

# 定义一个整数变量,记录循环的次数

i=1

# 开始循环

while i <= 3:    

# 希望循环内执行的代码    

    print('hello python')    

    # 处理计数器

    i+=1

2、死循环 

while True:

    print('hello python')

3、求1~100之间数字的和 

# 定义记录循环次数的变量

i = 0

# 定义结果变量

result = 0

while i <= 100:    

    result+=i    

    # 处理计数器    

    i+=1

# 输出结果

print('1~100之间的数字之和为:%d' %result)

4、用户登录管理 

trycount = 0

while trycount < 3:

    name = input('用户名:')

    passwd = input('密码:')

    if name == 'root' and passwd == 'westos':

        print('登录成功')

        break

    else:

        print('登录失败')

        print('您还剩余%d次机会' %(2 - trycount))

        trycount += 1

else:

    print('登录次数超过三次,请稍后登录')

5、while 循环嵌套 

while 里面还有 while 

1.在控制台连续输出五行*,每一行星号的数量依次递增    

2.完成 5 行内容的简单输出    分析每行内部的*应该如何处理

输出

*

**

*** 

***** 

*******

如下: 第一种: 

# 1.控制行

    for i in range(6):

        # 2.控制*的数量

        for j in range(6):

            if i > j :

                print("*",end='')

        print(" ")

 第二种 

i =1

while 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   

如果想要星星倒过来呢 

第三种: 

# 1.控制行

for i in range(6):

    # 2.控制*的数量

    for j in range(6):

        if i < j :

            print("*",end='')

    print(" ")

 第四种: 

i = 1

while i <= 5:

    j = 1

    while j < i:

        print(" ",end='')

        j += 1

    while j >= i and j <= 5:

        print("*",end='')

        j += 1

    print()

    i += 1

6、猜数字游戏 

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

import random

num = random.randint(1,100)

print(num)

i = 1

while 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 += 1

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档