You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编程新手求助:如何通过sys.argv调用函数实现斐波那契功能?

用sys.argv实现斐波那契数/序列的命令行调用

问题背景

我是刚入门2天的编程新手,朋友布置练习任务:编写程序输出第n个斐波那契数或前n项序列。我已用input()完成,现要求改用sys.argv实现。我能打印、统计命令行参数,但不知如何在函数中使用参数,也找不到合适搜索关键词,求指引。

已实现的解决方案

经过摸索,我写出了可以正常运行的代码,虽然作为新手代码可能不够高效规范,但完全满足需求:

import sys
from math import sqrt

Fibonacci = sys.argv[0]
Entscheidung = (sys.argv[1])
n = int(sys.argv[2])
sequence = []

if Entscheidung == "Stelle":
    def fib(n):
        return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))
    print("Die {}. Stelle beträgt:{}".format(n, fib(n)))
elif Entscheidung == "Folge":
    def fib(n):
        return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))
    for i in range(n):
        sequence.append(fib(i + 1))
    print('[%s]' % ', '.join(map(str, sequence)))
input("Schließen")

小优化建议(可选)

如果想让代码更符合Python规范、减少重复,可以把fib函数的定义移到条件判断外面,避免重复定义两次函数,同时加上if __name__ == "__main__":来让代码结构更清晰:

import sys
from math import sqrt

def fib(n):
    return int(1/sqrt(5)*(((1+sqrt(5))/2)**n-((1-sqrt(5))/2)**n))

if __name__ == "__main__":
    Entscheidung = sys.argv[1]
    n = int(sys.argv[2])
    sequence = []

    if Entscheidung == "Stelle":
        print("Die {}. Stelle beträgt:{}".format(n, fib(n)))
    elif Entscheidung == "Folge":
        for i in range(n):
            sequence.append(fib(i + 1))
        print('[%s]' % ', '.join(map(str, sequence)))
    input("Schließen")

内容的提问来源于stack exchange,提问作者Jens Wagner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:48:12