目录

在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

1、for-in循环

2、while循环

3、break、continue和exit的用法

4、命令提示符的实现:import osprint(os.system('ls'))print(os.system('pwd'))

5、while的嵌套练习以及制表符



在Python中构造循环结构有两种做法,一种是for-in循环,一种是while循环。

1、for-in循环

如果明确的知道循环执行的次数或者要对一个容器进行迭代,那么我们推荐使用for-in循环

比如计算1-100的和:

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

上述例子中:range(101)可以用来构造一个从0到100的取值范围,这就构构造出了一个整数序列

  • range(101)-产生0到100的整数序列。
  • range(1, 100)产生1到99的整数序列。
  • range(1, 100, 2)生成1到99的奇数序列,其中2是步长,即数值序列的增量。

练习1:求最大公约数和最小公倍数
 

a = int(input("请输入第一个数:"))
b = int(input("请输入第二个数:"))
# 方法1:找出两个最小的数
# if a < b:
#     c = a
# else:
#     c = b
#方法2:调用求最小值的函数
c=min(a,b)
for i in range(1, c + 1):
    if a % i == 0 and b % i == 0:
        max = i
    else:
        continue   #当i不能被a,b整除时,则跳出次次循环,进行下一次循环
print("最大公约数为:%d" %max)
min = (a * b) / max
print("最小公倍数为:%d" % min)

练习2、用户输入一个数字,求该数字的阶乘

num=int(input('请输入一个数字:'))
for i in range(1, num):
    num *=i
print(num)

2、while循环——用俩构造不知道循环次数的循环

while 条件满足:
    语句1...
else:
    循环全部完成后 要执行的语句
死循环:当条件永远为真的时候进行死循环

a = random.randint(1,100)  #生成一个1-100之间的随机数

例如:登录系统的设置

i = 0
while i < 3:
    name = input('用户名:')
    passwd = input('密码:')
    if name == 'root' and passwd == 'westos':
        print('登陆成功')
        # 跳出整个循环,不会再执行后面的内容
        break
    else:
        print('登陆失败')
        print('您还剩余%d次机会' %(2-i))
        i += 1

else:
    print('登陆次数超过三次,请等待100s后再次尝试登陆')

3、break、continue和exit的用法

break——跳出整个循环 不会再执行循环后面内容

eg:循环总共3此,当第一次符合条件后,则不进行其余两次循环,这时候就要用到

continue:跳出本次循环,进行下一次循环

continue后面的代码不会执行

exit():结束程序的运行,即使循环外边的程序,也不会执行

4、命令提示符的实现:
import os
print(os.system('ls'))
print(os.system('pwd'))

5、while的嵌套练习以及制表符

\t:制表符,协助我们在输出文本的时候在垂直方向保持对齐
# print('1\t2\t3')
# print('10\t20\t30')

\n:换行符
print('hello\npython')
练习1、输出99乘法表——其实只要记住这个模型,其他的都好办

#用while循环

row = 1
while row <= 9:
    col = 1
    while col <= row:
        # print('%d * %d = %d\t' %(row,col,row*col),end='')
        print(f'{row}*{col}={row*col}',end='\t')
        col += 1
    # 手动换行
    print('') 
    row += 1

#用for循环

for i in range(1,10):
    for j in range(1,i+1):
        print(f'{i}*{j}={i * j}',end='\t')
    print()  #手动换行

练习2、用while输出以下四种图形:
a、
*
**
***
****
方法1:手动换行print('')

row = 1
while row <= 9:
    col = 1
    while col <= row:
        print('*' ,end='')
        col += 1
    # 手动换行(col每循环完毕就进行换行)
    print('')
    row += 1

方法2:
进行嵌套循环
raw=1,先输出第一行,然后col输出1次
raw=2,输出第二行,然后col输出1+1次

raw = 1  #行
col = 1  #列
a = input("请输入字符:")
while raw < 9:
    while col < 9:
        print("%s" % a * col)
        col += 1
    raw += 1

b、
****
***
**
*

方法1:
row = 1
while row <= 9:
    col = 9
    while col > row:
        print('*',end='')
        col -= 1
    # 手动换行(col每循环完毕就进行换行)
    print('')
    row += 1
方法2:
raw = 1  #行
col = 9  #列
a = input("请输入字符:")
"""
进行嵌套循环
raw=1,先输出第一行,然后col输出9次
raw=2,输出第二行,然后col输出9-1次
……
"""
while raw < 9:
    while col > 0:
        print("%s" % a * col)
        col -= 1
    raw += 1

c、 

    *
   ***
  *****
 *******
*********

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