Python核心编程(第二版) 第五章 习题答案

这篇博客主要解答了Python中关于数字的一些习题,包括整型(普通整型与长整型的区别)、成绩评分系统、判断闰年、货币换算、数值格式理解、华氏度与摄氏度转换、奇偶数判断、时间转换、复利计算、最大公约数和最小公倍数的计算等。通过这些习题,读者可以深入理解Python的数字操作和转换。
摘要由CSDN通过智能技术生成
已放在我的GitHub:https://github.com/Jonariguez/Core_Python_Programing_Exercises_Answers

数字

5-1 讲讲Python普通整型和长整型的区别

Python中的普通整型与C语言中的int类似,根据机器的不同和采用的编译器不同,普通整型可以是32位或者64位的,所能表达的范围分别为-2312<sup>31</sup>-1或-2<sup>63</sup>263-1。

Python中的长整型与C语言的long并不是一个概念,Python的长整型可以很轻松地表示很大的数,即并不局限于263这样的范围,而具体能表示多大的数值,这与计算机的内存大小有关。即在资源范围内,能表示多大就表示多大。

5-3 写一段脚本,输入一个测试成绩,输出他的平分成绩(A-F)

A: 90~100 B: 80~89 C: 70~79 D: 60~69 F:<60

grade = int(input('请输入成绩:'))

if 90<=grade<=100:
    print('A')

if 80<=grade<90:
    print('B')

if 70<=grade<80:
    print('C')

if 60<=grade<70:
    print('D')

if grade<60:
    print('F')

5-4 判断给定年份是否是闰年。

year = int(input('请输入年份:'))

if year%4 == 0 and year%100 != 0 or year%400 == 0:
    print('It is a leap years')
else :
    print('It is not a leap years')

5-5 取任意小于1美元的金额,然后计算可以换成最少多少枚硬币。

因为要求最少,所以肯定是先换面额大的硬币,然后再依次换小一点面额的金币。

money = float(input('请输入金额:'))
money = int(money*100)  #转换成美分

coins = 0

coin,remains=divmod(money,25)   #兑换25美分的硬币能换coin个,并剩remains美分
coins += coin
money=remains

coin,remains=divmod(money,10)
coins += coin
money=remains

coin,remains=divmod(money,5)
coins += coin
money=remains

coin,remains=divmod(money,1)
coins += coin

print('the leastest: %d' % coins)

5-9 回答关于数值格式的问题:

(a)

>>> 17 + 32
49

正常十进制运算

>>> 017 + 32
47

017前面以0开头是八进制表示,32是十进制,结果47也是十进制

>>> 017 + 032
41

017和032都是八进制数。41是十进制

注意:在python2里0和0o开头都能表示这个数是八进制,而在python3里只用0o,0开头已经不适用。

(b)

>>> 56l+78l
134L

输入不是561和781而是56l和78l,即结尾是字符’l’,不是数字1,所以结果也就显而易见了。

5-10 写一对函数来进行华氏度为摄氏度的转换。

#输入temp_F为华氏度
def F_to_C(temp_F):
    temp_C = (temp_F-32)*5/9
    return temp_C

5-11

(a) 使用循环和算术运算,求出0~20之间的所有偶数
#求出[0,20]的偶数
for i in range(21):
    if i%2 == 0:
        print(i)
(b) 同上,求出0~20之间的所有奇数
#求出[0,20]的奇数
for i in range(21):
    if i%2 == 1:
        print(i)
© 综合(a)和(b),请问辨别奇数和偶数的最简单方法是什么?

直接将该数对2取余,余数为0则为偶数,否则为奇数。

(d) 使用©的成果,检测一个整型能否被另一个整型整除

直接用取余即可

def divisible(divisor,be_divisor):
    if divisor % be_divisor ==0:
        return True
    return False

5-13 写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间

小时*60+分钟数即可

def Time():
    Clock = str(input('输入时间:'))
    Hour,Min=Clock.split(':')
    Hour = int(Hour)
    Min = int(Min)
    return Hour*60+Min

5-14 写一个函数,以定期存款利率为参数,假定该账户每日计算复利,请计算并返回年回报率

假设本金是a,利率为r,那么一天之后本金变为a*(1+r),两天后是a*(1+r)*(1+r),… 一年后为a*(1+r)365,
回报率为(a*(1+r)365-a)/a=(1+r)365-1.

def Rate_of_Return(r):
    return (1+r)**365-1

5-15 计算两个整型的最大公约数和最小公倍数

#最大公约数
def gcd(a,b):
    if b==0:
        return a
    return gcd(b,a%b)
#最小公倍数
def lcm(a,b):
    return a//gcd(a,b)*b

5-16 写一个Payment()函数实现如课本所示的功能

def Payment():
    money = float(input('Enter opening balance:'))
    cost = float(input('Enter monthly payment:'))

    print('\t\tAmout Remaining')
    print('Pymt#\tPaid\tBalance')
    print('-----\t------\t---------')
    for i in range(13):
        if money <= 0.0:
            break
        print(str(i)+'\t',end='')
        if i==0:
            print('$0.00\t$'+str(money))
        else :
            if money <= cost:
                cost,money = money,0
            else :
                money -= cost
            print('$'+str(cost)+'\t$'+str(money))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值