上海联盟

Python核心编程习题(五)

只看楼主 收藏 回复
  • - -
楼主

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

5-2 运算符

 (a) 写一个函数,计算并返回两个数的乘积  

(b) 写一段代码调用这个函数,并显示它的结果 




"""计算并返回两个数的乘积"""


def product(num1,num2):

    return num1 * num2



if __name__ == '__main__':

    print(product(1,2))


5-3 标准类型运算符. 

写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分 

成绩(A-F)。 

A: 90–100

B: 80–89 

C: 70–79 

D: 60–69 

F: <60 



"""根据用户输入的分数判断分数等级"""

def grade(score):

    if score < 60:

        return "F"

    elif score < 70:

        return "D"

    elif score < 80:

        return "C"

    elif score < 90:

        return "B"

    else:

        return "A"


if __name__ == '__main__':

    score = int(input("请输入您的分数:"))

    print(grade(score))


5-4 取余。

判断给定年份是否是闰年。使用下面的公式: 一个闰年就是指它可以被 4 整除,但不能被 100 整除, 或者它既可以被 4 又可以被 100 整 除。比如 1992,1996 和 2000 年是闰年,但 1967 和 1900 则不是闰年。下一个是闰年的整世 纪是 2400 年。 


"""判断用户给定的年份是否是闰年"""



def leap(year):

    if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:

        return "闰年"

    else:

        return "平年"



if __name__ == '__main__':

    year_in = int(input("请输入年份"))

    print(leap(year_in))



5-5 取余。

取一个任意小于 1 美元的金额,然后计算可以换成少多少枚硬币。硬币有 1 美分,5 美分,10 美分,25 美分四种。1 美元等于 100 美分。举例来说,0.76 美元换算结果 应该是 3 枚 25 美分,1 枚 1 美分。类似 76 枚 1 美分,2 枚 25 美分+2 枚 10 美分+1 枚 5 美分+1 枚 1 美分这样的结果都是不符合要求的。 



while True:

    money = float(input("请输入你的钱数"))

    if money < 1 or money > 99:

        break

    m25 = money / 25

    money = money - 25 * m25


    m10 = money / 10

    money  = money - 10 * m10


    m5 = money / 5

    money = money - 5 * m5


    m1 = money


    print("25美分:%d \n 10美分:%d \n 5美分:%d \n 1美分:%d"%(m25,m10,m5,m1))

    break


5-6 算术。

写一个计算器程序 你的代码可以接受这样的表达式,两个操作数加一个运算符: N1 运算符 N2. 其中 N1 和 N2 为整数或浮点数,运算符可以是+, -, *, /, %, ** 分别表示 加法,减法, 乘法, 整数除,取余和幂运算。计算这个表达式的结果,然后显示出来。提示: 可以使用字符串方法 split(),但不可以使用内建函数 eval(). 



def counter(num1,num2,operator):

    if operator == '+':

        return num1 + num2

    elif operator == '-':

        return num1 - num2

    elif operator == '*':

        return num1 * num2

    elif operator == '/':

        return num1 / num2

    elif operator == '%':

        return num1 % num2




if __name__ == '__main__':

    inNum1 = float(input("请输入第一个数字:"))

    inNum2 = float(input("请输入第二个数字:"))

    inOper = input("请输入操作符:")

    print(counter(inNum1,inNum2,inOper))



5-7 营业税。

随意取一个商品金额,然后根据当地营业税额度计算应该交纳的营业税。 



"""计算营业额"""

price = float(input("请输入您的营业收入:"))

print("你需要缴纳的营业税为%10.2f"%round(price * 0.2,2))


5-8 几何。

计算面积和体积:

 (a) 正方形 和 立方体 (b) 圆 和 球



"""计算营业额"""

price = float(input("请输入您的营业收入:"))

print("你需要缴纳的营业税为%10.2f"%round(price * 0.2,2))


5–9.   数值形式 回答下面关于数值格式的问题:  

(a) 为什么下面的例子里 17+32 等于 49, 而 017+32 等于 47, 017+032 等于 41?

>>> 17 + 32

49 

>>> 017+ 32

 47

>>> 017 + 032

 41 


017和032为8进制形式转换成十进制分别为26和5

