python编程题3:天天向上的⼒量+三次⽅格式化+星号三⾓形+恺撒密码等1. 天天向上的⼒量
问题描述:
⼯作⽇模式要努⼒到什么⽔平,才能与每天努⼒1%⼀样?
-A君: ⼀年365天,每天进步1%,不停歇
-B君: ⼀年365天,每周⼯作5天休息2天,休息⽇下降1% ,要多努⼒呢?
每周⼯作5天休息2天,计算⼯作⽇的努⼒参数是多少才能与每天努⼒1%⼀样。
要求如下:
(1) ⼀年365天,以第0天的能⼒值为基数,记为1.0;
(2) 当好好学习时,能⼒值相⽐前⼀天提⾼1%;当没有学习时,由于遗忘等原因能⼒值相⽐前⼀天下降1%;
输出结果格式如下:(其中结果保留⼩数点后三位,冒号后有⼀个空格)
⼯作⽇的努⼒参数是: 0.019
def dayUP(df):
dayup =1
for i in range(365):
if i %7in[6,0]:
dayup = dayup*(1-0.01)
else:
dayup = dayup*(1+ df)
return dayup
dayfactor =0.01
while dayUP(dayfactor)<37.78:
dayfactor +=0.001
print("⼯作⽇的努⼒参数是:{:.3f} ".format(dayfactor))
⼯作⽇的努⼒参数是:0.019
2. ⽂本进度条
要求如下:
(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
dur = time.perf_counter()- start
print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
time.sleep(0.1)
print("\n"+"执⾏结束".center(scale//2,'-'))
-
----------执⾏开始----------
100%[**************************************************->]5.13s
-----------执⾏结束----------
3. 三次⽅格式化
描述:
获得⽤户输⼊的⼀个数字,可能是整数或浮点数,a,计算a的三次⽅值,并打印输出。输出结果采⽤宽度20个字符、居中输出、多余字符采⽤减号(-)填充。
如果结果超过20个字符,则以结果宽度为准。
输⼊输出⽰例:
b =eval(input())
c=pow(b,3)
print("{:-^20}".format(c))
10
--------1000--------
4. 星号三⾓形
描述
读⼊⼀个整数N,N是奇数,输出由星号字符组成的等边三⾓形,要求:
第1⾏1个星号,第2⾏3个星号,第3⾏5个星号,依次类推,最后⼀⾏共N的星号。
输⼊输出⽰例
N=eval(input())
for i in range(N):
if(i+1)%2==1:
a=str('*'*(i+1))
(N," "))
3
*
***
这⾥要介绍center()函数
5. 恺撒密码
恺撒密码是古罗马恺撒⼤帝⽤来对军事情报进⾏加解密的算法,它采⽤了替换⽅法对信息中的每⼀个英⽂字符循环替换为字母表序列中该字符后⾯的第三个字符,即,字母表的对应关系如下:
原⽂: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 Z、空格和特殊符号,请编写⼀个程序,对输⼊字符串进⾏恺撒密码加密,直接输出结果,其中
zA
空格不⽤进⾏加密处理。使⽤input()获得输⼊。
输⼊
⽰例1: python is good
输出
⽰例1: sbwkrq lv jrrg
s =input()
t =""
for c in s:
if'a'<= c <='z':#str是可以直接⽐较的
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)
python is good
sbwkrq lv jrrg
该问题也曾考虑使⽤place(old,new)函数编程解决,但是会出现重复替换问题且代码不够简洁
注意:使⽤replace⽅法做替换时不能单单写成place(‘a’,‘b’),因为replace()⽅法返回⼀个数值,但必须将这个值再次赋给str,即写成place(‘a’,‘e’)才能使替换⽣效.
5.1 ord() 函数
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,
它以⼀个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,
如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发⼀个 TypeError 的异常。
下⾯三个例⼦说明ord()函数使⽤
ord('a')
97
ord('b')
98
ord('C')
67
注意:字母⼤⼩写不同,ASCII值不同
6. 平⽅根格式化
描述:
获得⽤户输⼊的⼀个整数a,计算a的平⽅根,保留⼩数点后3位,并打印输出。输出结果采⽤宽度30个字符、右对齐输出、多余字符采⽤加号(+)填充。
如果结果超过30个字符,则以结果宽度为准。
输⼊输出⽰例
a =int(input())
result =pow(a,0.5)
print("{:+>30.3f}".format(result))
9999999
++++++++++++++++++++++3162.278
7. 字符串分段组合
描述:python格式化输出format
获得输⼊的⼀个字符串s,以字符减号(-)分割s,将其中⾸尾两段⽤加号(+)组合后输出。
输⼊输出⽰例
s =input()
res = s.split('-')
print(res[0]+'+'+res.pop())
1-2-3-4-5-6-7-8-9-0
1+0
注意
本⽂题⽬来源为Python123平台和中国⼤学MOCC的《Python语⾔程序设计》课程,主讲⽼师:嵩天、黄天⽻、礼欣。如有侵权,⽴删。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。