20201120 流程控制

在这里插入图片描述

条件判断语句

• 执行的流程:
	•  if语句在执行时,会先对条件表达式进行求值判断,
		•  如果为True,则执行if后的语句
		•  如果为False,则不执行
•  语法:
	if  条件表达式:: 
		代码块
	•  代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
	•  代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
	•  代码块就是一种为代码分组的机制

input() 函数

•  该函数用来获取用户的输入
•   input()调用后,程序会立即暂停,等待用户输入
•  用户输入完内容以后,点击回车程序才会继续向下执行
•  用户输入完成以后,其所输入的的内容会以返回值得形式返回

if-else语句

•  语法:
	if 条件表达式 :
       代码块1
  	else :
       代码块2
•  执行流程:
	• if-else语句在执行时,先对if后的条件表达式进行求值判断
		• 如果为True,则执行if后的代码块1
		• 如果为False,则执行else后的代码块2

if-elif-else 语句

• 语法
	if 条件表达式 :
    	代码块1
  	elif 条件表达式 :
    	代码块2
  	elif 条件表达式 :
     	代码块3
   	........
  	else :
      	代码块n
• 示例
	value = 30000
	if value >= 30000:
	    print('有钱任性')
	elif value >= 20000:
	    print('有钱真好')
	elif value >= 10000:
	    print('哥也月薪上万了')
	elif value >= 5000:
	    print('工资还说的过去')
	elif value >= 2000:
	    print('能养活自己了')
• 执行流程:
	•   if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
		•  如果表达式的结果为True,则执行当前代码块1,然后语句结束
		•  如果表达式的结果为False,则继续向下判断,直到找到True为止
		•  如果所有的表达式都是False,则执行else后的代码块n
• 总结: if-elif-else中只会有一个代码块会执行

循环控制

while语句

	•  循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
	•  语法:
  while 条件表达式 :
      代码块1
  else:
      代码块2
• break和continue
	• break 可以用来立即退出循环语句,包括else语句
	• continue 用来跳过当次循环

• 示例代码1:

#100以内的数求和
i=1
Total=0
while i<=100:
    Total+=+i
    i+=1
print(Total)

• 结果:

	5050

• 示例代码2:

i=0
while i<5:
    i+= 1
    print('*'*i)

• 结果:

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

• 示例代码3:

# 九九乘法表
i=0
while i<9:
    i+=1
    j=0
    while j<i:
        j+=1
        print(f'{i}X{j}={i*j}',end='\t')
    print()

• 结果:

	1X1=1	
	2X1=2	2X2=4	
	3X1=3	3X2=6	3X3=9	
	4X1=4	4X2=8	4X3=12	4X4=16	
	5X1=5	5X2=10	5X3=15	5X4=20	5X5=25	
	6X1=6	6X2=12	6X3=18	6X4=24	6X5=30	6X6=36	
	7X1=7	7X2=14	7X3=21	7X4=28	7X5=35	7X6=42	7X7=49	
	8X1=8	8X2=16	8X3=24	8X4=32	8X5=40	8X6=48	8X7=56	8X8=64	
	9X1=9	9X2=18	9X3=27	9X4=36	9X5=45	9X6=54	9X7=63	9X8=72	9X9=81	

• 示例代码4:continue的使用

i=0
while i<10:
    i += 1
    if i==3:
        continue  #continue中断此次循环,跳到循环开始位置,所以要提前自增变量,否则死循环
    print(i)

• 结果:3未输出

	1
	2
	4
	5
	6
	7
	8
	9
	10

• 示例代码5:break使用

i=0
while i<10:
    i += 1
    if i==3:
        break  #break中止循环
    print(i)

• 结果:从3循环中止

	1
	2

for循环遍历

• for循环
	• 通过for循环来遍历列表
• 语法1
	for 变量 in 序列 #(遍历的规则):
    	代码块
• 语法2:else中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行
	for 变量 in 序列 #(遍历的规则):
    	代码块1
   	else:
   		代码块2
