当前位置: 首页 > article >正文

python-斐波那契词序列/最大回文乘积/求最大最小k个元素

一:斐波那契词序列
题目描述
编写一个程序,生成斐波那契词序列的前n个元素。 斐波那契词序列是一个词序列,其中每个词是通过连接前两个词形成的。 它以斐波那契序列命名,因为它是以类似的方式创建的,但是我们不是加数字,而是连接字符串或符号。
比如: 从两个单字母词开始,传统上是a和b。连接最后两个词以形成下一个词。 因此,斐波那契词序列的前几个词是:a,b,ba,bab,babba
定义函数generate_fibonacci_word(),接受一个参数n(整数)。
如果n小于2,函数应返回invalid。
对于n的其他值,生成斐波那契词序列到第n项,并逗号, 分隔的字符串返回。
示例输入
5
示例输出
a, b, ba, bab, babba
n小于2,返回invalid。
join()方法可以将列表转换为逗号分隔的字符串,但单词之间为逗号和空格。比如", ".join(["a", "b", "c"])返回"a, b, c"。
来源/分类(难度系数:二星)
算法 机器翻译


完整代码展示:
a=int(input())
b=['a','b']
c=2
while c<a:
       b.append(b[-1]+b[-2])
       c+=1
if a<2:
     print("invalid")
else:
       for i in range(0,len(b)-1):
             print(b[i],end=", ")
       print(b[-1])  

a=int(input())
b=['a','b']
c=2
while c<a:
    b.append(b[-1]+b[-2])
    c+=1
if a<2:
    print("invalid")
else:
    for i in range(0,len(b)-1):
        print(b[i],end=", ")
print(b[-1])  


代码解释:
“a=int(input()) ”,导入用户输入的斐波那契词序列的元素数量a。
“b=['a','b']
 c=2
 while c<a:
        b.append(b[-1]+b[-2])
        c+=1                           ”,建立一个空列表b,b的前两项为a,b。令c为循环密码子,初始值为2,当c<a时:将b的最后两个元素连接后添加进b中。每循环一次:c+1,直至c==a,跳出整个while循环。
“if a<2:
       print("invalid")
 else:
        for i in range(0,len(b)-1):
              print(b[i],end=", ")
        print(b[-1])                       ”,判断a是否小于2,如果是:则打印”invalid”,否则依次打印b中元素,每两个元素之间插入一个逗号。


运行效果展示:

0fe78e81db7d48939abd9c7b0af965fa.jpg

81725a990448496d9c5e85f7e125a256.jpg 

 

 

 

 

二:最大回文乘积
题目描述:
编写一个程序,找出两个n位数乘积中的最大回文数。
定义函数largest_palindrome_product,该函数接受一个参数n。
在函数内部,返回两个n位数的最大回文乘积。
示例输入
2
示例输出
9009
解释: 两个2位数的最大回文乘积是9009 = 91 * 99。
回文数是指从前往后读和从后往前读都一样的数。例如,12321是回文数,而12345不是回文数。
注意两个1位数的最大回文乘积是9 = 1 * 9。

来源/分类(难度系数:二星)
循环结构 数学思维


完整代码展示:
a=int(input())
b=[]
for i in range(10**(a-1),10**a):
      for j in range(10**(a-1),10**a):
            b.append(i*j)
e=[]
for k in range(0,len(b)):
      c=list(str(b[k]))
      d=c[:]
      d.reverse()
      if d==c:
            e.append(b[k])
e.sort()
print(e[-1])

a=int(input())
b=[]
for i in range(10**(a-1),10**a):
    for j in range(10**(a-1),10**a):
        b.append(i*j)
e=[]
for k in range(0,len(b)):
    c=list(str(b[k]))
    d=c[:]
    d.reverse()
    if d==c:
        e.append(b[k])
e.sort()
print(e[-1])


代码解释:
”a=int(input()) ”,导入用户输入的参数n。
“b=[]
 for i in range(10**(a-1),10**a):
       for j in range(10**(a-1),10**a):
             b.append(i*j)                       ”,建立一个空列表b,接着依次遍历10的a-1次方到10的a次方-1的数i和j,再将i*j的值添加进b中。
“e=[]
 for k in range(0,len(b)):
       c=list(str(b[k]))
       d=c[:]
       d.reverse()
       if d==c:
             e.append(b[k]) ”,建立一个空列表e,接着依次遍历b中元素:将该元素转换为字符串后储存在列表c中,再将c复制后赋给d,将d反转,判断d是否等于c,如果相同:将b[k]添加进e中。
“e.sort()
 print(e[-1]) ”,对e中元素进行升序排序,最后打印列表e的最后一个元素。


运行效果展示:

