python实习一二

实习二题目

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)  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值