python基础06——for循环&字符串类型&数字类型

For 循环语句

 

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

 

2、为何要有for循环
理论上for循环能做的事情,while循环都可以做
之所以要有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁

 

3、如何用for循环
语法:
for 变量名 in 可迭代对象:# 可迭代对象可以是:列表、字典、字符串、元组、集合
代码1
代码2
代码3
...
'''

 

 


for基本使用之循环取值


案例1:列表循环取值
简单版
l = ['alex_dsb', 'lxx_dsb', 'egon_nb']
for x in l:                                                            # x='lxx_dsb'
  print(x)

复杂版:

 l = ['alex_dsb', 'lxx_dsb', 'egon_nb']
 i=0
 while i < 3:
   print(l[i])
   i+=1

 

 案例2:字典循环取值
 简单版
 dic={'k1':111,'k2':2222,'k3':333}
 for k in dic:
   print(k,dic[k])

 复杂版:while循环可以遍历字典,太麻烦了

 

案例3:字符串循环取值
 简单版
 msg="you can you up,no can no bb"
 for x in msg:
   print(x)

 复杂版:while循环可以遍历字典,太麻烦了

 

 

 

 

 二:总结for循环与while循环的异同
 1、相同之处:都是循环,for循环可以干的事,while循环也可以干
 2、不同之处:
 # while循环称之为条件循环,循环次数取决于条件何时变为假
 # for循环称之为"取值循环",循环次数取决in后包含的值的个数
 for x in [1,2,3]:
   print('===>')
   print('8888')

 

 

 

 


 三:for循环控制循环次数:range()
 in后直接放一个数据类型来控制循环次数有局限性:
 当循环次数过多时,数据类型包含值的格式需要伴随着增加
 for x in 'a c':
   inp_name=input('please input your name: ')
   inp_pwd=input('please input your password: ')

 range功能介绍
'''
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> range(1,9) # 1...8
[1, 2, 3, 4, 5, 6, 7, 8]
>>>
>>> range(1,9,1) # 1 2 3 4 5 6 7 8
[1, 2, 3, 4, 5, 6, 7, 8]
>>> range(1,9,2) # 1 3 5 7
[1, 3, 5, 7]
'''
 for i in range(30):
   print('===>')

 for+break: 同while循环一样
 for+else:同while循环一样
 username='egon'
 password='123'
 for i in range(3):
   inp_name = input('请输入您的账号:')
   inp_pwd = input('请输入您的密码:')

   if inp_name == username and inp_pwd == password:
     print('登录成功')
     break
 else:
   print('输错账号密码次数过多')

 

 


 四:range补充知识(了解)

 1、for搭配range,可以按照索引取值,但是麻烦,所以不推荐
 l=['aaa','bbb','ccc']                                                    # len(l)
 for i in range(len(l)):
   print(i,l[i])

 for x in l:
   print(l)


 2、range()在python3里得到的是一只"会下蛋的老母鸡"

 

 


 五:for+continue
 for i in range(6):                                                                       # 0 1 2 3 4 5
   if i == 4:
     continue
 print(i)

 

 

 

 六:for循环嵌套:外层循环循环一次,内层循环需要完整的循环完毕
 for i in range(3):
   print('外层循环-->', i)
 for j in range(5):
   print('内层-->', j)

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

   print('hello %s' % 'egon')

 

1、print之逗号的使用
   print('hello','world','egon')
 

2、换行符
   print('hello\n')
   print('world')

3、print值end参数的使用
   print('hello\n',end='')
   print('word')
   print('hello',end='*')
   print('world',end='*')

 

 

 

 

 

数字类型

 

 一:int类型

 1、作用:
 2、定义:
 age = 10                                  # age=int(10)

# 名字(参数)
 print('hello','world')

 x=int(10)
 name=input('xxx')
 res=print('xxx')                                  # 没有产品
 print(res)

 

 类型转换

1 纯数字的字符串转成int
 res=int('100111')
 print(res,type(res))

 2(了解)
 2.1 十进制转成其他进制
 10进制 -> 二进制
 11 - > 1011
 1011-> 8+2+1
 print(bin(11))                                           # 0b1011

 10进制 -> 八进制
 print(oct(11))                                           # 0o13

 10进制 -> 十六进制
 print(hex(11))                                         # 0xb
 print(hex(123))                                      # 0xb

 

2.2 其他制转成其十进制

 二进制->10进制
   print(int('0b1011',2))                           # 11

 二进制->8进制
   print(int('0o13',8))                              # 11

 二进制->16进制
   print(int('0xb',16))                              # 11

 

 

 

 二:float类型

 1、作用
 2、定义
 salary=3.1                                                         # salary=float(3.1)

 3、类型转换
 res=float("3.1")
 print(res,type(res))

 4、使用
 int与float没有需要掌握的内置方法
 他们的使用就是数学运算+比较运算

 

 

 

 

 

 

字符串类型

 

 1、作用

把其他类型数据,比如int类型进行转换

 


 2、定义

 msg='hello' # msg=str('msg')
 print(type(msg))

 

 

 3、类型转换

 str可以把任意其他类型都转成字符串
 res=str({'a':1})
 print(res,type(res))

 

 

4、使用:内置方法

(优先掌握)
1.1、按索引取值(正向取+反向取) ,只能取
msg='hello world'
# 正向取
 print(msg[0])
 print(msg[5])
# 反向取
 print(msg[-1])

# 只能取
 msg[0]='H'         # 此项会报错TypeError,   对于str来说,只能按照索引取值,不能修改


1.2、切片:索引的拓展应用,从一个大字符串中拷贝出一个子字符串
msg='hello world'
# 顾头不顾尾
 res=msg[0:5]                           #hello,取到第4位字符
 print(res)
 print(msg)

 

# 步长
 res=msg[0:5:2]                         # 0 2 4, 从第0位取到第4位,步长为2
 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)

 

 1.3、长度len
 msg='hello world'
 print(len(msg))

 

1.4、成员运算in和not in

 判断一个子字符串是否存在于一个大字符串中,使用in
 print("alex" in "alex is sb")
 print("alex" not in "alex is sb")
 print(not "alex" in "alex is sb")                            # 不会报错,但是不推荐使用

 

1.5、移除字符串左右两侧的符号strip(实质是产生了新值)
作用: 默认去掉的空格
 msg=' egon '
 res=msg.strip()
 print(msg)                    # 不会改变原值
 print(res)                     # 是产生了新值

 

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

 

# 了解:strip只去两边,不去中间
 msg='****e*****gon****'
 print(msg.strip('*'))                   # 打印出e*****gon,即两边读取,直到读取到非空格的值停止取值

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

# 应用
 inp_user=input('your name>>: ').strip()                                 # inp_user=" egon"
 inp_pwd=input('your password>>: ').strip()
 if inp_user == 'egon' and inp_pwd == '123':
   print('登录成功')
 else:
   print('账号密码错误')

 


1.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)

 

1.7、循环
 info='egon:18:male'
 for x in info:
  print(x)

 

 

2 需要掌握

2.1、strip,lstrip,rstrip
 msg='***egon****'
 print(msg.strip('*'))                #去掉两边的*
 print(msg.lstrip('*'))               #去掉左边的*
 print(msg.rstrip('*'))              #去掉右边的*

 

2.2、lower,upper
msg='AbbbCCCC'
print(msg.lower())               #字符串全变小写
print(msg.upper())              #字符串全变大写

 

2.3、startswith,endswith
 print("alex is sb".startswith("alex"))
 print("alex is sb".endswith('sb'))

 

2.4、format

 

用法:str.format     (兼容性好,在python2.6版本时候推出,所以兼容python2和python3,推荐使用

 

1) 按照位置传值

res='我的名字是 {} 我的年龄是 {}'.format('egon',18)
print(res)

 res='我的名字是 {0}{0}{0} 我的年龄是 {1}{1}'.format('egon',18)

print(res)

 

2) 打破位置的限制,按照key=value传值   

res="我的名字是 {name} 我的年龄是 {age}".format(age=18,name='egon')
print(res)

 

 

 

3)四舍五入

 

print('{salary:.3f}'.format(salary=3.1415926))                      #3.142    精确到小数点后三位

 

 

 

2.5、split,rsplit:将字符串切成列表

 info="egon:18:male"
 print(info.split(':',1))                                                  # ["egon","18:male"], split会自动按照从左到右的顺序对字符串 进行切分, 可以指定切分次数
 print(info.rsplit(':',1))                                                 # ["egon:18","male"],rsplit就是从右向左切分

 

2.6、join: 把列表拼接成字符串

l=['egon', '18', 'male']
res=l[0]+":"+l[1]+":"+l[2]
res=":".join(l)                                                                    # 按照某个分隔符号,把元素全为字符串的列表拼接成一个大字符串
print(res)

 l=[1,"2",'aaa']
 ":".join(l)                                        #从列表l中取出的字符串按照分隔符':'进行拼接

 

2.7、replace

#语法:replace('旧内容', '新内容',修改个数)

 msg="you can you up no can no bb"
 print(msg.replace("you","YOU",))
 print(msg.replace("you","YOU",1))

 

2.8、isdigit
 判断字符串是否由纯数字组成
 print('123'.isdigit())
 print('12.3'.isdigit()) age=input('请输入你的年龄:').strip()

 if age.isdigit():
   age=int(age)                                              # int("abbab")
   if age > 18:
     print('猜大了')
   elif age < 18:
     print('猜小了')
   else:
     print('才最了')
 else:
   print('必须输入数字,傻子')

 

 

 

3了解

3.1、find,rfind,index,rindex,count

find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1

index:同find,但在找不到时会报错

count:统计字符串在大字符串中出现的次数

msg='hello egon hahaha'
# 找到返回起始索引
 print(msg.find('e')) # 返回要查找的字符串在大字符串中的起始索引
 print(msg.find('egon'))
 print(msg.index('e'))
 print(msg.index('egon'))
# 找不到
 print(msg.find('xxx'))                                    # 返回-1,代表找不到
 print(msg.index('xxx'))                                 # 抛出异常

 msg='hello egon hahaha egon、 egon'
 print(msg.count('egon'))

 

3.2、center,ljust,rjust,zfill
 print('egon'.center(50,'*'))                  #字符串居中显示,总宽度为50,不足的地方用*补足
 print('egon'.ljust(50,'*'))                     #字符串左对齐显示,总宽度为50,不足的地方用*补足
 print('egon'.rjust(50,'*'))                    #字符串右对齐显示,总宽度为50,不足的地方用*补足
 print('egon'.zfill(10))                         #总宽度10,字符串右对齐显示,不够用0填充,固定填充格式

 

3.3、expandtabs

作用:把字符串中的 tab符号('\t')转为空格,tab符号('\t')默认的空格数是 8

 msg='hello\tworld'                                      # \t表示制表符(Tab键)
 print(msg.expandtabs(2))                          # 设置制表符代表的空格数为2

 

3.4、captalize,swapcase,title

 print("hello world egon".capitalize())
 print("Hello WorLd EGon".swapcase())
 print("hello world egon".title())

 

3.5、is数字系列

 print('abc'.islower())
 print('ABC'.isupper())
 print('Hello World'.istitle())
 print('123123aadsf'.isalnum())                # 字符串由字母或数字组成结果为True
 print('ad'.isalpha())                                  # 字符串由由字母组成结果为True
 print(' '.isspace())                                    # 字符串由空格组成结果为True
 print('print'.isidentifier())
 print('age_of_egon'.isidentifier())
 print('1age_of_egon'.isidentifier())


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

# isdigit只能识别:num1、num2, 即bytes&unicode类型
 print(num1.isdigit())    # True
 print(num2.isdigit())    # True
 print(num3.isdigit())    # False
 print(num4.isdigit())    # False

 

# isnumberic可以识别:num2、num3、num4, 即bytes&unicode&中文类型
 print(num2.isnumeric())    # True
 print(num3.isnumeric())    # True
 print(num4.isnumeric())    # True

 

# isdecimal只能识别:num2,即Unicode,所以基本不用
print(num2.isdecimal())    # True
print(num3.isdecimal())    # False
print(num4.isdecimal())    # False

 

 

 

 

 

posted @ 2020-03-10 18:23  凌醉枫  阅读(1073)  评论(0编辑  收藏  举报