答:在2.7版本基本淡化了区别。真要区分的话,普通整型是32位或者64位,而长整型只与PC内存有关,很大就是了
答:
a)
def mul(a,b):
return a * b
if __name__ == "__main__":
a = float(raw_input("Please enter first num:"))
b = float(raw_input("Please enter another num:"))
print 'The result is %s' % mul(a,b)
编写的过程中发现自己经常忘记 raw_input() 函数的内部的引号,这个要注意,结果如下
Please enter first num:4
Please enter another num:5
The result is 20.0
其中很多问ti:输入的是字符串怎么办;输入复数怎么办都需要考虑的
b)
答:注,a)文件我的命名是C5_2_a.py,先前直接命名的是5_2_a.py,一直行不通后来想起来了,Python的命名方法不允许开头是数字
前期准备工作是在powershell中一直cd到C5_2_a这个文件的根目录,然后再输入Python进入到交互模式
PS C:\Users\Administrator> cd mystuff
PS C:\Users\Administrator\mystuff> cd exercise
PS C:\Users\Administrator\mystuff\exercise> cd chapter5
PS C:\Users\Administrator\mystuff\exercise\chapter5> python
>>> from C5_2_a import mul
>>> mul(3,4)
12
答:
def score_div(num):
if 90<=num<=100:
return 'A'
elif 80<=num<=89:
return 'B'
elif 70<=num<=79:
return 'C'
elif 60<=num<=69:
return 'D'
else:
return 'F'
在交互模式中执行(其文件名是C5_3.py)
>>> from C5_3.py import *
>>> score_div(79)
'C'
看到大神用一个叫 表格驱动法 的方法处理连环if elif的问ti,以后留意一下
答:
首先小小吐槽一下ti目,闰年不是整百的能被4整除,整百的必须要被400整除才行。ti目说:
既可以被 4 又可以被 100 整除
请问,1900能否满足上述条件?它是闰年吗?显然不是闰年
def leap_year(a):
if ((a%4 == 0) and (a%100 != 0)) or (a%400 == 0):
return '%s is a leap year.' % a
else:
return '%s is not a leap year.' % a
以上在检测的时候,发现from C5_4 import *这个语法,如果脚本做了修改,需要重新关闭shell,在打开操作,否则一直import的以前的函数
答:
def changes(num):
n_25,n_10,n_5,n_1 = 0,0,0,0
n_25 = (num - num % 25)/25
n_10 = (num - n_25 * 25)/10
n_5 = (num - n_25 * 25 - n_10 * 10)/5
n_1 = num - n_25 * 25 - n_10 * 10 - n_5 * 5
return n_25 + n_10 + n_5 + n_1
以上这种方法比较水,看了大神的可以用divmod()函数
def changes(money):
list = [25,10,5,1]
count = 0
for i in list:
result = divmod(money,i)
count += result[0]
money = result[1]
涨姿势了!!!
答:
不知道这个ti目的具体意义是干嘛的~
def calc(newstr):
num = newstr.split(" ")
if num[1] == '+':
return float(num[0]) + float(num[2])
elif num[1] == '-':
return float(num[0]) - float(num[2])
elif num[1] == '*':
return float(num[0]) * float(num[2])
elif num[1] == '/':
return float(num[0]) / float(num[2])
elif num[1] == '%':
return float(num[0]) % float(num[2])
elif num[1] == '**':
return float(num[0]) ** float(num[2])
else:
return 'error'
这个程序很简单,但是用了我一个半番茄!!!
为什么呢?因为从这里复制到note++缩进有问ti,很大的问ti,所以以后写的话一定要在note++写完复制到这里
怎么发现的呢?可以用note++里面那个+,看是不是应该是在一个代码块里面
运行无误~
答:
from math import *
def square(a):
return 'The aera of square is %s' % (a**2)
def cubic(a):
return 'The volume of cube is %s' % (a**3)
def circular(a):
return 'The aera of circular is %s' % (pi*a**2)
def spere(a):
return 'The volume of spere is %s' % (4/3*pi*a**3)
比较常规,唯一需要注意的是需要导入圆周率pi,原来在C5_8.py中导入了pi,在交互模式直接“from C5_8 import *”就不必在调用“from math imort *”了
答:
a)17+32 本来就等于49.这个没啥好解释的。而017+32=47,和017+032=41因为前面加了个0就代表他是八进制的,我们看到的显示是十进制
b)这个是小学脑筋急转弯吗?后边不是数字1,而是小写的字母l,觉得这个有点侮辱智商
答:
def ftoc(f):
return (float(f)-32) * (5.0/9)
亲测无误
答:
a)
for i in range(0,21):
if i % 2 == 0:
print i,
b)
for i in range(0,21):
if i % 2 != 0:
print i,
c)
能否被2整除
d)
def divb(a,b):
if a % b == 0 or b % a == 0:
return True
else:
return False
答:
这个暂且不会,有个思路就是用try 和except,将某个数一直往上加,然后直到报错
答:
def timetrans(time):
a = time.split(':')
return int(a[0])*60 + int(a[1])
这个输入的时候一定要 timetrans('3:45') 这样的格式才行
答:
用到的公式
本息和 = 本金 * (1+a)^365
我觉得这个ti出的很没水平啊,定期存款利率哪里有an天来算的,后面还每日计算复利,那能这么搞啊
答:
数学上求最大公约数可以用辗转相除法,也叫欧几里得法
求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29),
∴ (319,58)=(58,29);
∵ 58÷29=2(余0),
∴ (58,29)= 29;
∴ (319,377)=29. 摘自百度百科---最大公约数
'''最大公约数和最小公倍数都放在同一个文件里面了'''
def comdiv(a,b): #最大公约数,采用欧几里得法
r = a % b
while r!= 0:
a = b
b = r
r = a % b
return b
def commul(a,b):
return a*b/comdiv(a,b) #最小公倍数,采用公式法:最小公倍数 = 两数乘积/最大公约数
>>> from C5_15 import *
>>> comdiv(4,6)
2
>>> commul(3,6)
6
亲测有效
答:
没搞明白题目是什么意思,每个月开销是一样的吗?直接显示出来,还是当做账本,记一笔显示一笔。
不过想来也不难做,先搁置吧
答:
from random import *
N = randint(1,101)
a = 2**31 - 1
list1 = []
for i in range(0,N):
list1.append(randint(0,a))
print list1 #list1就是生成的列表
list2 = []
N2 = randint(1,N)
count = N - 1
for i in range(0,N2):
s = list1.pop(randint(0,count))
count-=1
list2.append(s)
list2.sort()
print list2 #list2就是排序后的列表
题目没有说清楚,生成N个元素的列表,然后再随机从这个列表中取N个随机数,这两个N应该是不一样的N吧?要不然直接用个sort()方法不就完成第二个要求了吗
其中有个难点,在第二个代码块:当pop一个list1的元素出来以后,这个list中就没有了这个元素,其索引值会减一,所以才加了个count,每次取一个元素就自动减一来保证不会出现麻烦