b4deea179a664560925bd23697c0f84a.jpg

97f052407e904c7aadb3ede5670d5929.jpg 

 

 

 

三:求最大最小k个元素
题目描述
编写一个程序,从一个元组中提取最大和最小的K个元素。
定义函数extract_max_min(),有两个参数:input_tuple(一个整数元组)和k(要提取的数量)。
在函数内部,从input_tuple中找到k个最小和k个最大的元素。
返回一个包含提取元素的元组,其中前k个元素是最小的,后k个元素是最大的。
示例输入
4 2 7 9 10 45 3 83
示例输出
(2, 3, 4, 9, 10, 45)
解释: 由于测试输入中k的值为3,因此提取并以元组的形式返回最小的3个数(2,3和4)和最大的3个数(9,10和45)
保证k小于等于input_tuple的长度。
来源/分类(难度系数:二星)
循环结构 递归


完整代码展示:
a=list(map(int,input().split()))
b=int(input())
c=[]
a.sort()
for i in range(0,b):
      c.append(a[i])
for j in range(-b,0):
      c.append(a[j])
sum="("
for k in range(0,len(c)-1):
      sum+="{}, ".format(str(c[k]))
sum+=str(c[-1])
sum+=")"
print(sum)

a=list(map(int,input().split()))
b=int(input())
c=[]
a.sort()
for i in range(0,b):
    c.append(a[i])
for j in range(-b,0):
    c.append(a[j])
sum="("
for k in range(0,len(c)-1):
    sum+="{}, ".format(str(c[k]))
sum+=str(c[-1])
sum+=")"
print(sum)


代码解释:
“a=list(map(int,input().split())) ”,导入用户输入的元组元素,并将其储存在列表a中。
“b=int(input()) ”,导入用户输入的需要提取的元组元素数量b。
“c=[]
 a.sort()
 for i in range(0,b):
       c.append(a[i]) ”,建立一个空列表c,接着对a中元素进行升序排序。遍历0~b-1的数字i,将a[i]添加进c中。
“for j in range(-b,0):
       c.append(a[j])  ”,遍历-b~-1的数字j,将a[j]添加进c中。
“sum="("
 for k in range(0,len(c)-1):
       sum+="{}, ".format(str(c[k]))
 sum+=str(c[-1])
 sum+=")"                                     ”,建立一个字符串sum,包含小括号左半部分。接着依次遍历c中除最后一个元素的其余元素,利用sum连接起来,且每两个元素之间插入一个逗号。连接c中最后一个元素,最后连接小括号右半部分。
“print(sum) ”,打印sum的最终结果。


运行效果展示:

360a6962dfc34f8487a24735ac65f5f6.jpg

f2031da1cadc46f7b2164ddf2bac1fd1.jpg 

                (声明:以上内容均为原创)


http://www.kler.cn/a/330877.html

相关文章:

  • jenkins 使用 ssh-agent向windows进行部署
  • LabVIEW调用不定长数组 DLL数组
  • 微服务组件——利用SpringCloudGateway网关实现统一拦截服务请求,避免绕过网关请求服务
  • 海陵HLK-TX510人脸识别模块 stm32使用
  • NodeLocal DNS 全攻略:从原理到应用实践
  • 如何从串 ‘ 中国 +86‘ 中,获取到‘中国’:strip()、split()及正则表达式的使用
  • EasyCVR视频汇聚平台:解锁视频监控核心功能,打造高效安全监管体系
  • C语言 | Leetcode C语言题解之第450题删除二叉搜索树中的节点
  • java将mysql表结构写入到word表格中
  • 小程序-全局数据共享
  • 【Linux系统编程】权限
  • 广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞
  • LeetCode 704. 二分查找
  • 2024年09月CCF-GESP编程能力等级认证C++编程一级真题解析
  • @antv/x6 嵌入结点到父节点中时,进行检测,查看当前节点是否是父结点,如果是父结点,不可以嵌入到父结点中,实现方法一。
  • 【AIGC】内容创作——AI文字、图像、音频和视频的创作流程
  • PHP反序列化7(字符串逃逸)
  • 《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测
  • 用systemd 来控制 qt 程序的启动, 停止 . 解决 qt.qpa.xcb: could not connect to display 问题
  • 工程师 - 如何配置DNS服务器
  • 基于yolov8调用本地摄像头并将读取的信息传入jsonl中
  • SpringBoot框架下的社区医院信息系统开发
  • Stream流的终结方法(二)——collect
  • 2024大二上js高级+ES6学习9.29(深/浅拷贝,正则表达式,let/const,解构赋值,箭头函数,剩余参数)
  • 并集运算的线段树维护方式
  • c++就业磁盘链式b树与b+树