第五章
第一题:
整形。普通整形与长整形的区别。
普通整形即标准整形是最通用的数字类型。它的取值范围是-2**31 ~~ 2**31-1,也就是-2 147 483 648 ~~ 2 147 483 647。python的长整形与C或其他编译型语言完全不同,它所表示的范围仅与机器所能支持的内存大小有关,也就是说python能轻松表示很大的整形。
第二题:
操作符。
(a)写一个函数,计算并返回两个数的乘积。
<span style="font-size:14px;">def num(a,b):
return a*b</span>
(b)写一段代码调用这两个函数,并显示它的结果。
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
def num(a,b):
return a*b
if __name__=='__main__':
m = input()
n = input()
print num(m,n)</span>
第三题:
标准类型操作符。写一段脚本,输入一个测验成绩,根据下面的标准,输出它的评分成绩(A--F)。
A:90~~100 B:80~~89 C:70~~79 D:60~~69 F:<60
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
def test(a):
if a < 0 or a > 100:
print 'Please input a corrent number!'
elif a >= 90:
print 'A'
elif a >= 80:
print 'B'
elif a >= 70:
print 'C'
elif a >= 60:
print 'D'
else:
print 'F'
if __name__=='__main__':
while True:
n = input()
test(n)</span>
第四题:
取余。判断给定的年份是否是闰年。
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
def test(a):
if (a%4==0 and a%100!=0) or (a%400==0):
print '这是闰年!'
else:
print '不是闰年!'
if __name__=='__main__':
while True:
n = input()
test(n)</span>
第五题:
取余。取任意小于一美元的金额,然后计算可以换成最少多少枚硬币。
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
def test(a):
a = a*100
count = 0
count += a//25
a = a%25
count += a//10
a = a%10
count += a//5
a = a%5
count += a
return count
if __name__=='__main__':
while True:
n = input()
num = test(n)
print '最少换成%d枚硬币'%num</span>
第六题:
算术。写一个计算器程序,接受一个表达式,可以计算加、减、乘、除、取余、幂运算,并返回结果。
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
def test(num1,c,num2):
if c == '+':
return num1 + num2
elif c == '-':
return num1 - num2
elif c == '*':
return num1 * num2
elif c == '/':
return num1 / num2
elif c == '%':
return num1 % num2
elif c == '**':
return num1 ** num2
if __name__=='__main__':
while True:
n = raw_input()
if len(n) == 3:
num = test(float(n[0]),n[1],float(n[2]))
print num
else:
print float(n[0])**float(n[3])</span>
第七题:
略
第八题:
几何。计算面积和体积。
(a)正方形和立方体
(b)圆和球
<span style="font-size:14px;">#2015-02-24
# -*- coding: utf-8 -*-
import math
if __name__=='__main__':
while True:
a = float(raw_input())
print '正方形的面积为:%f'%(a*a)
print '立方体的面积为:%f'%(a*a*6)
print '立方体的体积为:%f'%(a**3)
print '圆的面积为:%f'%(a*a*math.pi)
print '球的面积为:%f'%(4*a*a*math.pi)
print '球的体积为:%f'%((4*math.pi*a**3)/3)</span>
第九题:
数值形式 回答下面关于数值格式的问题:
(a) 为什么下面的例子里 17+32 等于 49, 而 017+32 等于 47, 017+032 等于 41?
因为对于python来说八进制整数以0开头,17+32为两个十进制数相加,结果为49;而017为八进制,相当于十进制的15,所以017+32返回的十进制的结果为47;同理,017+032的结果为41。
(b)为什么下面这个表达式我们得到的结果是 134L 而不是 1342 ?
>>>56l+78l
134L
因为这是两个长整形相加,后面的字符是小写的'l',python中长整形提倡使用大写L。
第十题:
转换。写一个函数来进行华氏度到摄氏度的转换。转换公式为C=(F-32)*(5/9)应该在这个练习中使用真正的除法,否则你会得到不正确的结果。
#2015-02-26
# -*- coding: utf-8 -*-
def Temperature(F):
C = (F-32)*(5.0/9)
return C
if __name__=='__main__':
while True:
n = input('Please input:')
result = Temperature(n)
print result
第十一题:
取余。
(a)使用循环和算术运算,求出0~20之间的所有偶数。
(b)同上,不过这次输出所有的奇数。
(c)综合(a)和(b),请问辨别奇数和偶数的最简单的方法是什么?
(d)使用(c)的成果,写一个函数,检测一个整型是否被另一个整型整除。先要求用户输入两个数,然后你的函数判断两者是否有整除关系,根据判断结果分别返回True和False。
(a) and (b) 判断奇偶数:
<span style="font-size:14px;">#2015-02-26
# -*- coding: utf-8 -*-
def Test(T):
even = []
odd = []
for i in range(21):
if i%2==0:
even.append(i)
else:
odd.append(i)
if T==1:
return even
else:
return odd
if __name__=='__main__':
print '0~20所有的偶数为:',
for i in Test(1):
print i,
print '\n0~20所有的奇数为:',
for i in Test(0):
print i,
</span>
(c):能否被2整除。
(d):
<span style="font-size:14px;">#2015-02-26
# -*- coding: utf-8 -*-
def Test(a,b):
if a%b==0:
x=1
else:
x=0
if b%a==0:
y=1
else:
y=0
return (x,y) #返回一个元组
if __name__=='__main__':
a = input('Please input the first number:')
b = input('Please input the second number:')
if Test(a,b)[0] and Test(a,b)[1]: #可以这么利用返回值
print '第一个数和第二个数能相互整除!'
elif Test(a,b)[0]:
print '第一个数能被第二个数整除!'
else:
print '第二个数能被第一个数整除!'</span>
第十二题:
系统限制。写一段脚本确认一下你的 Python 所能处理的整数,长整数,浮点数和复数的范围。
利用sys模块的内置方法得出。(这是在网上找的方法)
<span style="font-size:14px;">import sys
print (sys.maxint)
print(-sys.maxint-1)
print(sys.float_info)
print(sys.long_info)</span>
第十三题:
转换。写一个函数把由小时和分钟表示的时间转换为只用分钟表示的时间
#2015-02-27
# -*- coding: utf-8 -*-
def Test(h,m):
minuter = h*60+m
return minuter
if __name__=='__main__':
while True:
h = input()
m = input()
if (h<23 and h>-1) and (m<60 and m >-1):
print 'The time is %d minuters' % Test(h,m)
else:
print 'Please input corrently!'
第十四题:
银行利息。写一个函数,以定期存款利率为参数,假定该账户每日计算复利,请计算返回年回报率。
def Test(day_rate):
year_rate = (1+day_rate)*365-1
return year_rate
第十五题:
最大公约数和最小公倍数。请计算两个整型的最大公约数和最小公倍数。
#2015-02-27
# -*- coding: utf-8 -*-
def yueshu(m,n):
if m<n:
temp = m
else:
temp = n
for i in range(temp,0,-1):
if m%i==0 and n%i==0:
return i
def beishu(m,n):
yue = yueshu(m,n)
return (m*n)/yue
if __name__=='__main__':
while True:
m = input()
n = input()
print '最大公约数为:%d'%yueshu(m,n)
print '最大公倍数为:%d'%beishu(m,n)
第十六题:
家庭财务。给定一个初始金额和月开销数,使用循环,确定剩下的金额和当月的支出数,包括最后的支出数。
<span style="font-family:SimSun;font-size:14px;">#2015-02-27
# -*- coding: utf-8 -*-
def Payment(cost,total):
count = 0
print ' Amount Remaining'
print 'Pymt# Paid Balance'
print '----- ------ --------'
while True:
print '%2d $%.2f $%6.2f'%(count,total,cost)
if cost-total>=0:
cost = cost-total
else:
if cost !=0:
print '%2d $%.2f $%6.2f'%(count+1,cost,0)
break
count += 1
if __name__=='__main__':
cost = input('Enter opening balance:')
total = input('Enter monthly payment:')
Payment(cost,total)</span>
第十七题
随机数。熟读随机数模块然后解下面的题: 生成一个有 N 个元素的由随机数 n 组成的列表, 其中 N 和 n 的取值范围分别为: (1 < N <= 100), (0 <= n <= 231 -1)。然后再随机从这个列表中取 N (1 <= N <= 100)个随 机数出来, 对它们排序,然后显示这个子集。
#2015-02-27
# -*- coding: utf-8 -*-
import random
N = random.randint(1,100)
list1 = []
for i in range(N):
n = random.randint(0,(2**31-1))
list1.append(n)
list1.sort()
print list1