【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赋值…...
PMP的价值有哪些?
我个人认为,考证只有两个出发点是正确的。一是为了提升自己或者满足自己的兴趣,另一个是和自己的职业规划相关。 比如,有同学想提升自己英语能力,可以考四六级,或者更厉害一点的考雅思、托福。比如,有的同…...
OnGUI label 控件||Unity 3D GUI教程||OnGUI Background Color 控件
Unity 3D Label 控件用于在设备的屏幕上创建文本标签和纹理标签,和Box 控件类似,可以显示文本内容或图片。Label 控件一般用于显示提示性的信息,如当前窗口的名称、游戏中游戏对象的名字、游戏对玩家的任务提示和功能介绍等。具体使用方法如下…...
从 JavaScript 中的数组中删除空对象
从数组中删除空对象: 使用 Array.filter() 方法遍历数组。将每个对象传递给 Object.keys() 方法并检查键的长度是否不等于 0。filter 方法将返回一个不包含空对象的新数组。 const arr [{}, {id: 1}, {}, {id: 2}, {}];const results arr.filter(element > {…...
【C++】AVL树和红黑树(插入和测试详解)
文章目录1、AVL树1.1 AVL树的插入1.2 总结与测试AVL树2、红黑树2.1 红黑树的插入2.2 红黑树的测试了解AVL树是为了了解红黑树,了解红黑树是为了更好的理解set和map。 1、AVL树 AVL树是在二叉搜索树的基础上进行了严格的平衡,能做到平衡的关键是通过平衡…...
Centos7 安装 Mysql 8.0.32,详细完整教程(好文章!!)
mysql5.7的安装方式参考之前的文章: centos7 安装 Mysql 5.7.27,详细完整教程(好文章!!)_HD243608836的博客-CSDN博客 一、检查mysql版本冲突 先检查是否已经存在mysql,若存在卸载࿰…...
Apache Beanutils为什么被禁止使用?
收录于热门专栏Java基础教程系列(进阶篇) 在实际的项目开发中,对象间赋值普遍存在,随着双十一、秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面。 问:如果是你来写…...
sql server执行md5加密的时候,字符串前带N和不带N的结果是不一样的
最近因为项目的需要,报表中需要对数据进行MD5加密,结果报表系统得出来的sql语句,字符串前都自动带了N,执行时,发现得到的结果跟在数据库中执行的sql(字符串不带N)得的值不一样,最后自…...
01Python编译器和编辑器下载
Python下载 通过python官网下载:https://www.python.org/因为python官网的服务器在国外,我们可以通过腾讯软件中心下载https://pc.qq.com/search.html#!keyword=python 腾讯软件中心下载请使用普通下载,其他什么下载会自动帮你下个电脑管家(没必要) python简单描述 python…...
CHAPTER 5 自动发现、自动注册、分布式监控、SNMP监控
自动发现与自动注册5.1 自动发现与自动注册5.1.1 简介5.1.2 两种模式5.2 自动发现--被动模式5.3 自动注册--主动模式5.4 分布式监控5.4.1 介绍5.4.2 配置zabbix proxy5.5 SNMP监控5.5.1 使用范围5.5.2 安装snmp程序5.5.3 配置snmp程序5.5.4 测试snmp5.5.5 在web界面进行配置5.1…...
P5311 [Ynoi2011] 成都七中
题目描述 给你一棵 nnn 个节点的树,每个节点有一种颜色,有 mmm 次查询操作。 查询操作给定参数 lrxl\ r\ xl r x,需输出: 将树中编号在 [l,r][l,r][l,r] 内的所有节点保留,xxx 所在连通块中颜色种类数。 每次查询操…...
wordpress主题 免费 cms/软件外包公司排行榜
Gitlab 使用总结 总体来说Gitlab是一个很不好理解的代码版本工具,但是为了工作更高效还是把它疏通了一遍,至于怎么注册Gitlab和配置ssh密匙这个就不多赘述了,网上教程很多,可自行Google。 一,Gitlab的三区和两个概念G…...
做运营的网站/东莞seo建站优化工具
需要用到php判断浏览器,于是google了,下出来的都是相同的于是就copy了下来就开始用,结果在判断Opera的时候卡壳了整死都出不来,于是搜索了下strpos函数,解释是“返回字符串在另一个字符串中第一次出现的位置”再看了下…...
wordpress表格css样式表/网络营销公司是做什么的
Python编码问题一直困扰了我许久,之前有过一些总结,但并不系统,比较凌乱。当然python2.x编码问题本身,便是剪不断理还乱。本篇将系统介绍python2.x编程中会遇到的一些编码问题,并给出解决方案。基于对编码问题的摸索了…...
api网站模板/资源搜索引擎
在网上看了几篇AdaBoost的介绍后,感觉网上介绍的都不好,不能够让人完全理解,因此就下载了一个外国人写的代码,总算透彻的理解了AdaBoost,可以向Transfer开进了,现在分享一下代码:主函数代码[pla…...
视频网站怎么做统计/网络代运营推广
1 前言 1.1 学习阶段说明 从2016年9月开始接触IT,学习经历主要分为以下三个阶段 1.1.1 入门阶段 从最基础的前端技术HTML、JavaScript、CSS开始入门,再到后端技术Java基础、MySQL数据库基础知识、JDBC、Servclet、JSP。利用这些简单技术实现了从前端…...
广州外贸网站建设公司/哈尔滨百度公司地址
什么是面向对象OO:可以先看下 https://www.jianshu.com/p/224d8fc4d0f0 提起面向对象,肯定都会先想到三大特性:封装,继承,多态。那这三大特性具体怎么理解呢?可以先在脑子里过一下。 如题,举个栗…...