1、(10 points)《编程导论》 习题3.1. 假设起始res=0。
def add(a,b):
res = 0
a = a * b
res = a+b
print("最终结果为:",res)
add(2,3)
5、(10 points)《编程导论》 习题3.6.
import time
s="1"*1000000+"0"*1000
def removeall2(s,x):
start = time.clock()
i = 0
while i <len(s):
if s[i] == x:
s = s[:i]+s[i+1:]
else:
i += 1
elapsed = time.clock() - start
print(elapsed)
return s
s = removeall2(s,'0')
print(len(s))
6、(20 points)
书本3.4.2中的第二部分:使用三种不同方法删除列表元素的执行时间,现在我们要删除的是字符串的元素。请同学分析三种方法的执行时间和优劣。
首先完成一个函数remove(s.x):删除字符串s中第一次出现的x。
def remove(s,x):
for i in range(len(s)):
if s[i]==x: return(s[:i]+s[i+1:])
return (s)
仿照书本的三种方法,完成removeall(s.x)函数:返回一个字符串是s删除所有出现的x,做实验测试执行时间:
s=“1”*1000000+“0”*1000
//时间开始
a=removeall(s,“0”)
//时间结束
print (len(a)) //不要直接打印a, 因为a太长了
def removeall3(s,x):
start = time.clock()
a=""
i = 0
for i in range(len(s)):
if s[i] != x:
a = a+s[i]
elapsed = time.clock() - start
print(elapsed)
return a
s = removeall3(s,'0')
print(len(s))
7、(10 points)《编程导论》 习题3.14
def sum(L):
mysum = 0
i = len(L)-1
while i >= 0:
if L[i]%2==0:
mysum += L[i]
i -= 1
return mysum
L=[2,2,3,4,5]
mysum = sum(L)
print(L,mysum)
9、(10 points)《编程导论》 习题3.16
L =["%d * %d = %d"%(x,y,x*y)for x in range(1,10) for y in range (1,10)]
print(L)