(一)天天向上的力量
描述
工作日模式要努力到什么水平,才能与每天努力1%一样?
-A君: 一年365天,每天进步1%,不停歇
-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?
每周工作5天休息2天,计算工作日的努力参数是多少才能与每天努力1%一样。
要求如下:
(1) 一年365天,以第0天的能力值为基数,记为1.0;
(2) 当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;
输出
输出结果格式如下:(其中结果保留小数点后三位,冒号后有一个空格)
工作日的努力参数是: 0.019
代码
def Daydayup(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 Daydayup(dayfactor)<37.78:
dayfactor+=0.001
print("工作日的努力参数是: {:.3f}".format(dayfactor))
注意
自定义一个函数,然后调用。使用while语句,与37.78不断地进行比较,直到找到使能力值与37.78相等的努力参数。
(二)文本进度条
描述
采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
要求如下:
(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;
(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为’’,每次使用print()函数输出时不能换行;
(3) 要能回退:打印后光标到之前的位置 \r。
输出
代码
import time
scale=50
print("执行开始".center(scale//2,"-"))
start =time.perf_counter()
for i in range (scale+1):
a='*'*i
b='.'*(scale-i)
c=(i/scale)*100
d=time.perf_counter()-start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,d),end=' ')
time.sleep(0.1)
print("\n"+"执行结束".center(scale//2,'-'))
注意
首先用\r将光标移到本行起始位置,最后的end是print运行结束后光标停留在原地,并不转移到下一行。
(三)三次方格式化**
描述
获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。
输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
输入输出示例
代码(自)
a=input()
x=str(eval(a)**3)
if len(x)>20:
print(x)
else:
print("{:-^20}".format(x))
代码(他)
a= eval(input())
print("{:-^20}".format(pow(a,3)))
注意
input输入的是字符串类型,进行数学计算时要使用eval()将其转换成数字类型,然后只有字符串类型可以判断长度,所以又通过str()转换成字符串类型。
(四)星号三角形
描述
读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:
第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
输入输出
代码
n =eval(input())
for i in range(1, n+1, 2):
print("{0:^{1}}".format('*'*i,n))
注意
range(start,stop[,step])
(五)恺撒密码
描述
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母az,AZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入输出
示例1: python is good
示例1: sbwkrq lv jrrg
代码
s = input()
t = "" #定义一个空的字符串存入加密后的字符串
for c in s: #将输入的每个字符遍历循环
if 'a' <= c <= 'z': #小写
t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
elif 'A' <= c <= 'Z': #大写
t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
else:
t += c #其他的字符直接存入
print(t)
注意
char()将Unicode形式转化成字符,ord()将字符转化成Unicode形式。字符之间的转换最终都转换成编码的转换,类似于c++的ASSCII编码。字符串之间的“+” 是在原有基础上进行连接。
测验1
描述
获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充。如果结果超过30个字符,则以结果宽度为准。
代码
a=int(input())
print("{0:+>30.3f}".format(pow(a,0.5)))
注意
要先将输入变成整型数据,数字类型才能保留小数。
测验2
描述
获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出
代码
s=input()
l=s.split('-')
print(l[0]+'+'+l[-1])
注意
split返回的是一个列表形式