# Python程序语言设计基础(第二版)程序练习题
Python程序语言设计基础(第二版)程序练习题
3.1 重量计算,月球上物体的体重是在地球上的16.5%,假如你在地球上每年增长0.5kg,编写程序输出未来10年你在地球和月球上的体重状况。
current_weight = float(input('当前体重kg:'))
for i in range(1,11):
current_weight += 0.5
moon_weight = current_weight*16.5/100
print('第{:d}年,地球体重{:.2f}kg,月球体重{:.2f}kg'.format(
i,current_weight,moon_weight
))
运行结果:
当前体重kg:50
第1年,地球体重50.50kg,月球体重8.33kg
第2年,地球体重51.00kg,月球体重8.41kg
第3年,地球体重51.50kg,月球体重8.50kg
第4年,地球体重52.00kg,月球体重8.58kg
第5年,地球体重52.50kg,月球体重8.66kg
第6年,地球体重53.00kg,月球体重8.74kg
第7年,地球体重53.50kg,月球体重8.83kg
第8年,地球体重54.00kg,月球体重8.91kg
第9年,地球体重54.50kg,月球体重8.99kg
第10年,地球体重55.00kg,月球体重9.07kg
3.2 天天向上续。尽管每天坚持,但人的能力发展并不是无限的,它符合特定模型。假设能力增长符合如下带有平台期的模型:以7天为周期,连续学习3天能力值不变,从第四天开始至第七天每天能力增长为前一天的1%。如果7天中有1天间断学习则周期从头计算。请编写程序回答,如果初始能力值为1,连续学习365天后能力值是多少?
initial_value = 1
for i in range(365):
if i%7 in [4,5,6,0]:
initial_value = initial_value*(1+0.01)
print('{:.5f}'.format(initial_value))
运行结果:
8.00142
天天向上续。采用程序练习题3.2的能力增长模型,如果初始能力为1,固定每10天休息1天,365天后能力值是多少?如果每15天休息一天呢?
每10天休息1天
initial_value = 1
increased_capacity = 0.01
for i in range(365):
if i%7 in [4,5,6,0] and i%10 != 0:
initial_value = initial_value*(1+increased_capacity)
print('{:.5f}'.format(initial_value))
运行结果:
6.49259
每15天休息1天
initial_value = 1
increased_capacity = 0.01
for i in range(365):
if i%7 in [4,5,6,0] and i%15 != 0:
initial_value = initial_value*(1+increased_capacity)
print('{:.5f}'.format(initial_value))
运行结果:
7.03055
3.4 回文数判断,设n是一任意自然数,如果n的个位反向排列所得自然数与n相等,则n被称为回文数。从键盘输入一个5位数字,请编写程序判断这个数字是不是回文数。
number = input('请输入一个数字:')
number_int = int(number)
if number_int/10000 >= 1:
if number[0]==number[4] and number[1]==number[3]:
print(number)
else:
print('这个数不是回文数')
else:
print('输入的数字不是5位数')
运行结果:
请输入一个数字:34543
34543
3.5 田字格的输出。使用print()函数输出如图3.6所示样式的田字格。
n = eval(input('请输入一个奇数:'))
a,b,c,d = '-','┼','∣',' '
m = n//2
if n%2 == 1:
for i in range(n):
if i in [0,m,n-1]:
print('{0}{1}{0}{1}{0}'.format(b,a*m))
else:
print('{0}{1}{0}{1}{0}'.format(c,d*2*m))
else:
print('输入的不是奇数')
# 在maskdown中田字格显示和终端中显示有所区别,因此不予展示
3.6 文本进度条。仿照实例4,打印如下形式的进度条。
实例4:
import time
scale = 10
print('------执行开始------')
for i in range(scale+1):
a,b = '**' * i,'..' * (scale-i)
c = (i/scale)*100
print('%{:^3.0f}[{}->{}'.format(c,a,b))
time.sleep(0.1)
print('------执行结束------')
修改后:
import time
scale = 100
for i in range(scale+1):
a,b = 'Staring..','Done.'
c = (i/scale)*100
if c<=99:
print('\r{} {:^3.0f}%'.format(a,c),end='')
else:
print('\r{} {:^3.0f}% {}'.format(a,c,b))
time.sleep(0.1)
#输出效果
Staring.. 100& Done.
3.7 文本风格。将如下程序段存成文件,在控制台终端(如 Windows 的cmd.exe)。运行该程序,观察输出结果。更改print()函数的参数,例如,去掉 end 的赋值,再观察运行结果。
源代码:
while True:
for i in ['/','-','|','\\','|']:
print('%s\r' % i,end='')
5个符号无限循环下去
去掉 end='' 则末尾换行,5个符号竖列循环
去掉 \r 则光标继续在末尾,5个符号依次横向循环
3.8 小巧而精致的第三方进度条工具库。tqdm 是一个快速、扩展性强的进度条工具库。tqdm 是一个第三方库,首先需要安装,然后才能运用。本书8.6节将详细介绍第三方库的安装方法。请读者提前参考阅读。运行如下程序,观察运行结果。
源代码:
from tqdm import tqdm
from time import sleep
for i in tqdm(range(1,100))
sleep(0.01)
Python语言学习菜鸟 老家四川南充,来玩留言,嘻嘻
话说觉得这个主题难受的请下面评论