10205102406 edited 4 年前
对所有编程的题目, 请同学们把你的代码拷贝到你的报告word中,并将程序的运行结果截图粘贴到代码下方。有问题可以问TA或其他同学。请有编程经验的同学多帮助别人,但是不是让他们直接拷贝程序。
1、(10 points)《编程导论》 习题3.1. 假设起始res=0。
def add(a,b):
return a+b
print("最终结果为:",add(2,3))
2、(10 points)《编程导论》 习题3.3.
会输出8
d是局部变量
3、(10 points)《编程导论》 习题3.4.
先赋值全局变量a,b,c
在do_add中c被改变为5
在do_mul中c被改变为16
在do_mul中打印16,返回到do_sub中
在do_sub中,传入do_div输出8.0并返回,输出8.0,返回到do_add
在do_add中输出8.0并返回
在函数外输出8.0
4、(10 points)《编程导论》 习题3.5.
先赋值全局变量a,b,c
在do_mul中c被改变为16
在do_mul中打印16,返回到do_sub中
在do_sub中,传入do_div输出8.0并返回,输出8.0,返回到do_add
在do_add中输出8.0并返回
在函数外输出16
5、(10 points)《编程导论》 习题3.6.
a,b是全局变量,b传参给fun中局部变量x,并将局部变量y赋值为12,修改局部变量x值为x+2,修改全局变量a的值为F(),在F()中全局变量a被赋值为fun中局部变量x(4)与y(12)以及全局变量b(2)的和(18),并将a返回赋值给a,所以最终打印结果中显示a=18,b=2。
6、(20 points)这题可以两人合作,写下合作同学的名字及学号。请同学们把你的代码拷贝到word报告中,并将程序的运行结果截图粘贴到代码下方。
书本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太长了
import time
def remove(s,x):
for i in range(len(s)):
if s[i]==x: return(s[:i]+s[i+1:])
return (s)
def removeall1(s,x):
while x in s:
s = remove(s,x)
return s
def removeall2(s,x):
i=0
while i < len(s):
if s[i] == x: s = remove(s,x)
else: i+=1
return s
def removeall3(s,x):
s1 = ""
for i in s:
if i!=x:s1+=i
return s1
s="1"*1000000+"0"*1000
start = time.process_time()
a=removeall1(s,"0")
elapsed = time.process_time()-start
print(len(a))
print(elapsed)
start = time.process_time()
a=removeall2(s,"0")
elapsed = time.process_time()-start
print(len(a))
print(elapsed)
start = time.process_time()
a=removeall3(s,"0")
elapsed = time.process_time()-start
print(len(a))
print(elapsed)
时间如上
第一种方法比较直观,但是慢
第二种方法既不直观也没快多少
第三种方法直观且快但是使用了新的变量来保存
7、(10 points)《编程导论》 习题3.14
会
打印结果是改变后的L与原L中偶数之和
代码修改如下
def Sum(L):
mysum = 0
i = len(L)-1
while i >= 0:
if L[i]%2 == 0:
mysum += L[i]
i = i-1
return mysum
L = [2,2,3,4,5]
mysum = Sum(L)
print(L,mysum)
8、(10 points)《编程导论》 习题3.15
运行前默认参数分别为:
[1,2]
[1,2,0]
[1,2,0]
[1,2,0]
9、(10 points)《编程导论》 习题3.16
L = ["%d * %d = %d" %(x,y,x*y) for x in range(1,10) for y in range(x,10)]
print(L)
制作者:姜博远
仅供参考