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 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪云-微星

感谢大家的支持与鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值