一 for循环

1 什么是for循环

就是重复做某件事,for循环是python提供的第二种循环机制

2 为什么要有for循环

for循环和while循环很像,基本上能做的事相同

但是for循环在循环取值(遍历取值)比while循环方便

while循环称之为条件循环,循环次数根据条件真假

for循环称之为迭代循环,循环次数根据in后面跟的值的个数

3 如何使用for循环

语法

for 变量名 in 可迭代对象: #可迭代对象可以是:字典,列表,集合,元组,字符串
子代码

扩展:range()

range(3) #顾头不顾尾
>>>rang[0,3]==>[0,1,2]
range(1,4,1)#第一个数字是起始值,默认为0,第二个数字必须写,为结尾值,第三个数字是步长,默认为1
>>>range[1,4]==>[1,2,3]
#python对代码的优化,把range变成一个可以“下蛋的鸡”,想取的时候调用即可

for循环中还可以用break,continue,else连用,具体方法和while相同

username = "hz"
passowrd = "123"
for i in range(3):
name_inp = input("请输入用户名:")
pwd_inp = input("请输入密码:")
if name_inp == username and pwd_inp == passowrd:
print("登陆成功")
break
else:
print("账号或密码错误")
else:
print("输错三次,退出!")

扩展,print中“,”,end=“ ”,\n的使用

print("hello\n","world",end="@")#,等于空格 \n等于换行,end=“”等于结尾符
print("123\n",end="*")
>>>hello
>>> world@123
>>>*

二 基本数据类型的内置方法

int和float主要是数学运算和比较运算

2 字符串

2.1 类型转化

str可以把任意其他类型都转化成字符串类型

a = {"x":123}
b = str(a)

2.2 内置方法(优先掌握)

2.2.1 按索引取值
msg = 'hello world' #从0开始依次索引
print(msg[0])#只能取,不能改,因为是不可变类型
>>>h
2.2.2 切片
msg = 'hello world'
res = msg[0:5:1] #第一个数字是起始值,默认为0,第二个数字为结尾值,第三个数字是步长,默认为1,顾头不顾尾
print(res)
>>>hello
print(msg[::-1]) #当步长为-1时,把字符串反转
>>>dlrow olleh
2.2.3 成员运算

in, not in上一章已经讲过

2.2.4 strip去掉字符串左右两边符号
msg = '&&&&hello'
print(msg.strip("&"))#删除字符串左右两边和括号内字符相同的字符,默认为空格
>>>hello
2.2.5 切分
msg = 'aaa,bbb,ccc'
print(msg.split(","))#以()内的字符为分割符,默认是空格
>>>['aaa', 'bbb', 'ccc']
2.2.6 循环
a = "hello"
for i in a:
print(i)
>>>h
>>>e
>>>l
>>>l
>>>o

2.3 需要掌握

2.3.1 strip,lstrip,rstrip
a  = "*****hz******"
print(a.rstrip("*"))#去除右边指定字符
print(a.lstrip("*"))#去除左边指定字符
print(a.strip("*"))#去除两边指定字符
>>>*****hz
>>>hz******
>>>hz
2.3.2 lower,upper
a = "hz IS dsb"
print(a.lower())#使字符串全变成小写
print(a.upper())#使字符串全变成大写
>>>hz is dsb
>>>HZ IS DSB
2.3.3 startswith,endswith
a = "hz is dsb"
print(a.startswith("hz"))#字符串是否以指定字符开头
print(a.endswith("bs"))#字符串是否以指定字符结尾 返回结果为布尔值
>>>True
>>>False
2.3.4 format格式化输出
print("hz is {hz},lxt is {lxt}".format(hz="dsv",lxt="dmv"))
>>>hz is dsv,lxt is dmv
print("hz is {0},lxt is {1}".format("dsv","dmv"))
>>>hz is dsv,lxt is dmv
2.3.5 split,rsplit
a = "a,b,c,d,e"
print(a.split(",",1))#从左到右以指定字符切分字符串,后面可以加切分次数
print(a.rsplit(",",2))#从右到左以指定字符切分字符串
>>>['a', 'b,c,d,e']#输出的是列表
>>>['a,b,c', 'd', 'e']
2.3.6 join
print("%".join("hello"))#以指定字符来分隔字符串
>>>h%e%l%l%o
print('|'.join(['tony','18','read'])) # 从列表中取出多个字符串,然后按照丨作为分隔符号进行拼接
>>>'tony|18|read'
2.3.7 replace
a = "hz is sb sb"
print(a.replace("sb","dsb",1))#将旧字符串修改成新字符串,后可以加修改次数
>>>hz is dsb sb
2.3.8 isdigit
a = "123123"
print(a.isdigit())#判断字符串内是否全是数字,输出是bool
b = "a12123"
print(b.isdigit())
>>>True
>>>False

