zl程序教程

您现在的位置是:首页 >  Python

当前栏目

python答疑

2023-04-18 14:26:37 时间
菲薄纳妾
该问题可以通过以下步骤来解决:
实现一个函数 fib(n),该函数接收一个整数参数 n,并返回第 n 项 Fibonacci 数。
实现一个函数 PrintFN(m, n),该函数接收两个整数参数 m 和 n,并返回在区间 [m, n] 中的 Fibonacci 数。
实现一个函数 fib_count(m, n),该函数接收两个整数参数 m 和 n,并计算在区间 [m, n] 中的 Fibonacci 数的个数。
最后,在主程序中,从标准输入读取 m,n 和 i,并输出在区间 [m, n] 中的 Fibonacci 数的个数,以及第 i 项 Fibonacci 数。
下面是完整的 Python 代码
deffib(n):
    ifn<2:
        return1
    a, b = 1, 1
    foriinrange(2, n+1):
        a, b = b, a+b
    ##a, b = b, a + b 是一个 Python 中的语法糖(syntactic sugar),它可以让我们同时交换两个变量的值,而不需要使用中间变量。这个语句的具体作用是,先将 b 的值赋给 a,然后将 a + b 的值赋给 b。也就是说,如果 a 的初始值是 1,b 的初始值是 2,那么执行这个语句之后,a 的值就变成了 2,b 的值变成了 3。
    returnb
​
defPrintFN(m, n):
    fib_list = []
    i = 0
    whilefib(i) <= n:
        iffib(i) >= m:
            fib_list.append(fib(i))
        i += 1
    returnfib_list
​
deffib_count(m, n):
    count = 0
    i = 0
    whilefib(i) <= n:
        iffib(i) >= m:
            count += 1
        i += 1
    returncount
​
m, n, i = map(int, input().split())
​
fib_i = fib(i)
print(f"fib({i}) = {fib_i}")
print(fib_count(m, n))

【问题描述】

编写与字符串对象的find方法功能相似的函数find(srcString, substring, start, end),作用是在srcString串的下标start到下标end之间的片段中寻找subString串的所有出现。如果有多处出现,各下标位置用西文逗号','隔开。如果一次都没有出现,则输出"none"。

【输入形式】

按照somestrig,substring,start,end的顺序输入,之间由空格隔开。somestring和substring均由A/T/C/G四个字母组成。start和end由自然数构成。

【输出形式】当匹配成功时,输出子串在DNA字符串的所有位置,以子串第一个字母在DNA字符串中匹配位置的下标(从0开始),中间用西文逗号","隔开;当匹配失败时,输出"none"。

【样例输入】ATGG CTGA TGGC TGG 0 11【样例输出】1,8

【样例输入】ATGGCTGATGGC TTT 0 11

【样例输出】none

以下是一个Python的实现,其思路是在指定的区间内依次比较每个子串是否与给定的子串相等,如果相等,则记录该子串在原字符串中的位置,并继续寻找下一个子串,直到遍历完整个区间。如果没有找到相等的子串,则输出"none"。

deffind(srcString, substring, start, end):
    indices = []
    foriinrange(start, end-len(substring)+1):
        ifsrcString[i:i+len(substring)] == substring:
            indices.append(str(i))
    ifindices:
        return','.join(indices)
    else:
        return"none"