zoukankan      html  css  js  c++  java
  • 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 ')
       print('world')

    3、print值end参数的使用
       print('hello ',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符号(' ')转为空格,tab符号(' ')默认的空格数是 8

     msg='hello world'                                      # 表示制表符(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

     

     

     

     

     

  • 相关阅读:
    python_linux系统相关配置
    python_字典dict相关操作
    python_传参
    mapreduce 学习笔记
    linux 常用命令
    C++ stringstream介绍,使用方法与例子
    C++/C++11中std::numeric_limits的使用
    C++中string erase函数的使用
    C++中accumulate的用法
    malloc的用法和意义
  • 原文地址:https://www.cnblogs.com/lucky-cat233/p/12457660.html
Copyright © 2011-2022 走看看