当前位置: 首页 > news >正文

python笔记III--流程控制语句

一、条件判断语句(if语句)

1、if语句

(1)语法:

if 条件表达式 :
          代码块


(2)执行的流程:

  if语句在执行时,会先对条件表达式进行求值判断,
  ②如果为True,则执行if后的语句
  ③如果为False,则不执行


  注意:默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
  则可以在if后跟着一个代码块。


(3)代码块:代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
   > 代码块就是一种为代码分组的机制
   > 如果要编写代码块,语句就不能紧随在 : 后边,而是要写在下一行
   > 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束。

(4)缩进有两种方式:一种是使用tab键,一种是使用空格(四个)
  ①Python的官方文档中推荐我们使用空格来缩进
  ②Python代码中使用的缩进方式必须统一
  > 在subline中preference->settings中输入 "translate_tabs_to_spaces": true,   可以将Tab键变为四个缩进。

  注意:可以使用逻辑运算符来连接多个条件,
   ①如果希望所有条件同时满足,则需要使用and
   ②如果希望只要有一个条件满足即可,则需要使用or

if num > 10 and num < 20 :
    print('num比10大,num比20小!')

if 10 < num < 20 :
    print('num比10大,num比20小!')

 2、input()函数:该函数用来获取用户的输入

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

注意:input()的返回值是一个字符串。input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示。

3、if-else语句

(1)语法:

if 条件表达式 :
      代码块
else :
      代码块

(2)执行流程:

  if-else语句在执行时,先对if后的条件表达式进行求值判断
      ①如果为True,则执行if后的代码块
      ②如果为False,则执行else后的代码块

4、if-elif-else语句

(1)语法:

  if 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
  else :
      代码块

(2)执行流程:

  I. if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
      ①如果表达式的结果为True,则执行当前代码块,然后语句结束
      ②如果表达式的结果为False,则继续向下判断,直到找到True为止
      ③如果所有的表达式都是False,则执行else后的代码块
  II. if-elif-else中只会有一个代码块会执行

练习:

# 练习5:
#     大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
#         高:180cm以上; 富:1000万以上; 帅:500以上;
#         如果这三个条件同时满足,则:'我一定要嫁给他'
#         如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
#         如果三个条件都不满足,则:'不嫁!'

# 获取用户的三个数据,身高、财富、颜值
height = float(input('请输入你的身高(厘米):'))
money = float(input('请输入你的财富(万):'))
face = float(input('请输入你的颜值(平方厘米):'))

# 判断到底嫁不嫁
# 如果这三个条件同时满足,则:'我一定要嫁给他'
if height > 180 and money > 1000 and face > 500 :
    print('我一定要嫁给他!')
# 如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
elif height > 180 or money > 1000 or face > 500 :
    print('嫁吧,比上不足,比下有余。')
# 如果三个条件都不满足,则:'不嫁!'
else :
    print('不嫁!')

二、循环语句:循环语句可以使指定的代码块重复指定的次数

1、while循环

(1)语法:

  while 条件表达式 :
      代码块
  else :
      代码块

(2)执行流程:

  I. while语句在执行时,会先对while后的条件表达式进行求值判断,
      ①如果判断结果为True,则执行循环体(代码块),
      ②循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
  II.直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块

 (3)条件表达式:用来设置循环执行的条件。

注意:条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!

# while True :
#     print('hello')

例:创建一个执行十次的循环

# 创建一个执行十次的循环
i = 0
while i < 10 :
    i += 1
    print(i,'hello')
else :
    print('else中的代码块')

(4)循环嵌套:外层循环每执行一次,内存循环就要执行一圈

例:

# *****
# ****
# ***
# **
# *
i = 0
while i < 5:
    j = 0
    while j < i + 1:
        print("* ",end='')
        j += 1
    print()
    i += 1

(5)break 和 continue

  ① break可以用来立即退出循环语句(包括else)

  ② continue可以用来跳过当次循环

  ③ break 和 continue 都是只对离他最近的循环起作用

例:

# 创建一个5次的循环
i = 0
while i < 5:
    if i == 3:
        break
    print(i)
    i += 1
else :
    print('循环结束')

    如上,代码输出结果为0 1 2 循环结束,因为当i等于3时执行break语句立即退出循环语句,循环结束。

i = 0
while i < 5:
    i += 1
    if i == 2:
        continue
    print(i)
else :
    print('循环结束')

    如上,代码输出结果为 1 3 4 5 循环结束,当i等于2时执行continue语句跳过当次循环,所以输出结果没有2,循环结束。

2、for循环

(1)可以一次遍历打印字符串中的每个元素

(2)不管是单层列表还是多层的嵌套列表,都可以遍历打印出来

语法:

 for 变量 in 序列 :
       代码块

注意:

   for循环的代码块会执行多次,序列中有几个元素就会执行几次。每执行一次就会将序列中的一个元素赋值给变量,所以我们可以通过变量,来获取列表中的元素。

(3)使用keys()、values()、items(),可以分别遍历字典的键、值和键值对。需要注意的是遍历字典默认是遍历字典的键

for i in d.keys():  # 遍历字典的键
    print(i)

(4)通过range()可以创建一个执行指定次数的for循环

for i in range(30):
    print(i)

 (5)for语句中还可以再使用for语句

 (6)for()循环除了创建方式以外,其余的都和while一样, 包括else、包括break continue都可以在for循环中使用,并且for循环使用也更加简单。

相关文章:

  • Java如何提高代码效率
  • docker修改挂载目录
  • JVM类加载器
  • 路由引入基本概念
  • centos安装Nginx
  • 学习笔记18--自动驾驶智能化指标评测体系(上)
  • 《Mycat分布式数据库架构》之配置详解
  • springboot bean找不到问题
  • [河北银行 2022 CTF]
  • 通过数据库建表实战来理解数据库知识
  • 200A FS3L200R10W3S7FB11 EasyPACK 950V IGBT模块
  • 微信小程序知识点汇总
  • 用于标记和纯化的325143-98-4,Biotin-SS-Sulfo-NHS ester生物素化 试剂
  • 多御安全浏览器全新chromium95内核全面兼容
  • opencv图像滤波
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • C++类中的特殊成员函数
  • C学习-枚举(九)
  • JavaScript新鲜事·第5期
  • Js基础——数据类型之Null和Undefined
  • js如何打印object对象
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • python大佬养成计划----difflib模块
  • react-native 安卓真机环境搭建
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 彻底搞懂浏览器Event-loop
  • 规范化安全开发 KOA 手脚架
  • 技术:超级实用的电脑小技巧
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 新版博客前端前瞻
  • 1.Ext JS 建立web开发工程
  • raise 与 raise ... from 的区别
  • zabbix3.2监控linux磁盘IO
  • ​iOS实时查看App运行日志
  • #android不同版本废弃api,新api。
  • #Java第九次作业--输入输出流和文件操作
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • ( 10 )MySQL中的外键
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)创业的注意事项
  • .bashrc在哪里,alias妙用
  • .libPaths()设置包加载目录
  • .Net Core和.Net Standard直观理解
  • .NET delegate 委托 、 Event 事件
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net的C#语言取月份数值对应的MonthName值
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [BZOJ3211]:花神游历各国(小清新线段树)