Python基础(循环及流程控制)

Python基础(循环及流程控制)

一,内置函数range()

  • range()函数

    • 用于生成一个整数序列

    • 创建range对象的三种方式

      • range()

      • #range()的三种创建方式
        '''
        第一种创建方式,只有一个参数(小括号中只给了一个数)
        '''
        r=range(10)
        print(r)
        print(list(r)) #用于查看range对象中的参数序列 --List是列表的意思
        

        默认从0开始,默认步长为1,不包括10

        输出:

        range(0, 10)
        [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        

        第二种:

      • '''
        第二种创建方式,给了两个参数(小括号中给了两个参数)
        '''
        r = range(1,10)#代表范围,从1开始,到9,记住,不包括右边
        print(list(r))
        

        输出:

        [1, 2, 3, 4, 5, 6, 7, 8, 9]
        

        第三种:

      • '''
        第三种创建方式,给了三个参数(小括号中给了三个数)
        '''
        r=range(1,10,2)
        print(list(r))
        
        '''
        判断指定的整数在序列中是否存在,in  not in
        '''
        print(10 in r)
        print(9 in r)
        
        print(10 not in r)
        print(9 not in r)
        

        输出:

        [1, 3, 5, 7, 9]
        False
        True
        True
        False
        
    • 返回值是一个迭代器对象

    • range类型的优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素

    • in 与not in 判断整数序列中是否存在(不存在)指定的整数(指这里的序列是整数序列,并不是说in,not in只能用在整数序列)

二,while循环结构

  • 反复做同一件事情的情况,称为循环

  • 循环结构的流程图

  • 循环的分类

    • while
    • for-in
  • 语法结构

    • while 条件表达式

      条件表达式执行体(循环体)

  • 选择结构的if与循环结构while的区别

    • if是判断一次,条件为True执行一行
    • while是判断N+1次,条件为True执行N次
#while资料

a = 10
while a==10:
    print(a)

因为判断条件一直为True,所以会一直循环,一直打印10

a = 1
while a <10:
    print(a)
    a +=1
1
2
3
4
5
6
7
8
9

while循环练习题——1到100之间的偶数和

sum = 0
'''
初始化变量
'''
a= 1
'''
条件判断
'''
while a <=100:
    '''条件执行体(求和)'''
    #条件到判断是否是偶数
    if a % 2 == 0:
        sum+=a
    '''改变变量'''
    a+=1
print('1-到100之间的偶数和',sum)

输出:

1-到100之间的偶数和 2550

三,for-in循环

概念

  • for-in循环

    • in 表达式从(字符串,序列等)中依次取值,又称为遍历
    • for-in遍历的对象必须是可迭代对象
  • for-in的语法结构

    • for 自定义的变量 in 可迭代对象:

      ​ 循环体

  • 循环体内不需要访问自定义变量,可以将自定义变量替代为下划线

for item in 'Python':
    print(item)

输出:

P
y
t
h
o
n

迭代range()

#range() 产生一个整数序列,也是一个可迭代对象
for i in range(10):
    print(i)

输出:

0
1
2
3
4
5
6
7
8
9
  • 特殊情况:

  • #如果在循环提中不需要使用到自定义的变量,可将自定义变量写为“_”
    for _ in range(6):
        print('人生苦短,我用python')
    

    输出:

    人生苦短,我用python
    人生苦短,我用python
    人生苦短,我用python
    人生苦短,我用python
    人生苦短,我用python
    人生苦短,我用python
    

例题:用for循环计算1到100的奇数和

#用for循环计算1到100的奇数的和
sum = 0
for i in range(1,100):
    if not i%2: #(利用了对象的布尔值,0的布尔值为false)
        sum +=i
print('1到100的奇数的和:',sum)

输出:

1到100的奇数的和: 2500

例题:输出100到999之间的水仙花数

'''
    输出100到999之间的水仙花数:
    举例:
    153=3*3*3+5*5*5+1*1*1
    这个数等于各个位置数的三次方和
'''
for item in range(100,1000):
    ge = item%10   #取个位
    shi = item//10%10  #取十位
    bai = item//100 #取百位
    #判断:
    if ge**3+shi**3+bai**3==item:
        print(item)

输出:

153
370
371
407

四,流程控制语句break

  • break语句

    • 用于结束循环结构,通常与分支结构if一起使用
    '''
    从键盘输入密码,最多输入三次,如果正确就结束循环
    '''
    for item in range(3):
        pwd = input('请输入密码:')
        if pwd == '8888':
            print('密码正确')
            break
        else:
            print('密码不正确')
    

    输出:

    请输入密码:1
    密码不正确
    请输入密码:1
    密码不正确
    请输入密码:8888
    密码正确
    

    或者第二次就输入正确:

    请输入密码:2
    密码不正确
    请输入密码:8888
    密码正确
    
  • 用for循环解决

    • a=0
      while a <=3:
          '''条件执行体(循环体)'''
          pwd=input('请输入密码:')
          if pwd == '8888':
              print('密码正确')
              break
          else:
              print('密码不正确')
      

五,流程控制语句continue

  • continue语句
    • 用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用
'''
找出1到50的里面的5的倍数
要求使用continue
'''
print('------不使用continue-----')
for item in range(1,51):
    if item%5==0:
        print(item)

print('-----使用continue----')
for item in range(1,51):
    if item%5!=0:
        continue
    print(item)

输出:

------不使用continue-----
5
10
15
20
25
30
35
40
45
50
-----使用continue----
5
10
15
20
25
30
35
40
45
50

六,else语句

  • else语句

    • 与else语句配合使用的三种情况
      • if: if条件表达式不成立时只需else
      • while: 没有碰到break时执行else
      • for : 没有碰到break时执行else
  • for …else

    • for item in range(3):
          pwd=input('请输入密码:')
          if pwd=='8888':
              print('密码正确')
              break
          else:
              print('密码不正确')
      else:
          print('对不起,三次密码均输入错误')
      
      

      输出:

      请输入密码:8
      密码不正确
      请输入密码:8
      密码不正确
      请输入密码://
      密码不正确
      对不起,三次密码均输入错误
      
  • while…else

    • a=0
      while a <3:
          pwd=input('请输入密码:')
          if pwd=='8888':
              print('密码正确')
              break
          else:
              print('密码不正确')
              '''改变变量
              '''
              a+=1
      else:
          print('对不起,三次输入均错误')
      
      

      输出:

      请输入密码:5
      密码不正确
      请输入密码:6
      密码不正确
      请输入密码:9
      密码不正确
      对不起,三次输入均错误
      

七,嵌套循环

  • 嵌套循环

    • 循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体执行
    • 例如:打印九九乘法表
  • 输出一个三行四列的矩阵

  • '''
    输出一个三行四列的矩阵
    '''
    for i in range(1,4): #行表,执行三次,一次是一行
        for j in range(1,5):  #j : i
            print('*',end='\t') # 不换行输出
        print() #打行
    

    输出:

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

打印九九乘法表

  • 先打印个九阶星星

    • for i in range(1,10):    #控制行
          for j in range(1,i+1):  #控制每行星星数
              print('*',end='\t')
              j+=1
          print()  #打行
      
    • 变成完整的表

      • for i in range(1,10):
            for j in range(1,i+1):
                print(i,'*',j,'=',i*j,end='\t')
                j+=1
            print()
        

        输出:

1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25	
6 * 1 = 6	6 * 2 = 12	6 * 3 = 18	6 * 4 = 24	6 * 5 = 30	6 * 6 = 36	
7 * 1 = 7	7 * 2 = 14	7 * 3 = 21	7 * 4 = 28	7 * 5 = 35	7 * 6 = 42	7 * 7 = 49	
8 * 1 = 8	8 * 2 = 16	8 * 3 = 24	8 * 4 = 32	8 * 5 = 40	8 * 6 = 48	8 * 7 = 56	8 * 8 = 64	
9 * 1 = 9	9 * 2 = 18	9 * 3 = 27	9 * 4 = 36	9 * 5 = 45	9 * 6 = 54	9 * 7 = 63	9 * 8 = 72	9 * 9 = 81	

八,二重循环中的break和continue

二重循环中的break和continu用于控制本层循环

for i in range(5):
    for j in range(1,11):
        if j%2==0:
            break
        print(j)

输出:

1
1
1
1
1

改造

for i in range(5):
    for j in range(1,11):
        if j%2==0:
            continue
        print(j,end='\t')
    print()

输出:

1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9	
1	3	5	7	9	

你可能感兴趣的:(python基础,python,开发语言,后端)