【Python】循环语句(while,for)、运算符、字符串格式化
一、while循环
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
其基本形式为:
while 判断条件(condition):执行语句(statements)
执行语句可以是单个语句或语句块。判断条件可以是任何表达式;任何非零、或非空(null)的值均为true。
执行流程图如下:

1、实例
跳出循环
通常如果while后跟的条件是恒等式,则容易出现死循环,项目中是不允许死循环出现的,解决方案是要么条件不要恒等式,要么在循环中添加某种判断条件进行中断
下面这个案例是通过添加外部变量counts来在循环中进行控制的 当其值超过等于3的时候 就不再运行循环了 避免死循环的产生
counts = 0
while 1 > 0:print("ok")counts = counts + 1if 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 timetime.sleep(5)
import timemenu = """
**********************
欢迎来到用户登录系统
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("登录成功!")breakelif input_user == 'admin' and input_passwd != '123456':print("你输入的密码错误,请重新输入密码!")input_passwd = input("请输入密码:")passwd2 = input_passwdif input_passwd == '123456':print("登录成功!")breakelse:count2 = 0while True:if input_passwd == '123456':print("登录成功!")elif input_passwd != '123456':print("你输入的密码错误,请重新输入密码!")input_passwd = input("请输入密码:")if input_passwd == '123456':print("登录成功!")exit()count2 += 1if 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("登录成功!")breakelse:count3 = 0while True:if input_user == 'admin':print("登录成功!")elif input_user != 'admin':print("你输入的账号错误,请重新输入账号!")input_user = input("请输入账号:")if input_user == 'admin':print("登录成功!")exit()count3 += 1if count3 > 5:print("您输入的账号错误次数超过5次,请等待5秒...")time.sleep(5)else:print("你输入的账号和密码均错误,请重新输入!")count += 1if count > 5:print("您输入的账号和密码错误次数超过5次,请等待5秒...")time.sleep(5)elif choose_num == '2':print("您已退出系统!")breakelse:print("请输入正确的序号!")break
思路:首先输出用户登录界面,并且让用户输入序号来选择想要的功能;
如果选择1、登录:
就判账号和密码是否正确,如果账号错误密码正确,就提示“你的账号输入错误,请重新输入”,但是一旦输入账号的错误次数超过5次,就提示你“输入账号的错误次数超过5次,请等待5秒”,直到输入正确账号,提示“登录成功”;
如果账号正确密码错误,就提示“你的密码输入错误,请重新输入”,但是一旦输入密码的错误次数超过5次,就提示你“输入密码错误次数超过5次,请等待5秒”,直到输入正确密码,提示“登录成功”;
如果账号错误密码都错误,就提示“你输入的账号和密码均错误,请重新输入!”,但是一旦输入的账号和密码的错误次数超过5次,就提示你“输入账号和密码错误次数超过5次,请等待5秒”,直到输入正确账号和密码,提示“登录成功”;
选择2、退出,则提示"您已退出系统!"
如果输入的序号不是1或2,则提示"请输入正确的序号!
2、break
break,用于在while循环中帮你终止循环。
while True:print("1")breakprint("2")
print("结束")

如你所见,虽然有print("2")这个语句,但是没有执行,这是为什么呢?
因为在执行完 print("1")后,执行了break语句,它就从循环中终止了,不再进行下面的语句了
注意:print("结束")是在执行完while循环后才执行的语句,这条语句不参与循环,只执行一次
通过示例来更深入理解break的应用。
print("开始")
while True:print("红旗飘飘,军号响。")breakprint("剑已出鞘,雷鸣电闪。")print("从来都是狭路相逢勇者胜。")
print("结束")

print("开始运行系统")
while True:user = input("请输入用户名:")pwd = input("请输入密码:")if user == 'admin' and pwd == "123456":print("登录成功")breakelse:print("用户名或密码错误,请重新登录")
print("系统结束")

所以,以后写代码时候,想要结束循环可以通过两种方式实现了,即:条件判断 和break关键字,两种在使用时无好坏之分,只要能实现功能就行。
3、continue
continue,在循环中用于 结束本次循环,开始下一次循环。回到循环开始执行
print("开始")
while True:print(1)continueprint(2)print(3)
print("结束")

print("开始")
while True:print("红旗飘飘,军号响。")continueprint("剑已出鞘,雷鸣电闪。")print("从来都是狭路相逢勇者胜。")
print("结束")
# 输出
开始
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
# 案例:输出0-10的偶数 使用continue实现 注意continue前面要有a的变更处理
a = 0
while a <= 10:if a % 2 != 0:a += 1continueelse: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.4print(f"班级中的{name2}的成绩为{score1}")
print(f"班级中的总成绩为{score1+score2}")
print(f"班级中的总年龄为{age1+age2=}") # 比较少用 在3.8才引入的 可作为扩展知识学习

相关文章:

【Python】循环语句(while,for)、运算符、字符串格式化
一、while循环Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:while 判断条件(condition):执行语句(statements)执行语句可以是单个语句或语句…...

利用设计模式、反射写代码
软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。 业务同学抱怨业务开发没有技术含量,用不到设计模式、Java 高级特性、OOP,平时写代码都在堆 CRUD,个…...

Spring Cloud Alibaba--seata微服务详解之分布式事务(三)
上篇讲述gateway的部署和使用,gateway统一管理和转发了HTTP请求,在互联网中大型项目一定存在复杂的业务关系,尤其在商城类软件中如淘宝、PDD等商城,尤其在秒杀场景中,并发量可以到达千万级别,此时数据库就会…...
[USACO2023-JAN-Bronze] T3 Moo Operations 题解
一、题目描述因为Bessie觉得玩平时经常玩的只包含C O和W的字符串无聊了,Farmer John 给了她Q个新的字符串(1≤Q≤100),这Q个字符串只包含M和O。很明显,只包含M和O的单词里Bessie最喜欢的是”MOO”,所以她希望按照下面两个规则&…...

OKCC呼叫中心支持哪些接入方式?
使用OKCC系统开展呼叫中心业务,要将电话打通,需要什么样的设备接入到OKCC系统呢? 目前实际广泛使用的接入方式,既有硬件网关接入方式,也有软件接入方式,在生产实践中,我们须根据实际的需求及使…...

如何让手机共享电脑代理网络的WIFI热点
参考: 手机共享电脑的proxy网络 把电脑的网络代理给安卓设备如何将电脑的代理网络以WIFI热点的方式共享 电脑端设置代理: 打开电脑上的 proxy软件并设置其端口号(例如:7890),且允许局域网(例如…...

渲染有问题?怎么办?6种方法让你渲染无忧
简单点,解决问题的方式简单点。 日常工作中我们总会遇到各种各样的问题,比如渲不出图,速度太慢或效率太低,各种噪点和黑图等等,烦不胜烦,今天我就针对6个常见的问题给大家说下方法,一家之言仅供…...

中国人寿业务稳定性保障:“1+1+N” 落地生产全链路压测
引言 保险业务的数字化转型正如火如荼地进行,产品线上化、投保线上化、承保线上化、核保线上化等业务转型,导致系统的应用范围不断扩大,用户的高频访问也正在成为常态。同时,系统复杂性也呈指数上升,这些因素都增加了…...
2/17考试总结
时间安排 7:40–7:50 读题,T1 貌似是签到,T2,T4 DP,T3看起来很不可做。 7:50–8:00 T1,差分一下然后模拟就行了。 8:00–10:20 T2,注意到值域很小,可以考虑状压,想到一个状压状态数较少的 dp ,然后挂得彻底。发现有一…...

零信任-360连接云介绍(9)
360零信任介绍 360零信任又称360连接云安全访问平台(下文简称为:360连接云),360连接云,是360基于零信任安全理念,以身份为基础、动态访问控制为核心打造的安全访问平台。 通过收缩业务暴露面、自适应增强身份认证、终端持续检…...
使用dlib进行人脸检测和对齐
最近在配置人脸属性识别的服务,用过faceboxes_detector(faster rcnn的包),也用过face_recognition的,但是她们都没有做人脸对齐,而且检测人脸的范围也不太一样。没有做人脸对齐的时候,使用属性识…...

将python代码封装成c版本的dll动态链接库
前言 将python程序打包成DLL文件,然后用C调用生成的DLL文件,这是一种用C调用python的方法,这一块比较容易遇到坑。网上关于这一块的教程不是很多,而且大部分都不能完全解决问题。我在傻傻挣扎了几天之后,终于试出了一个…...

AI技术网关如何用于安全生产监测?有什么优势?
现代工业生产和运营的规模越来越庞大、系统和结构越来越复杂,现场的风险点多面广,给作业一线的安全监管带来极大的挑战。 针对工地、煤矿、危化品、加油站、烟花爆竹、电力等行业的安全生产监管场景,可以借助AI智能与物联网技术,…...
刷题记录:牛客NC53370 Forsaken的三维数点
传送门:牛客 题目描述: Forsaken现在在一个三维空间中,空间中每个点都可以用(x,y,z)表示。突然,三维空间的主人出现 了,如果Forsaken想要继续在三维空间中呆下去,他就必须回答三维空间主人的问题.主人会在空间 中坐标为(x,y,z)处…...

lombok的原理 和 使用
原理Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。其实并没有改变字节码文件的任何内容,只是简化的程序员编写代码的方式。不使用lombok:使用lombok:lombok常用注解Setter :注解在类或字段&#x…...

UDP网络编程
UDP和TCP 前几节我们提到了计算机网络编程中的TCP编程,TCP和UDP都是计算机机网络通信的传输层中的传输协议,今天我们来学习计算机网络编程中的基于UDP传输协议的网络编程 首先我们要了解TCP和UDP的区别 它们是同属于计算机网络传输层的传输协议 TCP&…...
“合并区间”问题解析及其思考
合并区间题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。解析本题思路相对比较容易想先对各个区间按左…...
2023年理想新能源汽车核心部件解密
理想主要硬件清单(L9车型) 汽车结构 设置名称 规格 备注 价格 供应商 感知层...
C++ 将一个vector内容赋值给另一个vector,及swap与assign的区别
在本文中,我们将主要介绍5种将一个vector内容赋值给另一个vector的方式,顺便讨论下swap与assign的区别。 赋值 方式一、申明时赋值 vector<int> v2; v2.push_back(0); v2.push_back(1);vector<int> v1(v2); //声明方式二、使用assign赋值…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...