• 注意: for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
	range(start, stop[, step])
	参数说明
	•  左闭右开
	•  start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
	•  stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
	•  step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

• 示例代码6:对比示例2,语句更少。

for i in range(1,6):
    print('*'*i)

• 结果:

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

• 示例代码7:

#100以内的质数
n=100
list=[2]
for i in range(2,n):
    if i%2!=0:      #偶数不是质数
        for j in range(2,i):
            if i%j==0 :
                break
        else:
            list.append(i)
for l in list:
    print(l,end=',')
print(f'\n{n}以内的质数有{len(list)}个')

• 结果:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,
100以内的质数有25

• 示例代码6:

# 求1000以内所有的水仙花数
# 某三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。
for i in range(1,10):
    for j in range(0,10):
        for k in range(0,10):
            if i**3+j**3+k**3==i*100+j*10+k:
                print(i*100+j*10+k)

• 结果:

	153
	370
	371
	407

• 示例代码7:综合使用while\for\if\break\continue等知识点

#  猜拳游戏:
# • 出拳  玩家:手动输入  电脑:随机输入
# • 判断输赢:  玩家获胜  电脑获胜  平局
import random  #引入随机数包
while True:
    myInput = int(float(input('请出拳1(石头)2(剪刀)3(布)0(停止游戏):')))
    npcInput = random.randint(1, 3)
    dic={1:'石头',2:'剪刀',3:'布'}
    if myInput > 3:
        print('输入错误,请重新输入!!\n')
        continue        #退出本次循环,进入下一次循环
    if myInput == 0:
        print(f'游戏停止!')
        break           #终止循环
    elif myInput == npcInput:
        print(f'你是{dic[myInput]},',end='')
        print(f'对方是{dic[npcInput]},平局!\n')
    elif  myInput == 3 and npcInput == 1:       #3()赢1(石头)
        print(f'你是{dic[myInput]},',end='')
        print(f'对方是{dic[npcInput]},你赢了!\n')
    elif myInput == 1 and npcInput == 3:        #3()赢1(石头)
        print(f'你是{dic[myInput]},',end='')
        print(f'对方是{dic[npcInput]},你输了!\n')
    elif myInput > npcInput:                    #谁小谁赢
        print(f'你是{dic[myInput]},',end='')
        print(f'对方是{dic[npcInput]},你输了!\n')
    else:
        print(f'你是{dic[myInput]},',end='')
        print(f'对方是{dic[npcInput]},你赢了!\n')

• 结果:

请出拳1(石头)2(剪刀)3()0(停止游戏)>? 1
你是石头,对方是剪刀,你赢了!
请出拳1(石头)2(剪刀)3()0(停止游戏)>? 2
你是剪刀,对方是石头,你输了!
请出拳1(石头)2(剪刀)3()0(停止游戏)>? 3
你是布,对方是剪刀,你输了!
请出拳1(石头)2(剪刀)3()0(停止游戏)>? 4
输入错误,请重新输入!!
请出拳1(石头)2(剪刀)3()0(停止游戏)>? 0
游戏停止!

补充知识点:

•随机数模块:random

import random
print( random.randint(1,10) )        # 产生 110 的一个整数型随机数
print( random.random() )             # 产生 01 之间的随机浮点数
print( random.uniform(1.1,5.4) )     # 产生  1.15.4 之间的随机浮点数,区间可以不是整数
print( random.choice('tomorrow') )   # 从序列中随机选取一个元素
print( random.randrange(1,100,2) )   # 生成从1100的间隔为2的随机整数
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print('源列表:\t\t',list)
random.shuffle(list)		# 打乱排序,无返回值
print('随机新列表:\t',list)
print random.sample('zyxwvutsrqponmlkjihgfedcba',5)# 多个字符中生成指定数量的随机字符:

• 结果:

2
0.2648661614446267
3.7243855310150646
r
73
源列表:		 [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
随机新列表:	 [6, 3, 1, 2, 4, 5, 9, 0, 7, 8]
['j', 'p', 'm', 'y', 'a']
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值