# 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)
posted @ 2020-11-28 18:30  田二爷  阅读(17063)  评论(0编辑  收藏  举报