循环控制

1 while语句

  • 语法:
while 条件表达式:
      代码块
else:
      代码块
  • 执行流程(运行规则):
    • while 后表达式为True 时,执行while后语句块
    • while后表达式为False时,执行else后语句块

2 循环套嵌

  • 语法:
while 表达式:
       while 表达式:
             代码块
       else 表达式:
            代码块
       代码块 
elsefor 变量 in 循环规则:
          for 变量 in 循环规则:
              代码块
     代码块
     

3 for循环

  • 语法:
 for 变量 in 序列(遍历规则):
     代码块
  • 注意:
    - for循环代码块会执行多次,序列中有几个元素就执行几次。每次执行一次就将序列中的一个元素赋值给变量。所以我们可以通过变量来获取列表中的元素

4 range(start,stop[,step])

参数说明:

  • start: 计数从start开始,默认为0,为0时可忽略,如range(4)等价于range(0,4)
  • stop: 计数到stop结束,但不包括stop,为必填项,例如:range(4)是[0,1,2,3],没有5
  • step: 步长,默认为1,为1时可忽略。例如:range(4)等价于[0,5,1]

5 break和continue

  • break 可以用来立刻跳出循环语句,包括elif和else,结束循环
  • continue用来跳过当前循环,包括elif 和else,进行下一轮循环

练习

  • 求最小公因数和最大公因数
a,b = eval(input("请输入两个数,用逗号隔开\n"))
i=0
y=0
if a>b:
   a,b=b,a
for x in range(2,a+1):                   #求最小公因数
        if a%x==0 and b%x==0:
            y=x
            print("a,b的最小公因数为:", y)
            break

if y!=0:                                 #求最大公因数
    for y in range(x, a + 1):
        if a%y== 0 and b % y == 0:
           max1=y
    print("a,b的最大公因数为:", y)
else:
    print("%d,%d没有公因数"%(a,b))
'''
运行结果:
请输入两个数,用逗号隔开
100,10
a,b的最小公因数为: 2
a,b的最大公因数为: 10
'''
  • 求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 or x==z or y==z:
                    continue
                else:
                    print("%d%d%d"%(x,y,z),end=" ")
'''
运行结果:
123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432               
'''
  • 输入行数居中打印星
row = int(input("请输入打印列数:\n"))
i = 1
# while i<=row:
for i in range (1,row+1):
    j=1
    while j<2*row-i:
        print(" ",end="")
        j+=1
    for i in range(1,2*i):
        print("*",end="")
    print(end="\n")

'''
运行结果:
请输入打印列数:
6
          *
         ***
        *****
       *******
      *********
     ***********
'''
  • 输入行数末行顶格,其余居中打印星
row = int(input("请输入打印列数:\n"))
i = 1
# while i<=row:
for i in range (1,row+1):
    j=1
    while j<=row-i:
        print(" ",end=" ")
        j+=1

    for i in range(1,2*i):
        print("*",end=" ")
    print(end="\n")

'''
输出结果:
5
        *
      * * * 
    * * * * * 
  * * * * * * * 
* * * * * * * * * 
'''
  • 输入行数倒立居中打印星
row = int(input("请输入打印列数:\n"))
i = 1
while i<=row:
    j=1
    while j< i:
        print(" ",end="")
        j+=1
    j=1

     while j<2*(row-i+1):
          print("*",end="")
          j+=1
     print(end="\n")
    i+=1
'''
输出结果:
请输入打印列数:
8
***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值