【Python】循环语句(while,for)、运算符、字符串格式化

news2024/9/20 18:36:08

一、while循环

Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。

其基本形式为:

while 判断条件(condition):
      执行语句(statements)

执行语句可以是单个语句或语句块。判断条件可以是任何表达式;任何非零、或非空(null)的值均为true。

执行流程图如下:

1、实例

跳出循环

  • 通常如果while后跟的条件是恒等式,则容易出现死循环,项目中是不允许死循环出现的,解决方案是要么条件不要恒等式,要么在循环中添加某种判断条件进行中断

  • 下面这个案例是通过添加外部变量counts来在循环中进行控制的 当其值超过等于3的时候 就不再运行循环了 避免死循环的产生

counts = 0
while 1 > 0:
    print("ok")
    counts = counts + 1
    if counts == 3:
        print("程序运行三次后退出")
        break
#break用来跳出循环,不再执行后续的命令

无限while循环写法;

 while True:
     print(True)
 while 1:
     print(1)
name = 'abc'
 while name:
     print(name)
你可以这样理解,因为它们的条件为true,是恒等式,所以它们会一只执行下去;

范围内的条件的while循环

num = 0
while num <= 10:
    print(num)
    num += 2  # 等同于 num = num + 1
先定义num=0,如果num值小于等于10,输出num,此时num=num+2,也就是num现在的值为2;再拿num现在的值2进行判断num值是否小于等于10;
直到num>10,不符合条件num<10,不再进行循环;

练习题

练习题1:请使用while循环 输出0-10以内的偶数和奇数

num = 0
while num <= 10:
    if num % 2 == 0:
        print("偶数:" + str(num))
    else:
        print("奇数:" + str(num))
    num += 1
注意:这个逻辑一定是先判断num是奇数还是偶数,然后再给num加一,使它实现循环

练习题2:编写一个用户登录系统,当用户的账号或密码有一个输错可以继续让用户重新输入账号或密码,当用户输错密码超过5次后,提示用户密码输入错误超过5次,锁定账户5秒钟,之后可以继续进行输入;

# 锁定可以使用time的sleep函数去模拟;
# 先在代码最开始导入import time包,在使用time.sleep(t) t表示休眠几秒;
# 例如:

import time
 time.sleep(5)
import time

menu = """
**********************
欢迎来到用户登录系统
1、登录
2、退出
**********************
"""
print(menu)
choose_num = input("请输入您想选择的序号:")

count = 0
while True:
    if choose_num == '1':
        input_user = input("请输入账号:")
        input_passwd = input("请输入密码:")
        if input_user == 'admin' and input_passwd == '123456':
            print("登录成功!")
            break
        elif input_user == 'admin' and input_passwd != '123456':
            print("你输入的密码错误,请重新输入密码!")
            input_passwd = input("请输入密码:")
            passwd2 = input_passwd
            if input_passwd == '123456':
                print("登录成功!")
                break
            else:
                count2 = 0
                while True:
                    if input_passwd == '123456':
                        print("登录成功!")
                    elif input_passwd != '123456':
                        print("你输入的密码错误,请重新输入密码!")
                        input_passwd = input("请输入密码:")
                        if input_passwd == '123456':
                            print("登录成功!")
                            exit()
                        count2 += 1
                        if count2 > 5:
                            print("您输入的密码错误次数超过5次,请等待5秒...")
                            time.sleep(5)
        elif input_user != 'admin' and input_passwd == '123456':
            print("你输入的账号错误,请重新输入账号!")
            input_user = input("请输入账号:")
            if input_user == 'admin':
                print("登录成功!")
                break
            else:
                count3 = 0
                while True:
                    if input_user == 'admin':
                        print("登录成功!")
                    elif input_user != 'admin':
                        print("你输入的账号错误,请重新输入账号!")
                        input_user = input("请输入账号:")
                        if input_user == 'admin':
                            print("登录成功!")
                            exit()
                        count3 += 1
                        if count3 > 5:
                            print("您输入的账号错误次数超过5次,请等待5秒...")
                            time.sleep(5)
        else:
            print("你输入的账号和密码均错误,请重新输入!")
            count += 1
            if count > 5:
                print("您输入的账号和密码错误次数超过5次,请等待5秒...")
                time.sleep(5)
    elif choose_num == '2':
        print("您已退出系统!")
        break
    else:
        print("请输入正确的序号!")
        break
思路:首先输出用户登录界面,并且让用户输入序号来选择想要的功能;
如果选择1、登录:
就判账号和密码是否正确,如果账号错误密码正确,就提示“你的账号输入错误,请重新输入”,但是一旦输入账号的错误次数超过5次,就提示你“输入账号的错误次数超过5次,请等待5秒”,直到输入正确账号,提示“登录成功”;

