最近闲时学点python,教材是电子版的<Python核心编程(第二版)>,以下是我学习期间自己做的练习题,可能解答有误,也许不是最佳思路,希望大家多提宝贵意见,优化优化.
10-17 题解答:
10. 转换. 写一对函数来进行华氏度到摄氏度的转换. 转换公式为 C = (F-32)*(5/9)应该在这个练习中使用真正的除法,否则你会得到不正确的结果.
#!/usr/bin/env python
## -*- coding -*-
## Author:
fahrenheit = float(raw_input("Enter Fahrenheit:\n"))
celsius = (fahrenheit - 32) * (5.0/9)
print "%s %.2f %s %.2f" % ("You have entered Fahrenheit:",fahrenheit,"\nCorresponding Celsius is :",celsius)
11. 取余.
(a) 使用循环和算术运算, 求出0~20之间的所有偶数.
(b) 同上, 不过这次输出所有的奇数.
(c) 综合(a) 和 (b), 请问辨别奇数和偶数的最简单的方法是什么?
(d) 使用(c)的成果, 写一个函数, 检测一个整型能否被另一个整型整除.先要求用户输入两个数, 然后你的函数判断两者是否有整除关系, 根据判断结果分别回True 和 False.
a. print [nu for nu in xrange(21) if nu % 2 == 0]
b. print [nu for nu in xrange(21) if nu % 2 == 1]
c. 被2整除
d.
def exact(p,y):
sigP = "False"
sigY = "False"
if p % y == 0:
sigP = "True"
if y % p == 0:
sigY = "True"
print (sigP or sigY)
if __name__ == "__main__":
import sys
p = float(sys.argv[1])
y = float(sys.argv[2])
exact(p,y)
13. 转换. 写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间.
#!/usr/bin/env python
## -- coding: UTF-8 --
## Author:
if __name__ == "__main__":
import time
nowTime = time.ctime().split()[3]
mins = int(nowTime.split(":")[0]) * 60 + int(nowTime.split(":")[1])
print mins
15. 最大公约数和最小公倍数. 请计算两个整型的最大公约数和最小公倍数.
#!/usr/bin/env python
## -- coding: UTF-8 --
## Author:
import sys
def getGCD(p,y): ## GCD, Greatest Common Divisor, 最大公约数
while not y == 0:
if p < y:
p,y = y,p
else:
p,y = min(p,y),p-y
return p
def getLCM(p,y): ## LCM, Lowest Common Multiple, 最小公倍数
return p * y / getGCD(p,y)
if __name__ == "__main__":
p = int(sys.argv[1])
y = int(sys.argv[2])
print "the Greatest Common Divisor of %d and %d is %d" % (p,y,getGCD(p,y))
print "the Lowest Common Multiple of %d and %d is %d" % (p,y,getLCM(p,y))
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
#!/usr/bin/env python
## -- coding: UTF-8 --
## Author:
remainder = float(raw_input("Enter a number AS TotalCost every month:\n"))
payCost = float(raw_input("Enter a number AS payCost every month:\n"))
print "%23s %25s" % ("Amount","Remaining")
print "%s %16s %25s" % ("Pymt#","Paid","Balance")
print "%s %16s %25s" % ("-------","-------","------------")
print "%3d %18s%.2f %15s%.2f" % (0,"$",0,"$",remainder)
for count in xrange(int(remainder)):
if remainder <= payCost:
payCost = remainder
print "%3d %16s%.2f %15s%.2f" % (count,"$",payCost,"$",(remainder-payCost))
break
else:
print "%3d %16s%.2f %15s%.2f" % (count,"$",payCost,"$",(remainder-payCost))
remainder -= payCost
17. 随机数. 熟读随机数模块然后解下面的题.
生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为(1 < N <= 100)和(0 <= n <= 2的31次方 - 1). 然后再随机从这个列表中取 N (1 <= N <= 100) 个随机数出来, 对它们排序, 然后显示这个子集.
#!/usr/bin/env python
## -*- coding: UTF-8 -*-
## Author:
import random
range = []
unitNu = random.randint(0,100)
for unit in xrange(unitNu):
range.append(random.randint(0,2**31-1))
#print range,len(range)
List = random.sample(range,random.randint(1,unitNu))
#print List,len(List)
List.sort()
print List
转载于:https://blog.51cto.com/juven/936730