测验4: 程序的控制结构 (第4周)

测验4: 程序的控制结构 (第4周)


这是python123官网上联合MOOC的Python程序设计(第10期)答案

单选题

像这种看程序出结果的题,把握不准的话可以拿代码进IDE里跑一下,结果肯定是妥妥的。
第一题
第二题
第三题
第四题
第五题
第六题
第七题
第八题
第九题
第十题

程序题

1.四位玫瑰数
程序第一题
解法一,把四位数的个十百千位分别求出来,然后进行4次幂求和,最后判断,等于自身就进行输出,这种解法比较基础和常规。

for i in range(1000,10000):
	temp=i
	# abcd分别是个十百千位
	a=i%10
	i=i//10
	b=i%10
	i=i//10
	c=i%10
	d=i//10
	if(pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)==temp):
		print(temp)

解法二,把四位数转换为字符串,对字符串的每一位再进行4次幂求和,省去了分别求个十百千位的时间,这种解法很妙哦。

for i in range(1000,10000):
    s=str(i)
    if(pow(int(s[0]),4)+pow(int(s[1]),4)+pow(int(s[2]),4)+pow(int(s[3]),4)==i):
        print(i)

2.100以内素数之和
程序第二题
这个题的本质就是判断素数,将100以内的素数判断出来再相加即可。这里我使用了函数,主要是为了让程序更方便易读

朴素版素数判断

def isBool(n):
    for i in range(2,n):
        if(n%i==0):
            return False
    return True
if __name__ == '__main__':
    sum=2
    for i in range(3,100):
        if(isBool(i)):
            sum+=i
    print(sum)

优化版素数判断

import math
def isBool(n):
    temp=int(math.sqrt(n))
    for i in range(2,temp+1):
        if(n%i==0):
            return False
    return True
if __name__ == '__main__':
    sum=2
    for i in range(3,100):
        if(isBool(i)):
            sum+=i
    print(sum)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值