如果账号正确密码错误,就提示“你的密码输入错误,请重新输入”,但是一旦输入密码的错误次数超过5次,就提示你“输入密码错误次数超过5次,请等待5秒”,直到输入正确密码,提示“登录成功”;

如果账号错误密码都错误,就提示“你输入的账号和密码均错误,请重新输入!”,但是一旦输入的账号和密码的错误次数超过5次,就提示你“输入账号和密码错误次数超过5次,请等待5秒”,直到输入正确账号和密码,提示“登录成功”;

选择2、退出,则提示"您已退出系统!"

如果输入的序号不是1或2,则提示"请输入正确的序号!

2、break

break,用于在while循环中帮你终止循环。

while True:
    print("1")
    break
    print("2")
print("结束")
如你所见,虽然有print("2")这个语句,但是没有执行,这是为什么呢?
因为在执行完 print("1")后,执行了break语句,它就从循环中终止了,不再进行下面的语句了
注意:print("结束")是在执行完while循环后才执行的语句,这条语句不参与循环,只执行一次

通过示例来更深入理解break的应用。

print("开始")
while True:
        print("红旗飘飘,军号响。")
        break
        print("剑已出鞘,雷鸣电闪。")
        print("从来都是狭路相逢勇者胜。")
print("结束")
print("开始运行系统")
while True:
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    if user == 'admin' and pwd == "123456":
        print("登录成功")
        break
    else:
        print("用户名或密码错误,请重新登录")
print("系统结束")
所以,以后写代码时候,想要结束循环可以通过两种方式实现了,即:条件判断 和break关键字,两种在使用时无好坏之分,只要能实现功能就行。

3、continue

continue,在循环中用于 结束本次循环,开始下一次循环。回到循环开始执行

print("开始")
while True:
    print(1)
    continue
    print(2)
    print(3)
print("结束")

print("开始")
while True:
    print("红旗飘飘,军号响。")
    continue
    print("剑已出鞘,雷鸣电闪。")
    print("从来都是狭路相逢勇者胜。")
print("结束")
# 输出
开始
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。

# 案例:输出0-10的偶数 使用continue实现  注意continue前面要有a的变更处理
a = 0
while a <= 10:
    if a % 2 != 0:
        a += 1
        continue
    else:
        print(a)
        a += 1
最开始给a赋值为0.当a<10时,判断a是否为奇数,如果a为奇数,a的值加1,然后跳出循环,如果a的值为偶数则输出a;

也可以这么理解:当a的值为1,3,5,7,9时因为不能被2整除所以1,3,5,7,9都要加1,然后这些值变成了2 ,4,6,8,10满足a可以被2整除,此时输出a,也就是输出了2 ,4,6,8,10


4、while else

当while后的条件不成立时,else中的代码就会执行。

while 条件:
    代码
else:
    代码
num = 1
while num < 5:
    print(num)
    num = num + 1
else:
    print(666)


# 输出
1
2
3
4
666
当num值小于5时输出num,此时num被赋予新的值num+1,一旦num大于5,就输出666

二、for循环

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。

for iterating_var in sequence:
   statements(s)
#for循环语句  通常结合range()函数使用较多  range代表范围 其参数分为(start,end,step) 如果只给一个参数,则代表只有end参数 而且最终拿不到end值
# 单个参数的range使用
for i in range(10):
    print(i)
print()

# 多个参数的range使用
for j in range(1, 10):
    print(j)
print()

# 三个参数的range使用
for k in range(0, 10, 2):  # 输出0-10的偶数
    print(k)
print()
for l in range(1, 10, 2):  # 输出0-10的奇数
    print(l)
print()
也就是说比如你输出# 单个参数的range使用中,range(10),默认取值是从0开始,但是取不到10,所以输出结果就是0,1,2,3,4,5,6,7,8,9
# 使用for循环实现1-10的和
sum2 = 0
for i in range(1, 11):
    sum2 += i
print("使用for循环实现1-10的和为:" + str(sum2))
# 使用for循环遍历字符串序列
myname = "china"
for i in myname:
    print(i)

三、运算符

提到运算符,我想大家首先想到的就是加、减、乘、除之类, 本节要系统的跟大家 来聊一聊,我们写代码时常见的运算符可以分为5种:

1、算数运算符

例如:加减乘除

2、比较运算符

注意:python3中不支持 <>

3、赋值运算

例如:变量赋值

4、成员运算

例如:是否包含

# 让用户输入一段文本,检测文本中是否包含敏感词。
text = input("请输入内容:")
if "血腥暴力" in text:
    print("少儿不宜")
else:
    print(text)

5、逻辑运算

例如:且或非

6、运算符优先级

运算符的优先级有很多,常见的没几个,推荐你记住3个即可:

  • 算数优先级优先级 大于 比较运算符

