流程控制以及数据类型

一、流程控制之for循环

  1.什么是for循环

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

  2.为什么要有for循环

    理论上for循环能做的事情,while循环都可以做之所以要有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁
  3.如何用for循环
    语法:
    for 变量名 in 可迭代对象:# 可迭代对象可以是:列表、字典、字符串、元组、集合
    代码1
    代码2
    代码3
    3.1 基本语法之取值
      列表取值:
l = ['alex', 'lxx', 'egon']
for x in l:  # x='lxx'
    print(x)

         字典取值:

 

dic={'k1':111,'k2':2222,'k3':333}
for k in dic:
    print(k,dic[k])

 

         字符串取值:

msg="abcdefghijklmn"
for x in msg:
    print(x)

    3.2 while循环与for循环的区别

1、相同之处:都是循环,for循环可以干的事,while循环也可以干
2、不同之处:
          while循环称之为条件循环,循环次数取决于条件何时变为假
          for循环称之为"取值循环",循环次数取决in后包含的值的个数

    3.3    range()用法

for i in range(0,100,2)   可以指定起始值,终止位置,步长(顾头不顾尾)
    print(i)

 

    3.4    for+break       for+contiune      for+else   

        三者用法和while一样

    3.5 循环嵌套

for i in range(3):
    print('外层循环-->', i)
    for j in range(5):
        print('内层-->', j)

补充:终止for循环只有break一种方案

二、数字类型

  1.int类型

    1.1 作用:用来记录年龄,年份,电话号码等等

    1.2 定义:

age = 18
age = int(18)

  2.float类型

 

    2.1 作用:用来记录薪资,身高,体重,体质参数等

 

    2.2 定义:

height = 180.5
height = float(180.5)

 

  3.字符串类型

    3.1 作用:用来记录名字,性别,国籍,地址等等

 

    3.2 定义:

a = 'hahaha'
a = str('hahaha')

    3.3 内置方法

      1. 索引取值

按索引取值(正向取+反向取) :只能取
msg='hello world'
# 正向取
print(msg[0])
print(msg[5])
# 反向取
print(msg[-1])

# 只能取
msg[0]='H'

      2. 切片取值(顾头不顾尾)

msg='hello world'
# 顾头不顾尾
res=msg[0:5] #x
print(res)
print(msg)

# 步长
res=msg[0:5:2] # 0 2 4
print(res) # hlo

# 反向步长(了解)
res=msg[5:0:-1]
print(res) #" olle"

msg='hello world'
res=msg[:] # res=msg[0:11]
print(res)
res=msg[::-1] # 把字符串倒过来
print(res)

      3. 长度len()

msg='hello'
print(len(msg))

         4. in 和 not in

判断一个子字符串是否存在于一个大字符串中
print("alex" in "alex is nb")
print("alex" not in "alex is nb")

      5. 移除字符串左右两侧空格 strip

msg='      egon      '
res=msg.strip()
print(msg) # 不会改变原值
print(res) # 是产生了新值

默认去掉的空格
msg='****egon****'
print(msg.strip('*'))

了解:strip只取两边,不去中间
msg='****e*****gon****'
print(msg.strip('*'))

msg='**/*=-**egon**-=()**'
print(msg.strip('*/-=()'))

      6.切分 split   得到列表

# 默认分隔符是空格
info='egon 18 male'
res=info.split()
print(res)

# 指定分隔符
info='egon:18:male'
res=info.split(':')
print(res)

指定分隔次数(了解)
info='egon:18:male'
res=info.split(':',1)
print(res)

      7.循环

info='egon:18:male'
for x in info:
    print(x)

    需要掌握的操作

      1.strip,lstrip,rstrip

msg='***egon****'
print(msg.strip('*'))
print(msg.lstrip('*'))  去左边
print(msg.rstrip('*')) 去右边

      2.lower,upper

msg='AbbbCCCC'
print(msg.lower())
print(msg.upper())

      3.startswith,endswith

print("alex is sb".startswith("alex"))
print("alex is sb".endswith('sb'))

      4.format

res='{} {} {}'.format('egon',18,'male')
res='{1} {0} {1}'.format('egon',18,'male')
res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)

      5.split,rsplit

name='root:x:0:0::/root:/bin/bash'
print(name.split(':')) #默认分隔符为空格
name='C:/a/b/c/d.txt' #只想拿到顶级目录
print(name.split('/',1))

name='a|b|c'
print(name.rsplit('|',1)) #从右开始切分

      6.join

tag=' '
print(tag.join(['egon','say','hello','world'])) #可迭代对象必须都是字符串

      7.replace

name='alex say :i have one tesla,my name is alex'
print(name.replace('alex','nb',1))

      8.isdigit

可以判断bytes和unicode类型,是最常用的用于于判断字符是否为"数字"的方法
age=input('>>: ')
print(age.isdigit())

    其他

      1.find,rfind,index,rindex,count

name='egon say hello'
print(name.find('o',1,3)) #顾头不顾尾,找不到则返回-1不会报错,找到了则显示索引
# print(name.index('e',2,4)) #同上,但是找不到会报错
print(name.count('e',1,3)) #顾头不顾尾,如果不指定范围则查找所有

      2.center,ljust,rjust,zfill

name='egon'
print(name.center(30,'-'))
print(name.ljust(30,'*'))
print(name.rjust(30,'*'))
print(name.zfill(50)) #用0填充

      3.expandtabs

name='egon\thello'
print(name)
print(name.expandtabs(1))   设置制表符代表的空格数为1

      4.captalize,swapcase,title

print(name.capitalize()) #首字母大写
print(name.swapcase()) #大小写翻转
msg='egon say hi'
print(msg.title()) #每个单词的首字母大写

      5.is数字系列

#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='' #中文数字
num4='' #罗马数字

#isdigt:bytes,unicode
print(num1.isdigit()) #True
print(num2.isdigit()) #True
print(num3.isdigit()) #False
print(num4.isdigit()) #False

#isdecimal:uncicode
#bytes类型无isdecimal方法
print(num2.isdecimal()) #True
print(num3.isdecimal()) #False
print(num4.isdecimal()) #False

#isnumberic:unicode,中文数字,罗马数字
#bytes类型无isnumberic方法
print(num2.isnumeric()) #True
print(num3.isnumeric()) #True
print(num4.isnumeric()) #True

#三者不能判断浮点数
num5='4.3'
print(num5.isdigit())
print(num5.isdecimal())
print(num5.isnumeric())
'''
总结:
    最常用的是isdigit,可以判断bytes和unicode类型,这也是最常见的数字应用场景
    如果要判断中文数字或罗马数字,则需要用到isnumeric
'''

      6.is其他

print('===>')
name='egon123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成

print(name.isidentifier()) 判断是否为标识符
print(name.islower())  是否为全小写
print(name.isupper())  是否全为大写
print(name.isspace())  是否是空格
print(name.istitle())  开头是否大写

 

posted @ 2020-03-10 16:52  三根烦恼丝啊  阅读(162)  评论(0编辑  收藏  举报