您的位置:首页 > 编程语言 > Python开发

python核心编程v2.0 第8章习题答案

2017-08-21 17:02 351 查看
2.

if __name__ == '__main__':
f = int(raw_input('from:'))
t = int(raw_input('to:'))
i = int(raw_input('increment:'))

x = 0
while f+x <= t:
print f+x
x = x + i


3.

print range(0,10)
print range(3,21,3)
print range(-20,1080,220)


4.

def showMaxFactor(num):
count = num/2

while count>1:
if num % count == 0:
return False
break
count = count-1
else:
return True

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
print showMaxFactor(num)


5.

def getfactors(num):
lis = []
for i in range(num):
if i == 0:
pass
else:
if num % i == 0:
lis.append(i)
lis.append(num)
return lis

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
lis = getfactors(num)
for i in lis:
print i


6.

def showMaxFactor(num):
count = num/2

while count>1:
if num % count == 0:
return False
break
count = count-1
else:
return True

def getfactors(nex,lis):
i=2
while i <= nex:
if nex % i == 0 and showMaxFactor(i) == True:
lis.append(i)
nex = nex/i
#迭代寻找,注意完成后需要break否则会出现错误
getfactors(nex,lis)
break

i = i+1
return lis

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
lis = []
li = getfactors(num,lis)
for i in li:
print i


7.

def getfactors(num):
lis = []
for i in range(num):
if i == 0:
pass
else:
if num % i == 0:
lis.append(i)
return lis

def isperfect(num,lis):
s =sum(lis)
if num == s :
return 1
else:
return 0

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
lis = getfactors(num)
# print lis
print isperfect(num,lis)


8.

def factorial(num):
i = 1
sum = 1
while i <= num:
sum = sum*num
num = num -1
i = i+1
return sum

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
print factorial(num)


9.

def f(num):
lis = [1,1]
i = 2
while i < num:
lis.append(lis[i-2]+lis[i-1])
i = i+1

return lis[num-1]

if __name__ == '__main__':
while True:
num = int(raw_input('number'))
ls = f(num)
print ls


10.

元音字母为aeiou 读取后比对即可,单词用空格来确定。特殊情况需要查语法,未补充,大概思路一样,会涉及读到某个字母则再向下多读一个的情况

def count(sentence):
ls = list('aeiou')
num1 = 0
num2 = 0
num3 = 1
for i in sentence:
if i == ' ':
num3=num3+1
elif i in ls:
num1 = num1+1
else:
num2 = num2+1
print num1,num2,num3

if __name__ == '__main__':
while True:
sentence = raw_input('sentence')
count(sentence)


11.

def check(name):
if name.count(',')!=1:
return 1
else:
return 0
if __name__ == '__main__':
ls = []
wrong = 0
for i in range(4):
name = raw_input('name')
if check(name)!= 0:
wrong = wrong + check(name)
print 'now wrong',wrong
else:
ls.append(name)

ls.sort()
for i in ls:
print i


12.

if __name__ == '__main__':
num1 = int(raw_input('from'))
num2 = int(raw_input('to'))
print 'DEC','BIN','OCT','HEX',
#若这个范围内会出现可打印ascll码的范围,则添加一栏
if 32<=num2<=127 or 32<=num1<=127 :
print 'ASCLL'
else:
print ''
for i in range(num1,num2+1):
print i,bin(i),oct(i),hex(i),chr(i)


13.

参考百度文库中一份答案

timeit 用于测指令耗时

import timeit
li = ['wqe','as','we','qwr','wqee']
li *= 10000

#不在这两个函数中使用print,print耗时较大
def inter_direct():
for i in li:
j = i

def inter_index():
for i in range(len(li)):
j = li[i]

if __name__ == '__main__':
tindex = timeit.Timer("inter_index()","from __main__ import inter_index")
tdirect = timeit.Timer("inter_direct()", "from __main__ import inter_direct")
print tindex.timeit(10)
print tdirect.timeit(10)


结果:

0.0222831201904
0.00943949609575


通过索引的迭代:使用range()函数得到list的索引数列表,再利用索引查找对应的序列对象,查找增加了复杂度

通过序列项的迭代:变量被设置为list中特定的某个元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 编程