if 2 + 10 > 11:
    print("真")
else:
    print("假")
  • 比较运算符优先级 大于 逻辑运算符

if 1>2 and 2<10:
    print("成立")
else:
    print("不成立")
  • 逻辑运算符内部三个优先级 not > and > or

上述这3个优先级从高到低总结: 加减乘除 > 比较 > not and or

想要提升运算优先级:加括号。


四、字符串格式化

字符串格式化,使用更便捷的形式实现字符串的拼接。

%

# (1) %s的占位符的使用 %代表通配 s代表string的缩写 d代表digit数字的缩写
name1 = '小绿'
name2 = '小蓝'
age1 = 22
age2 = 23
name3 = '系统'
print("有两位帅哥,分别叫做"+ name1 + "和" + name2)
print("有两位帅哥,分别叫做%s和%s" % (name1, name2))

format(推荐)

# (2)s.format(var1,var2) s代表字符串 format()方法接收多个变量值,这里面的变量不需要区分数据类型

name1 = '小绿'
name2 = '小蓝'
age1 = 22
age2 = 23
score1 = 99.1
score2 = 70.4
print("{}的成绩为{},{}的年龄为{}".format(name1, score1, name2, age2))

# {}代表占位 如果没有其中的数字 代表从左至右依次匹配右侧format里面的参数  如果指定对应的序列数字(通常从0开始,从左至右依次递加),如果有参数,相当于先给变量从0开始编号,再利用参数调用变量
print("{0}的年龄为{1},成绩为{2}".format(name1, age1, score1))
print("{2}的年龄为{1},成绩为{0}".format(name1, age1, score1))
# 如果我们不想按照从左至右的参数顺序调用,可以通过关键字参数指定去进行调用
name1 = '小绿'
name2 = '小蓝'

print("有两位帅哥,男生分别为{name1},{name2},".format(name1=name1,name2=name2 ))
print("有两位帅哥,男生分别为{name1},{name2},".format(name1=name2,name2=name1 ))

f

# (3) f{string}的方法实现字符串格式化输出
name1 = '小绿'
name2 = '小蓝'
age1 = 22
age2 = 23
score1 = 99.1
score2 = 99.4

print(f"班级中的{name2}的成绩为{score1}")
print(f"班级中的总成绩为{score1+score2}")
print(f"班级中的总年龄为{age1+age2=}")  # 比较少用  在3.8才引入的 可作为扩展知识学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git&#xff1f; 2.Git历史来源 3.Git的优点? 4.什么是版本控制&#xff1f; 5.版本控制工具种类&#xff1f; 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…

防水蓝牙耳机评测,值得入手的四款蓝牙耳机分享

提到蓝牙耳机&#xff0c;大家第一反应是音质跟佩戴舒适度要好&#xff0c;其实除了这两个功能&#xff0c;还有就是防水性能不能少&#xff0c;而且防水等级越高&#xff0c;耳机寿命也就越长&#xff0c;那么&#xff0c;我们该如何 选购一款好用的蓝牙耳机呢&#xff1f;下面…

Echarts 配置横轴竖轴指示线,更换颜色、线型和大小

第018个点击查看专栏目录本示例是描述如何在Echarts上配置横轴竖轴指示线&#xff0c;更换颜色、线型和大小。方法很简单&#xff0c;参考示例源代码。 文章目录示例效果示例源代码&#xff08;共85行&#xff09;相关资料参考专栏介绍示例效果 示例源代码&#xff08;共85行&a…

数据的TCP分段和IP分片

本文简述下TCP分段和IP分片的区别与联系。 我们知道&#xff0c;用户空间的数据拷贝到内核空间的TCP发送缓冲区&#xff08;这个是一个结构体&#xff0c;叫sk_buffer&#xff0c;简称skb&#xff09;后就由内核网络协议栈做后续的封装和发送处理了&#xff0c;用户无需考虑下…

【Node.js】开发自己的包!

造包开发自己的包&#xff01;初始化包的基本结构页面使用根据需要也可以将模块化拆分编写包的说明文档发布包把包发布在npm上删除已发布的包模块的加载机制内置模块的加载机制自定义模块的加载机制第三方模块的加载机制当目录作为模块时的加载机制开发自己的包&#xff01; 初…

3|射频识别技术|第二讲:RFID系统的组成与工作原理|批注·上

https://blog.csdn.net/m0_57656758/article/details/128153964?spm1001.2014.3001.5501我国用无线射频识别技术实现药品管理的市场还是空白其运用具有较大的市场空间。药品运输及存储环境监控药品有效期监控提升用药安全策略血液制剂监控特殊、违禁药品监控商品价格监控药品生…

【Flutter】入门Dart语言:简单易懂的变量指南

