• 脚本开头,python预编译,控制台输入输出,for,while循环,分支判断,break,continue


    3. name = input("name:")与2.x中raw_input一回事, 注意接收的变量全部默认为字符串类型。

    从控制台接收用户输入,而密文输入import getpass  password = getpass.getpass("password:") 这个不能在pycharm中测试成功,而在命令行模式可以成功!

    4.格式化输出

    #第一种方式:
    
    ,,,
    
    name = {_name}
    
    age = {_age}
    
    ,,,  .format(_name=name,_age=age)
    
    #第二种方式:
    
    ,,,
    
    name={0}
    
    age={1}
    
    ,,, .format(name,age)
    
    #第三种方式:
    
    "name=%s
    
    age=%s"%(name,age)

    有必要说一下迭代器/生成器

    列表生成式: [ i  for i in range(10) ]   在内存中生成列表[0,1,...9],可以根据下标访问其中任意一个元素。如果有几百万个显然不能这样用

    生成器:       ( i  for i in range(10)  )  在内存中是一个地址,不能根据下标访问某元素,只能用gen.next()方法从第一个开始访问

    yield关键字把的作用是返回并且记录该中断点。

    def gen(i): #有yield关键字,i是长度,从1 开始
        n = 1
        while n <= i:
            yield n
            n += 1
        return "done-----"
    
    def fuc(i): #没有yield关键字
        i += 1
        return i
    
    print(gen(10))  # <generator object gen at 0x0000000001DF8888>
    print(gen)      # <function gen at 0x00000000005B3E18>
    print(fuc(10))  # 11

    可以发现,有yield的成了生成器对象   genner = gen(10)  ↓ 生成器对象有个__next__()方法,调用一次激活一次生成器(第一次激活从头开始,第二次...从yield开始)。

    #  第一种调用生成器的方式: whil true + next
    while True:  #  循环到第10个以后就不能next了,因为跳出了while循环yield不了,就抛异常StopIteration
            try:
                print(genner.__next__())
            except StopIteration as e:
                print(e.value)
                break
    
    #  第二种调用生成器的方式,用for循环,这里看出gen(10)是一个迭代器了
    for i in gen(10):
        print(i)
    #循环10次,i从0开始,自增1,循环完10次后执行else中的内容
    
    for i in range(10):
    
        ...
    
    else:
    
        ...
    # 可以设置步长  0 2 4 6 8
    for i in range(0,10,2): 
        
      ...
    else:
      ...
    # 遍历列表:
    1.  for  i  in  list1:                  
    
            print ( list1.index(i) ,  i  ) 
    
          
    2.  for  i,j   in   enumerate(list1):
    
            print  ( i  ,   j)  
    # 遍历字典:  
    1.for  key  in  info: 
    
             print( key , info[k])   #推荐使用
    
    2.for  k,v  in  info.items():
    
             print(k,v)         #不推荐  效率比第一种慢

     三种倒序遍历方法:

    # 第一种方法 
    for x in reversed(array):
               print x
    
    # 第二种方法
    for x in range(len(array)-1,-1,-1):
               print array[x]
    
    # 第三种方法
    for x in array[::-1]:
               print x

    倒序遍历的用处: 

    ['A','B','C','D','E','F','G','H']   删除index为2,4,6 ==>  ['A','B','D','F','H']

    不能pop(2) pop(4) pop(6) 为什么?

    del_list = [4,6,2]   # 被删的index,无序的
    for index in range(len(source)-1,-1,-1): 
        for del_index in del_list:
            if index == del_index:
                source.pop(index)    
    #  这样倒序遍历每次都删除了del_list里面index最大的,即source中最靠近尾部的元素

     可以看出,实际上是这样的删除步骤, pop(6) pop(4) pop(2)可以直接这样:

    del_list.sort(reverse=True)  # del_list降序排列
    for i in del_list:
        source.pop(i)

    7.判断语句

    if a==b and b==c:
    
      ...
    
    elif d==f:
    
      ...
    
    else
    
      ...

    8.break和continue 

      break用于跳出本层循环,continue用于结束本次循环,开始下一次循环

  • 相关阅读:
    这些哭笑不得的情景,每一个程序猿都可能面对
    创建并使用静态库(ar 命令)
    C++中typename和class的区别
    C++11 tuple
    c++ map与 qt QMap insert 区别
    各个函数消耗的时间profiling和内存泄漏valgrind
    Linux查看代码量
    Linux应用程序打包
    静态代码检查工具 cppcheck 的使用
    制作Linux下程序安装包——使用脚本打包bin、run等安装包
  • 原文地址:https://www.cnblogs.com/revo/p/7120615.html
Copyright © 2020-2023  润新知