# 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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM