python—天天向上的力量,文本进度条,三次方格式化,星号三角形,恺撒密码

天天向上的力量

本节知识点:变量  函数   for循环   while循环

#每天进步千分之一,每天退步千分之一
dayup = pow(1.001,365)
daydown = pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

  

#一年365天,每天进步5%。或 1% ,累计进步多少?
#一年365天,每天退步5%。 或 1% ,累计剩下多少?
dayfactor = 0.01
#dayfactor = 0.005
dayup = pow(1+dayfactor,365)
daydown = pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

  

#一年365天, 一周5个工作日,每天进步1%
#一年365天,一周2个休息日,每天退步 1%
dayup = 1.0
dayfactor = 0.01
for i in range(365):
    if i % 7 in [6,0]:
        dayup = dayup * (1-dayfactor)
    else:
        dayup = dayup * (1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))

  

#工作日模式要努力到什么水平,才能与每天努力 1% 一样
#A君:一年365天,每天进步 1% ,不停歇
#B君:一年365天,每天工作5天休息2天,休息日下降 1% ,要多努力才能和A君一样。
def dayUP(df):
    dayup = 1
    for i in range(365):
        if i % 7 in [6,0]:
            dayup = dayup * (1-0.01)
        else:
            dayup = dayup * (1+df)
    return dayup
dayfactor = 0.01
while dayUP(dayfactor) < 37.78:   #注:37.78是提前算出A君后,循环比较
    dayfactor= dayfactor + 0.001
print("工作日的努力参数是:{:.3f}".format(dayfactor))

 

文本进度条

import time

scale = 50 

print("执行开始".center(scale//2,"-"))  # .center() 控制输出的样式,宽度为 25//2,即 22,汉字居中,两侧填充 -

start = time.perf_counter() # 调用一次 perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。
for i in range(scale+1):   
    a = '*' * i             # i 个长度的 * 符号
    b = '.' * (scale-i)  # (scale-i) 个长度的 . 符号。符号 * 和 . 总长度为50 
    c = (i/scale)*100  # 显示当前进度,百分之多少
    dur = time.perf_counter() - start    # 计时,计算进度条走到某一百分比的用时
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')  # \r用来在每次输出完成后,将光标移至行首,这样保证进度条始终在同一行输出,即在一行不断刷新的效果;
{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c;{},对应输出的数为a;{},对应输出的数为b;{:.2f},输出有两位小数的浮点数,对应输出的数为dur;end='',用来保证不换行,不加这句默认换行。
time.sleep(0.1) # 在输出下一个百分之几的进度前,停止0.1秒 print("\n"+"执行结果".center(scale//2,'-'))

  

 

三次方格式化

{:-^20} 或 {0:-^20}  两种写法,-  为填充符号 ^20 为宽度20填充并居中

a = pow(eval(input()),3)
print("{:-^20}".format(a))

  

  • {0:^20}中的0是一个序号,表示格式化输出的第0个字符,依次累加;

  • {0:^20}中的20表示输出宽度约束为20个字符;

  • {0:^20}中的^表示输出时居中对齐,若宽度小于字符串的实际宽度,以实际宽度输出;

 

星号三角形

 

n = eval(input())
for i in range(n):
    if (i+1) % 2 ==1:    #判断奇数,于1为奇数,于0为偶数(第二种写法  if i % 2 != 1:)
        a = '*' * (i+1)
        print(a.center(n," "))
  

 

恺撒密码

 

s = input()
t = ""
for i in s:
    if 'a' <= i <='z':
        t = t+chr(ord('a')+((ord(i)-ord('a'))+3)%26)
    elif 'A'<= i <='Z':
        t = t+chr(ord('A')+((ord(i)-ord('A'))+3)%26)
    else:
        t = t+ i
print(t) 

 

详细了解参考:原文链接:https://blog.csdn.net/weixin_43412569/article/details/104886474

该问题也曾考虑使用str.replace(old,new)函数编程解决,但是会出现重复替换问题且代码不够简洁

注意:使用replace方法做替换时不能单单写成str.replace(‘a’,‘b’),因为replace()方法返回一个数值,但必须将这个值再次赋给str,即写成str=str.replace(‘a’,‘e’)才能使替换生效.
5.1 ord() 函数
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,
它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,
如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
下面三个例子说明ord()函数使用

ord('a')
1
97
1
ord('b')
1
98
1
ord('C')
1
67
1
注意:字母大小写不同,ASCII值不同
这里是ord()函数更详细介绍:
https://www.runoob.com/python/python-func-ord.html

posted @ 2020-04-20 10:23  淼如  阅读(1183)  评论(0)    收藏  举报