天天向上的力量
本节知识点:变量 函数 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