python123习题集

这篇博客包含了多个Python编程的基础练习题目,包括函数的使用、素数求和、字符串操作等。其中,提到了如何用二分法求平方根、解决素数表示为平方和的问题以及字符串移位等技巧。同时,还讨论了函数式编程在解题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

06函数


二分法求平方根
tips:

  1. 二分法求解思路
  2. 精度控制
import math

n, delta = map(eval, input().split(','))
def sqrt_binary(n, delta):
    a, b = 0, n+0.25# 初始化区间
    while True:
        x = (a+b)/2
        if abs(x**2 - n) < delta:# 精度足够
            print('{:.8f}'.format(x))
            break
        elif x**2 - n < 0:# 不够大,更新下界
            a = x
        else:# 太大了,更新上界
            b = x

sqrt_binary(n, delta)
print('{:.8f}'.format(math.sqrt(n)))

汉诺塔

def hanota(n,a,b,c):
    if n == 1:
        print('{} --> {}'.format(a, c))
    else:
        hanota(n-1, a, c, b)
        print('{} --> {}'.format(a, c))
        hanota(n-1, b, a, c)
if __name__ == '__main__':
    n = eval(input())
    a,b,c = input().split()
    hanota(n, a, b, c)

特殊的数字

描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

1179 能用 3 种方法表示为 3 个不同素数平方和的整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

如:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

1179 = 1717 + 1919 + 23*23‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

1179 = 77 + 1313 + 31*31‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

1179 = 77 + 1717 + 29*29‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

请输出能用 6 种方式表示为 3 个不同素数平方和的最小整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

(本题涉及的最大素数不超过100)

def prime(n):
	'''高效创建素数集列表'''
    flag = [1]*(n+2)
    p=2
    ls = []
    while(p<=n):
        ls.append(p)
        for i in range(2*p,n+1,p):
            flag[i] = 0
        while 1:
            p += 1
            if(flag[p]==1):
                break
    return ls

import itertools
ls = prime(100)
ls_2 = [s**2 for s in ls]
mul = []
for item in itertools.combinations(ls_2, 3):
    mul.append(sum(item))
mul.sort() #需要排一下序,题目要求是输出最小整数
for i in mul:
    if mul.count(i) == 6:
        print(i)
        break

参考答案,两个点效率不高,一个是素数集的创建,一个是最后查找最小整数,但是函数式编程的思想值得学习。

from itertools import combinations


def is_prime(n):
    """判断素数的函数,接收一个正整数为参数,参数是素数时返回True,否则返回False
    减小判定区间,减少循环次数,提升效率"""
    if n < 2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值