实习二题目
1. (论述题, 50分)
观察上面动画中的算法步骤,对数据列表进行排序:(上传.py文件)
- 首先使用注释语句描述你所观察到的算法步骤,要求逻辑清晰、正确【15分】。
- 创建一个列表,包含10个数字,利用循环语句与选择语句,实现该排序算法,得到正确的排序结果【25分】。
- 利用注释语句对关键步骤进行解释【10分】。
2. (论述题, 50分)使用两种方法实现:输入两个正整数,求其最大公约数。(用自定义函数)
每个方法各25分,其中:
- 写出并能正确运行代码【15分】
- 利用注释语句对关键步骤进行解释【10分】。
实习一二作业
#实习一
Tsnow=-4
Train=7
SF=0.0
P=float((input("请输入降水量(mm):")))
Ta=float((input("请输入气温(C):")))
if Ta<=Tsnow:
SF=P
elif Tsnow<Ta<Train:
SF=P*((Train-Ta)/(Train-Tsnow))
else:
SF=0
print("降雪量是:%.2fmm"%SF)
#实习二
#第一题
a=int((input("请输入一个整数:")))
k=1
m=1
while a%9!=0 : #1除9等于0,余1.所以余数不为0,一直到余数为零,不在循环
b=int((input("请输入一个整数:")))
if 1<=b<=100 :
a=a*b
k=k+1
else :
m=m+1
print("数字不符合要求")
print("你输入了%d次,积为%d"%(k,a)) #输出格式 -%s字符串 -%d整数 -%f小数 %10.3f字段宽10,精度3
#第二题
k=0
for i in range(1,101):
for j in range(i,101):
ji=i*j
if ji%11==0:
k+=1
print("有%d个乘积被整除"%k) #" "不能有数字,语法错误
#第三题:输入两个正整数,求其最大公约数(自定义函数)
#更相减损法函数
def maxgongyueshu(a,b):
k=0
while a%2==0 and b%2==0: #判断两个整数是否都是偶数。若是,则用2约简;若不是则执行第二步。
a/=2
b/=2
k=k+1 #除以2的次数记为k
while a!=b : #第二步:以较大的数减较小的数,把所得的差与较小的数比较,并以大数减小数,直到所得的减数和差相等为止。
m=max(a,b) #将a和b中最大的赋值给m
b=min(a,b) #将a和b中最小的赋值给b
a=m-b #用大值减去小值,再赋值给a进行循环
n=b*(2**k) #最大公约数为最后的差与之前约分的2的k次的乘积 #乘方是**,不是^
print("最大公约数为%d"%n)
#调用
a=int(input("请输入一个整数:"))
b=int(input("请输入一个整数:"))
maxgongyueshu(a,b)
#作业三——排序
#将列表的第一个元素,与剩下所有的元素中最小的元素进行比较(逐个比较大小)。
#若第一个元素更小,则从第二个元素重复上述操作。反之,则将列表中的这两个值的位置(索引)交换。以此类推得到从小到大的新排序。
#创建一个10个数字的列表进行排序
list=[34,5,10,78,42,13,57,23,29,1]
for i in range(0,10):
a=list[i]
minindex=i #将每次循环中的最小值先设为第一个值,最小值下标记为minindex
for j in range(i+1,10): #将剩下所有的元素依次与之进行比较,若有更小值,则更新最小值下标继续比较
if list[j]<list[minindex]:
minindex=j
list[i]=list[minindex] #将更新后最小值下标对应值进行赋值
list[minindex]=a
if i==8:
break
print(list)