编程新手求助:如何通过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
相关产品推荐
相关产品推荐