(b)为什么下面这个表达式我们得到的结果是 134L 而不是 1342 ? 

>>> 56l + 78l 

134L 

因为这两数字都是长整型


5-10 转换。写一对函数来进行华氏度到摄氏度的转换。转换公式为 C = (F - 32) * (5 / 9) 应该在这个练习中使用真正的除法, 否则你会得到不正确的结果。 



"""华氏度转换成摄氏度"""



def tran(fahre):

    degree = (fahre - 32) * (5 / 9)

    return degree



if __name__ == '__main__':

    userIn = float(input("请输入一个华氏度:"))

    print("转换成摄氏度为:%.1f" % tran(userIn))



5-11 取余。 

(a) 使用循环和算术运算,求出 0-20 之间的所有偶数 

(b) 同上,不过这次输出所有的奇数 

(c) 综合 (a) 和 (b), 请问辨别奇数和偶数的简单的方法是什么? 

(d) 使用(c)的成果,写一个函数,检测一个整数能否被另一个整数整除。 先要求用户输 入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回 True 和 False;


 

def even_number(num):

    """接受一个参数,返回从1到这个参数的所有偶数"""

    for x in range(1, num + 1):

        if x % 2 == 0:

            print(x)



def odd_number(num):

    """接收一个参数,返回从0到这个数的所有奇数"""

    for x in range(0, num + 1):

        if x % 2 != 0:

            print(x)



def exact(num1, num2):

    """判断两参数是否能被整除,可以被整除返回True,不可以返回False"""

    if num1 % num2 == 0:

        return True

    else:

        return False



if __name__ == '__main__':

    even_number(20)

    odd_number(20)

    num1 = int(input("请输入第一个数:"))

    num2 = int(input("请输入第二个数:"))

    print(exact(num1,num2))



5-12 系统限制。

写一段脚本确认一下你的 Python 所能处理的整数,长整数,浮点数和复 数的范围。 



import sys


print(sys.maxsize)      # 整型的取值范围

"""Python3中不存在sys.maxint了,因为int的大小在Python3的版本中不在受限制

"""

print(sys.float_info)       # 浮点型的取值范围

"""

int最大值在sys.maxint.

超过这个值会自动转换成long

(只有2里有,3里已经没了,因为这个值并没什么用,超过的反正会自动转换,

还有一个maxsize是collection的最大size还有点用)

long没有范围,仅取决于内存大小


float信息在sys.float_info里complex就是两个float


"""


5-13 转换。

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

 


def tranTime(time):

    HH,MM = time.split(':',1)

    print("转换成分钟为%d"%(int(HH) * 60 + int(MM)))


if __name__ == '__main__':

    print("时间格式为,小时:分钟")

    time = input("请输入时间:")

    tranTime(time)


5-14 银行利息。

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


5–15.   大公约数和小公倍数。

请计算两个整数的大公约数和小公倍数。


 

def gcd(num1, num2):

    """求出两个整数的最大公约数"""


    # 非递归求法

    while (num1 > 0):

        num = int(num1)

        num1 = int(num2) % num1

        num2 = num

    return num2


    # 递归求法

    # if(num1%num2 == 0):

    #     return num2

    # return gcd(num2,num1%num2)



def lcm(num1, num2):

    return int(num1) * int(num2) / gcd(num1, num2)



if __name__ == '__main__':

    print("最大公约数:",gcd(24, 60))

    print("最小公倍数",lcm(10,20))


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.0


 

def payment(balance,paid):

    print("剩下的金额")

    print("付款#   已付款    余额")

    print("-----   ----    ------")

    b = balance

    m = int(b / paid)

    b = b - m * paid

    while (b > 0):

        m += 1

        b -= paid


    print("%d%11.2f%8.2f"%(0,0.00,balance))

    for month in range(1,m):

        print("%d%11.2f%8.2f"%(month,paid,balance-month*paid))

    print("%d%11.2f%8.2f"%(m,(balance-paid * (m - 1)),0))


if __name__ == '__main__':

    balance = float(input("请输入月初金额"))

    paid = float(input("请输入月开销数"))

    payment(balance,paid)



 







举报 | 1楼 回复

友情链接