02 python基础之流程控制语句

流程控制语句

程序是由语句构成,而流程控制语句 是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。

其流程控制方式有

  • 顺序结构
  • 分支结构
  • 循环结构

这里最简单最常用的就是顺序结构,即语句从上至下一一执行。

print("程序开始了")
print("程序进行中") # 从上到下依次执行
print("程序结束了") # 从上到下依次执行

1、分支语句

顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。

1.1、单分支语句

在这里插入图片描述

语法:

'''
if 表达式:
    代码块
'''    

user = input("用户名>>")
pwd = input("密码>>")
if user == "root" and pwd == "123":  # 返回一个布尔值
    print("登录成功")  # 强烈建议使用四个缩进

print("程序结束")

说明:

1、“表达式”可以是一个单一的值或者复杂语句,形式不限,但解释器最后会通过bool获取一个True或者False的布尔值

2、“代码块”由:与具由相同缩进标识的若干条语句组成(一般是四个缩进)。

1.2、双分支语句

双分支语句顾名思义,二条分支二选一执行!

语法格式:

'''
if 表达式:
    代码块 1
else:
    代码块 2
'''
user = input("用户名>>")
pwd = input("密码>>")

if user == "root" and pwd == "123":  # 返回一个布尔值
    print("登录成功")  # 强烈建议使用四个缩进
	print("祝贺你")
else:
    print("登录失败")
    print("不好意思")
1.3、多分支语句

多分支即从比双分支更多的分支选择一支执行。

语法格式:

'''
if 表达式 1:
    代码块 1
elif 表达式 2:
    代码块 2
elif 表达式 3:
    代码块 3
...# 其它elif语句
else:
    代码块 n
'''  


score = input("请输入您的成绩>>")  # "100"
# 当成绩大于90的时候显示优秀,否则显示一般
# 将数字字符串,比如"100",转换成一个整型数字的时候,需要int转换
score = int(score)  # 100

if score > 100 or score < 0:
    print("您的输入有误!")
elif score > 90:
    print("成绩优秀")
elif score > 70:  # else if
    print("成绩良好")
elif score > 60:
    print("成绩及格")
else:
    print("成绩不及格")
1.4、if 嵌套
score = input("请输入您的成绩>>")  # "100"

if score.isdigit():		# 字符串(score变量)是否都是数字,if True,then继续执行下面的代码。
    score = int(score)  # 100
    if score > 100 or score < 0:
        print("您的输入有误!")
    elif score > 90:
        print("成绩优秀")
    elif score > 70:  # else if
        print("成绩良好")
    elif score > 60:
        print("成绩及格")
    else:
        print("成绩不及格")
else:
    print("请输入一个数字")

2、循环语句

在不少实际问题中有许多具有规律性的重复操作,在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体。决定循环的终止条件是能否继续重复。

Python语言中的循环语句支持 while循环(条件循环)和for循环(遍历循环)。

2.1、while循环

语法:

'''  
while 表达式:
    循环体
'''    

(1)无限循环
# 案例1
while 1:
    print("OK")  # 无限循环打印OK,这样使用没有什么意义
(2)限定次数循环

循环打印十遍"hello world"

count = 0  			# 初始化语句
while count < 10: 	# 条件判断
    print("hello world")
    count+=1  		# 步进语句
print("end")
2.2、for循环

for 循环的语法格式如下:

'''  
for 迭代变量 in 字符串|列表|元组|字典|集合:
    代码块
'''   

格式中,迭代变量用于存放从序列类型变量中读取出来的元素,所以一般不会在循环中对迭代变量手动赋值;代码块指的是具有相同缩进格式的多行代码(和 while 一样),由于和循环结构联用,因此代码块又称为循环体。

for i in "hello world":
    print(i)
    
for name in ["张三",'李四',"王五"]:
    print(name)
    
for i in range(10): # [0,1,2,3,4,5,6,7,8,9] range函数: range(start,end,step)
    print(i)			# 0 1 2 3.....9
2.3、退出循环

如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。

  • break

当 break 关键字用于 for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足某个条件时便跳出循环,继续执行循环语句下面的代码。

  • continue