2.4 了解操作

# 1.find,rfind,index,rindex,count
# 1.1 find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
>>> msg='tony say hello'
>>> msg.find('o',1,3) # 在索引为1和2(顾头不顾尾)的字符中查找字符o的索引
1
# 1.2 index:同find,但在找不到时会报错
>>> msg.index('e',2,4) # 报错ValueError
# 1.3 rfind与rindex:略
# 1.4 count:统计字符串在大字符串中出现的次数
>>> msg = "hello everyone"
>>> msg.count('e') # 统计字符串e出现的次数
4
>>> msg.count('e',1,6) # 字符串e在索引1~5范围内出现的次数
1 # 2.center,ljust,rjust,zfill
>>> name='tony'
>>> name.center(30,'-') # 总宽度为30,字符串居中显示,不够用-填充
-------------tony-------------
>>> name.ljust(30,'*') # 总宽度为30,字符串左对齐显示,不够用*填充
tony**************************
>>> name.rjust(30,'*') # 总宽度为30,字符串右对齐显示,不够用*填充
**************************tony
>>> name.zfill(50) # 总宽度为50,字符串右对齐显示,不够用0填充
0000000000000000000000000000000000000000000000tony # 3.expandtabs
>>> name = 'tony\thello' # \t表示制表符(tab键)
>>> name
tony hello
>>> name.expandtabs(1) # 修改\t制表符代表的空格数
tony hello # 4.captalize,swapcase,title
# 4.1 captalize:首字母大写
>>> message = 'hello everyone nice to meet you!'
>>> message.capitalize()
Hello everyone nice to meet you!
# 4.2 swapcase:大小写翻转
>>> message1 = 'Hi girl, I want make friends with you!'
>>> message1.swapcase()
hI GIRL, i WANT MAKE FRIENDS WITH YOU!
#4.3 title:每个单词的首字母大写
>>> msg = 'dear my friend i miss you very much'
>>> msg.title()
Dear My Friend I Miss You Very Much # 5.is数字系列
#在python3中
num1 = b'4' #bytes
num2 = u'4' #unicode,python3中无需加u就是unicode
num3 = '四' #中文数字
num4 = 'Ⅳ' #罗马数字 #isdigt:bytes,unicode
>>> num1.isdigit()
True
>>> num2.isdigit()
True
>>> num3.isdigit()
False
>>> num4.isdigit()
False #isdecimal:uncicode(bytes类型无isdecimal方法)
>>> num2.isdecimal()
True
>>> num3.isdecimal()
False
>>> num4.isdecimal()
False #isnumberic:unicode,中文数字,罗马数字(bytes类型无isnumberic方法)
>>> num2.isnumeric()
True
>>> num3.isnumeric()
True
>>> num4.isnumeric()
True # 三者不能判断浮点数
>>> num5 = '4.3'
>>> num5.isdigit()
False
>>> num5.isdecimal()
False
>>> num5.isnumeric()
False '''
总结:
最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
如果要判断中文数字或罗马数字,则需要用到isnumeric。
''' # 6.is其他
>>> name = 'tony123'
>>> name.isalnum() #字符串中既可以包含数字也可以包含字母
True
>>> name.isalpha() #字符串中只包含字母
False
>>> name.isidentifier()
True
>>> name.islower() # 字符串是否是纯小写
True
>>> name.isupper() # 字符串是否是纯大写
False
>>> name.isspace() # 字符串是否全是空格
False
>>> name.istitle() # 字符串中的单词首字母是否都是大写
False

