Python编写斐波那契序列生成代码后如何获取最后一项及其对应序号
斐波那契序列目标值提取实现方案
问题核心
你当前的代码已经生成了符合要求的完整斐波那契序列,只需要在循环结束后提取列表的末尾元素和列表长度,即可拼接得到目标输出。
优化后完整代码
def fibonacci(input_number): a = 0 b = 1 fibo = [a, b] while b < input_number: a, b = b, a + b fibo.append(b) # 保留原有的每步打印逻辑,不需要可以直接删除 print(fibo) # 提取目标数据 last_num = fibo[-1] order = len(fibo) # 拼接输出目标语句 print(f"The last fibonacci number is {last_num} and it is the {order}th fibonacci number") # 调用测试,输入值设为10 fibonacci(10)
如果你需要适配1/2/3对应的st/nd/rd序数后缀规则,可以将输出部分替换为以下逻辑:
# 序数后缀适配逻辑 if order == 1: suffix = "st" elif order == 2: suffix = "nd" elif order == 3: suffix = "rd" else: suffix = "th" print(f"The last fibonacci number is {last_num} and it is the {order}{suffix} fibonacci number")
运行输出
[0, 1, 1] [0, 1, 1, 2] [0, 1, 1, 2, 3] [0, 1, 1, 2, 3, 5] [0, 1, 1, 2, 3, 5, 8] [0, 1, 1, 2, 3, 5, 8, 13] The last fibonacci number is 13 and it is the 8th fibonacci number
逻辑说明
- 循环终止时,
fibo列表已经是满足fibo[-2] < input_number < fibo[-1]的完整序列 fibo[-1]直接取列表最后一位,就是大于输入值的最小斐波那契数len(fibo)取列表长度,和你需求的序号计数规则完全匹配
内容的提问来源于stack exchange,提问作者nisa
相关产品推荐
相关产品推荐

