《Python核心编程》第二版第97页第五章练习 续五

和大家分享自己完成的《Python核心编程》答案。
因为不是来自官方资源,是自己的的练习,可能有误或者并非最好的解决办法。


5-16.
家庭财务。给定一个初始金额和月开销数,使用循环,确定剩下的金额和当月的支出数,包括最后的支出数。Payment()函数会用到初始金额和月额度,输出结果应该类似下面的格式(例子中的数字仅用于演示)。
Enter opening balance: 100.00
Enter monthly payment:  16.13

           Amount Remaining
Pymt#   Paid      Balance
-----   ----      -------
0 $ 0.00   $100.00
1 $16.13    $ 83.87
2 $16.13    $ 67.74
3 $16.13    $ 51.61
4 $16.13    $ 35.48
5 $16.13    $ 19.35
6 $16.13    $  3.22
7 $ 3.22    $  0.00
【答案】
代码如下:
balance = float(raw_input("Enter opening balance: ... "))
payment = float(raw_input("Enter monthly payment: ... "))
pymt = 1
print '          Amount Remaining'
print 'Pymt#          Paid        Balance'
print '-----          ------      -----------'
print '%4d%15.2f%15.2f' % (0, 0.00, 100)
while (balance - payment*pymt ) >= 0:
    pymt = pymt + 1
    print '%4d%15.2f%15.2f' % (pymt - 1, payment, (balance - payment*(pymt - 1)))
print '%4d%15.2f%15.2f' % (pymt, (balance - payment*(pymt - 1)), 0)
  

5-17.
*随机数。熟读随机数模块然后解下面的题。生成一个有N个元素的由随机数n组成的列表,其中N和n的取值范围分别为(1 < N <= 100)和(0 <= n <= 2**31 - 1)。然后再随机从这个列表中取N(1 <= N <= 100)个随机数出来,对他们排序,然后显示这个子集。
【答案】
代码如下:
import random
big_n = random.randint(1, 101)

list = range(big_n)

for i in range(big_n):
    list[i] = random.randint(-1, 2**31)

print big_n
print list
list.sort()
print list

【参考】列表(list)和字典(dict)数据排序
http://www.javaeye.com/topic/117279
Python 列表(list)操作
http://www.pythonclub.org/python-basic/list
python中的列表排序操作
http://www.ej38.com/showinfo/Python-108670.html
Python随机数模块的相关模块代码的具体介绍
http://developer.51cto.com/art/201003/190410.htm

【推荐】Capricorn的实验室 软件测试工作者的blog
http://www.cnblogs.com/yd1227/

关键词:Pyhon核心编程练习答案 非官方 博客园

原文地址:https://www.cnblogs.com/balian/p/1948923.html