Python核心编程 练习 第五章

#5-1 整形。讲讲python普通整形和长整型的区别。
#python整形一共有三种:布尔型,长整型和常规整型。普通型和长整型主要的区别是,能表示的数据位数的不同。


#5-2 操作符
#(a) 写一个函数,计算并返回两个数的乘积。
#(b) 写一段代码调用这个函数,并显示他的结果
def mult(x, y):
    return int(x) * int(y)
a = raw_input('input a:')
b = raw_input('input b:')
print 'a * b =', mult(a, b)

#5-3 标准类型运算符. 写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。 
#A: 90–100 B: 80–89 C: 70–79 D: 60–69 F: <60


while True:
    score = raw_input('input your score:')
    score = int(score)
    if score > 100 or score < 0:
        print 'wrong socre input,end'
        break 
    elif score >= 90:
        print '%d is rank A' % score
    elif score >= 80:
        print '%d is rank B' % score
    elif score >= 70:
        print '%d is rank C' % score
    elif score >= 60:
        print '%d is rank D' % score
    else:
        print '%d is rank F' % score

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

def isLeapYear(year):
    year = int(year)
    if(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0 ):
        return True
    else:
        return False
year = raw_input('please input year:')
if (isLeapYear(year)):
    print '%s is leap year' % year
else:
    print'%s is not leap year' % year

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

def centchange(money):
    money = float(money)
    money *= 100
    money = int(money)
    cent25 = money / 25
    money = money % 25
    cent10 = money / 10
    money = money % 10
    cent5 = money / 5
    money = money %5
    cent1 = money
    print'money change:'
    if (cent25 > 0):
        print'cent25 = %d' % cent25
    if (cent10 > 0):
        print'cent10 = %d' % cent10
    if (cent5 >0):
        print'cent5 = %d' % cent5
    if(cent1 > 0):
        print'cent1 = %d' % cent1
        
        
money = raw_input('please input a 0<>1 number:')
centchange(money)

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

def operator(str):
    if str.find('+') >= 0:
        return '+'
    elif str.find('-') >= 0:
        return '-'
    elif str.find('*') >= 0:
        return '*'
    elif str.find('/') >= 0:
        return '/'
    elif str.find('%') >= 0:
        return '%'
    elif str.find('**') >= 0:
        return '**'
calStr = raw_input('please input a calstr like a+b:')
op = operator(calStr)
num = calStr.split(op)
print num
print op
res = 0.0
if op == '+':
    res = float(num[0]) + float(num[1])
elif op == '-':
    res = float(num[0]) - float(num[1])
elif op == '*':
    res = float(num[0]) * float(num[1])
elif op == '/':
    res = float(num[0]) / float(num[1])
elif op == '%':
    res = int(num[0]) % int(num[1])
elif op == '**':
    res = float(num[0]) ** float(num[1])
print 'res is %f' % res

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

def temperaturechange(i):
    C = (i - 32) * (5/9.0) 
    print 'F change to C is %f' % C
    
    
j = float(raw_input('please input F:'))
print 'F is %f' % j
temperaturechange(j)

#5-11 取余
#(a)使用循环和算术运算,求出0~20之间的所有偶数。
#(b)同上,不过这次输出所有奇数。
#(c)综合(a)和(b),请问辨别奇数和偶数的最简单的方法是什么?
#(d)使用(c)的成功,写一个函数,检测一个整形能否被另一个整形整除,先要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。

i = 0
while i <= 20:
    if (i % 2 == 0):
        print i, ' '
    i += 1
j = 0
while j <= 20:
    if (j % 2 == 1):
        print j, " "
    j += 1
a = int(raw_input('input a:'))
b = int(raw_input('input b:'))
if (a % b == 0):
    print 'A can be divided exactly by b '
else:
    print'A can not be divided exactly by b'


#5-12 不会弄,求回复

<pre name="code" class="python">#5-15 最大公约数和最小公倍数。请计算两个整数的最大公约数和最小公倍数。
def maxgys(a, b):
    if b == 0:
        return a
    else:
        return  maxgys(b,a % b)
def mingbs(a, b):
    if (a * b == 0):
        return 0
    else:
        return a * b / maxgys(a, b)
        
x = int(raw_input('input x:'))
y = int(raw_input('input y:'))
print 'maxgys is %s' % maxgys(x, y)
print 'mingbs is %s' % mingbs(x, y)

 






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值