练习3: 基本数据类型 (第3周)
实例3:天天向上的力量
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
工作日模式要努力到什么水平,才能与每天努力1%一样?
-A君: 一年365天,每天进步1%,不停歇
-B君: 一年365天,每周工作5天休息2天,休息日下降1% ,要多努力呢?
每周工作5天休息2天,计算工作日的努力参数是多少才能与每天努力1%一样。
要求如下:
(1) 一年365天,以第0天的能力值为基数,记为1.0;
(2) 当好好学习时,能力值相比前一天提高1%;当没有学习时,由于遗忘等原因能力值相比前一天下降1%;
输出
输出结果格式如下:(其中结果保留小数点后三位,冒号后有一个空格)
工作日的努力参数是: 0.019
a=round(pow(1.01,365),2) def dayup(x): b=1.0 for i in range(365): if i%7 in [6,0]: b=b*(1-0.01) else: b=b*(1+x) return b x=0.01 while dayup(x)<a: x=x+0.001 print("工作日的努力参数是: {:.3f}".format(x))
实例4:文本进度条
描述
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
采用字符串方式打印可以动态变化的文本进度条,进度条需要能在一行中逐渐变化
要求如下:
(1) 采用sleep()模拟一个持续的进度,获得文本进度条的变化时间;
(2) 通过print()函数实现单行动态刷新,在print()函数中更换参数end的默认值为'',每次使用print()函数输出时不能换行;
(3) 要能回退:打印后光标到之前的位置 \r。
请在Windows的命令行(cmd或PowerShell)或其他操作系统的命令行下执行Python程序,获得进度条效果。
import time print("{:-^25}".format("执行开始")) start=time.perf_counter() for i in range(51): print("\r{:3}%[{}->{}]{:.2f}s".format(i*2,'*'*i,'-'*(50-i),time.perf_counter()-start),end='') time.sleep(0.1) print("\n"+"{:-^25}".format("执行结束"))
三次方格式化
描述
获得用户输入的一个数字,可能是整数或浮点数,a,计算a的三次方值,并打印输出。
输出结果采用宽度20个字符、居中输出、多余字符采用减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
输入输出示例
| 输入 | 输出 | |
| 示例 1 |
|
|
a=eval(input()) print("{:-^20}".format(pow(a,3)))
星号三角形
描述
读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:
第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
输入输出示例
| 输入 | 输出 | |
| 示例 1 |
|
|
n=eval(input()) for i in range((n+1)//2): print("{}".format('*'*(i*2+1)).center(n))#体会:函数可以多个使用 #第2种方法 for i in range(1,n+1,2): print("{:^{}}".format('*'*i,n))#体会:槽可以嵌套
恺撒密码
描述
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文: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
假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入
示例1: python is good
输出
示例1: sbwkrq lv jrrg
#方法1 str=input() P='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'.split(' ') p='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'.split(' ') for i in str: if i in P: n=ord(i)-ord('A') print(P[(n+3)%26],end='') elif i in p: n=ord(i)-ord('a') print(p[(n+3)%26],end='') else: print(i,end='') #方法2 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)
浙公网安备 33010602011771号