day19 进度条 & 随机验证码

一、解决进度条的宽度

1 print('%-50s'  %'>')  #左对齐,宽度为50
2 
3 print('%-%ds'  %50)   # d 先被传值,此时 s 还未传值
4 
5 print('%s%%'  %50)   # s 后第一个 % 是取消掉后面一个 % 的意义
6 
7 此时,若需取消 print('%-%ds'  %50) 中第一个 % 的意义,可以在其旁边再加一个%,形式为print('%%-%ds' %50),
8 其结果为  '%-50s'  ,继续为 s 传值,就是 ' %-50s' %">",此时进度条的宽度问题就解决了

 

二、不换行+跳到行首打印

1 import time
2 time.sleep(1)
3 print(('\r %%-ds' %50) %'>' ,end=' ')   # \r 将光标移至行首,end=' ' 控制光标不换行
4 time.sleep(1)
5 print(('\r %%-ds' %50) %'>>' ,end=' ')   # \r 将光标移至行首,end=' ' 控制光标不换行

三、最终结果

import time
def make_progress(percent,width=80):
  if percent>1:percent=1  # 百分比有可能超过1(假如当total_size=1235,recv_size=1234时,第一次传输时没有问题,第二次传输时,百分比就超过1了)
  # 输出的字符串
  show_str=('%%-%ds' %width) % (int(percent*width)* '>')     # 根据已下载的百分比进行打印
  print('\r%s %s%%' %(show_str,int(percent * 100)),end=" ")

total_size=123456
recv_size=0
while recv_sie<total_size:
  time.sleep(0.1)
  recv_size+=1234
  percent=recv_size/total_size
  # 调用进度条功能去打印进度条(进度条应该根据下载的百分比来改变)
  make_progress(percent)

 四、随机验证码(数字+大写字母)

 1 import random
 2 def ver(n):
 3   res=""
 4   for i in range(n):  
 5     # 循环一次得到一个随机字符(数字或者字母)
 6     s=chr(random.randint(65,90))
 7     num=str(random.randint(0,9))   # TypeError: must be str, not int
 8     res+=random.choice([s,num])
 9   return res
10 res=ver(n)  # n 传入具体数字,可随机生成n位数的验证码
11 print(res)

 

posted @ 2018-06-21 19:56  Smart1san  阅读(147)  评论(0编辑  收藏  举报