脚本开头,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用于结束本次循环,开始下一次循环

 

posted @ 2017-07-05 12:25  _revolution  阅读(489)  评论(0编辑  收藏  举报