不同于break退出整个循环,continue指的是退出当次循环。

while 1:
    num = int(input("num>>"))
    for i in range(1, num + 1):
        # if i > 100:
        if i == 6:
            # break
            continue
        print(i)

配合debug模式理解

2.4、循环与分支嵌套
# 案例2
while 1:
    score = input("请输入您的成绩>>")  # "100"

    if score.isdigit():		# 字符串(score变量)是否都是数字,if True,then继续执行下面的代码。
        score = int(score)  # 100
        if score > 100 or score < 0:
            print("您的输入有误!")
        elif score > 90:
            print("成绩优秀")
        elif score > 70:  # else if
            print("成绩良好")
        elif score > 60:
            print("成绩及格")
        else:
            print("成绩不及格")
    else:
        print("请输入一个数字")

3、练习题

1、求偶数元素的和[1,2,1,2,3,3,6,5,8]  

2、写代码:计算 1 - 2 + 3 - 4 + ... + 99 中除了88以外所有数的总和?

3、求1+2!+3!+4!+……+10!的和.

4、'''
程序随机内置一个位于一定范围内的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜测结果:太大了、太小了或者猜对了,直到用户猜对结果或者猜测次数用完导致失败。
设定一个理想数字比如:66,
让用户三次机会猜数字,如果比66大,则显示猜测的结果大了;
如果比66小,则显示猜测的结果小了;
只有等于66,显示猜测结果正确,退出循环。
最多三次都没有猜测正确,退出循环,并显示‘都没猜对,继续努力’。
'''

5、斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
计算索引为10的斐波那契数列对应的值

6、打印菱形小星星
     *
    ***
   *****
  *******
 *********
***********
***********
 *********
  *******
   *****
    ***
     *

案例1:实现完整的猜数字游戏

  • 规则如下:

    • 可以不间断的进行猜数字游戏环节,找到猜对了,结束程序,猜不对,可以不断的进行游戏,并且需要提示用户猜打了还是猜小了。
    • 拓展功能实现:
      • 1.最后需要统计出,用户猜了多少次才猜对。
      • 2.每一个用户的初始分数为100,每猜错一次扣5分,最后程序结束,统计用户的得分
 score = 100 	# 用户初始的分值
 count = 0 		# 用来记录猜的次数
 # 写出大致的框架,然后补充细节
 guess_num = 15  # 提供了一个让用户猜的数字
 # 让用户去猜(实现和用户进行交互)
 # input就是一个工具:获取用户从键盘上录入数据
 while 1: 		# 死循环:没有结束的循环
     count += 1 		# count = count + 1,使得猜的次数增加一个1
     num = input('enter you guess num:')
     num = int(num) 		# 类型转换,将字符串的num转成数据类型的num
     # 判断:guess_num和num是否一样
     if guess_num == num:	#猜对了
         print('猜对了,您一共猜的次数为:',count)
         print('最终得分为:',score)
         break #结束循环
     elif guess_num < num:	#猜大了
         print('猜大了')
         score -= 5
     else:			#猜小了
         print('猜小了') 	#至此一局游戏结束
         score -= 5
 

案例2:算法实现

  • 规则如下:有三个变量a,b,c,其值均为自然数,其中a2+b2=c2且a+b+c=1000,求出满足要求a,b,c的所有组合。
 for a in range(1001): 		#a的取值就是0-1000
     for b in range(1001):	#b的取值就是0-1000
         c = 1000 - a - b 	#得到了c的取值
         if a + b + c == 1000 and a**2 + b**2 == c**2:
             print(a,b,c)

案例3:算法实现

  • 找寻出列表中存储元素的最大值,且将其移动到列表最后的位置
 alist = [2,8,61,7,6]
 # 如何找寻出列表中最大元素的值?需要两两元素比较
 for i in range(len(alist)-1):#range(4)==>[0,1,2,3]
     if alist[i] > alist[i+1]:
         # 两个元素交换位置
         alist[i],alist[i+1] = alist[i+1],alist[i]
 print(alist)
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值