day8 for循环+基本数据类型(上)的更多相关文章

  1. 四探循环依赖 → 当循环依赖遇上 BeanPostProcessor,爱情可能就产生了!

    开心一刻 那天知道她结婚了,我整整一个晚上没睡觉,开了三百公里的车来到她家楼下,缓缓的抽了一支烟...... 天渐渐凉了,响起了鞭炮声,迎亲车队到了,那天披着婚纱的她很美,真的很美! 我跟着迎亲车队开 ...

  2. 深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用(上)

    深入研究Block捕获外部变量和__block实现原理 前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理.然而实际使用Block过程中,还是会遇到一些问题,比如R ...

  3. for循环以及数据类型

    一.for循环(迭代式循环) 了解:当我们在写代码时,如果代码是纯运算的代码,会占用大量的CPU,如果是I/O代码,则不会占用CPU. for i in range(10):  #可以是任意类型(字符 ...

  4. Python基础—05-总结:双重循环,数据类型

    总结 双重循环 冒泡排序 lt = [1, 5, 7, 3, 2, 4] # 计算元素的个数 n = len(lt) # 外层循环控制圈数 for i in range(n-1): for j in ...

  5. mysql 开发基础系列12 选择合适的数据类型(上)

    一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定 ...

  6. while.for循环和基本数据类型内置方法

    while循环补充说明 流程控制之for循环 基本数据类型内置方法 内容详细 1.死循环 真正的死循环是一旦执行,Cpu的功耗会急速上升 知道系统采取紧急措施 所以 尽量不要让cpu长时间不断运算. ...

  7. python基础之条件控制与循环

    Python3 条件控制 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户 ...

  8. JavaScript基础——实现循环

    循环是多次执行同一段代码的一种手段.当你需要在一个数组或对象集上重复执行相同的任务时,这是非常有用的. JavaScript提供执行for和while循环的功能. 1.while循环 JavaScri ...

  9. 16-underscore库(上)

    第16课 underscore库 一.介绍 Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象.他弥补了 ...

随机推荐

  1. 2个线程A-B-A-B或者B-A-B-A循环输出

    代码: /** * 两个线程循环打印输出a-b-a-b */ public class AandBforTOthread { private static Object o = new Object( ...

  2. spring cloud 集成分布式配置中心 apollo(单机部署apollo)

    一.什么是apollo? Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用 ...

  3. uni-app动态修改顶部导航栏标题

    动态修改顶部导航栏标题有两种方法方式一.使用自定义到导航栏,覆盖原生导航栏 缺点:自定义到导航栏性能远远不如原生导航栏,手机顶部状态栏区域会被页面内容覆盖,这是因为窗体是沉浸式的原因,即全屏可写内容: ...

  4. Springboot拦截器实现IP黑名单

    Springboot拦截器实现IP黑名单 一·业务场景和需要实现的功能 以redis作为IP存储地址实现. 业务场景:针对秒杀活动或者常规电商业务场景等,防止恶意脚本不停的刷接口. 实现功能:写一个拦 ...

  5. linux安装syncthing

    https://blog.csdn.net/weixin_30527551/article/details/98882344 https://syncthing.net/downloads/ http ...

  6. uni-app之实现分页

    一.下载库 官方文档地址为:https://ext.dcloud.net.cn/plugin?id=32 点击下载zip压缩包即可,下载完毕后解压到放置前端相关组件目录,即components目录. ...

  7. ASP.NET WebAPI框架解析第一篇

    ASP.NET WebAPI有两种寄宿模式,一种是WebHost,一种是SelfHost,为什么可以有两种模式的原因在于WebAPI有一个相对独立的消息处理管道,只要给这个消息管道传递一个封装好的对象 ...

  8. Spring事务方法上增加synchronized真的有效果吗?

    此文转载,Spring事务本身是一个非常复制的问题,再加上线程并发处理就更加要主要了,由于再开发中有很多朋友会范与下文同样的错误,因分享给大家. 前言 Spring事务的一个奇怪的问题. 朋友问了我一 ...

  9. 【DMCP】2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks-论文阅读

    DMCP 2020-CVPR-DMCP Differentiable Markov Channel Pruning for Neural Networks Shaopeng Guo(sensetime ...

  10. php artisan migrate数据迁移报错

    laravel 5.4 改变了默认的数据库字符集,现在utf8mb4包括存储emojis支持.如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情. 当你试着在一些MariaDB或者一些 ...