文章目录一、概述二、详解1. 变量的声明2. 常量变量3.late 延迟初始化变量4. 变量的命名规则三、总结一、概述 “不抱有希望的人生是毫无意义的。” —— 阿卜杜勒阿齐兹 Dart中的变量是存储值的容器。它们可以是数字、字符串、布尔值或其他数据类型。变量在定义时必须指定类型…

网络原理 (1)

网络原理 文章目录1. 前言&#xff1a; 2. 应用层2.1 XML2.2 json2.3 protobuffer3. 传输层3.1 UDP3.1 TCP4. TCP 内部的工作机制 &#xff08;重点&#xff09;1. 确认应答 2.超时重传3. 连接管理3.1 建立联系 &#xff1a;三次握手3.2 断开连接 : 四次挥手4. 滑动窗口5. 流量…

长按power键,点击重启按钮,系统重启流程一

1.有可能会涉及到如下文件 2.文件流程

Spring基础总结(上)

Spring基础总结(上) 1. Spring 如何创建一个 Bean 对象 通过调用对象的无参构造方法创建一个新对象&#xff0c;然后通过依赖注入得到bean对象(默认单例)依赖注入这一步对新对象中添加了 Autowired 或者Resource 等注解的属性赋值&#xff0c;得到 Bean 对象&#xff0c;如下…

openOffice pdf.js spring boot 微信在线预览office pdf文件

下载openoffice 并安装//pdf.js 案例 https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples//openoffice 连接不上 进入安装目录 cmd 运行以下命令 soffice -headless -accept"socket,host127.0.0.1,port8100;urp;" -nofirststartwizard<!…

技术管理之产品管理

一、产品相关概念 1.1 产品的定义 作为商品提供给市场&#xff0c;被人们使用和消费&#xff0c;并能满足人们某种需求的任何东西&#xff0c;包括有形的物品和无形的服务、组织、观念或者它们的组合&#xff1b;简单点产品就是解决某一类问题的东西。 1.2 产品思维 产品思…

安全研发人员能力模型窥探

能力 是一个比较抽象的概念&#xff0c;不同的行业、管理者、研发人员对能力的认知都会有差异。另外&#xff0c;作为研发团队的相应的职级定级、绩效考核的基础&#xff0c;一个“大家普遍认可”的能力的模型是非常重要的。这是比职级模型更高层的一个基本模型&#xff0c;所谓…

漏洞之S2-048 远程代码执行漏洞(CVE-2017-9791)

一、漏洞详情二、环境搭建1、使用vulhub搭建&#xff0c;搭建方法详见&#xff1a;https://blog.csdn.net/qq_32393893/article/details/129027549?spm1001.2014.3001.55012、切换到vulhub/struts2/s2-0483、启动容器 docker-compose up -d4、访问虚拟机IP:8080端口&#xff0…

智能家居项目(三)之框架设计及框架代码文件工程建立

目录 一、智能家居项目框架设计草图 二、框架代码文件工程建立 三、添加声音识别模块的串口读取功能 一、智能家居项目框架设计草图 代码思路讲解&#xff1a; 1、一个指令工厂&#xff0c;一个控制工厂&#xff0c;实际上就是通过链表链起来的数据。具体怎么链接起来&…

dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件,并启动容器访问

dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件&#xff0c;并启动容器访问简介centos7系统里面我准备的服务如下:5gsignplay-web静态文件内容如下:nginx.conf配置文件内容如下:Dockerfile内容如下:run.sh启动脚本内容如下:制作镜像并启动访问简介 通过用docker…

将SpringBoot项目部署到云服务器上面

将jar包部署到云服务器上面在项目中直接双击点击maven里面的package当控制台输出创建成功以后找到target目录下面打好的jar包然后找到jar包所在的文件目录&#xff0c;将该jar包放到服务器里面的apache-tomcat-8.5.82目录里面的webapps目录里面打开安全组开放访问端口服务器里面…

【2023进阶自动化测试第一步】什么是自动化测试基础?

01、自动化测试的定义 使用一种自动化测试工具来验证各种软件测试的需求&#xff0c;它包括测试活动的而管理与实施、测试脚本的开发与执行。 自动化测试只是策是工作的一部分&#xff0c;是对手工测试的一种补充&#xff1a;自动化测试决不能代替手工测试&#xff1b;多数情…

Word处理控件Aspose.Words功能演示:使用 Java 拆分 MS Word 文档

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c;API支持所有流行的Word处理文件…

ASE28N50-ASEMI高压N沟道MOS管ASE28N50

编辑-Z ASE28N50在TO-247封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为200mΩ&#xff0c;是一款N沟道高压MOS管。ASE28N50的最大脉冲正向电流ISM为110A&#xff0c;零栅极电压漏极电流(IDSS)为1uA&#xff0c;其工作时耐温度范围为-55~150摄氏度。ASE28N50功…