gpt4 book ai didi

python - 斐波那契数 python,我应该学习什么才能成为一个更好的程序员(自学)

转载 作者:行者123 更新时间:2023-12-04 18:55:19 26 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

2年前关闭。




Improve this question



n1 = 0
n2 = 1
fiblist = []
while True:
newNum = n1 + n2
fiblist.append(newNum)
n1 = n2
n2 = newNum
if newNum >= 10000:
print(flist)
break

初学者程序员:有没有更简单的方法来写这个或其他更有效的方法

最佳答案

您的代码可以简化为以下内容。

fiblist = [0, 1]                # initialize with first two numbers
while fiblist[-1] < 10000: # while last number <= threshold
fiblist.append(fiblist[-1] + fiblist[-2]) # next is sum of last 2 numbers

print(fiblist)

解释 (提供,因为您要求学习成为更好的编码器)

根据两个引用文献中的原则将您的代码简化为上述
  • 风格指南:Python StyleGuide
  • python 咒:Zen of Python

  • 使用引用 1

    PEP 8 指南:“函数名称应为小写,单词之间用下划线分隔,以提高可读性”。这是特定于 Python 的。其他语言(即 C++、Java、Clojure、JavaScript 等)有自己喜欢的风格。所以对于 Python:new_num 而不是 newNum(即变量和函数名不是驼峰式)。

    使用引用 2

    Python 之禅:“简单胜于复杂”。

    由于专注于两个目标,您的 while 循环过于复杂,即:(1)生成斐波那契数,以及(2)打印斐波那契数)。来自 Single Repository Principle我们知道少比多好(即目标)。

    通过创建具有单个而不是多个目标的代码块来简化。
    while True:                # objective 1--generating fib numbers
    newNum = n1 + n2
    fiblist.append(newNum)
    n1 = n2
    n2 = newNum
    if newNum >= 10000:
    break

    print(fiblist) # objective 2--printing fib numbers

    接下来,我们通过改进 robustness 来简化.鲁棒性——“简单的对象允许您单独关注每个任务的特殊性,并减少您在任何给定时间需要考虑的输入/输出变量的数量”。 fiblist 是一个简单的对象,我们可以用它来替换 n1、n2 和 new_num,如下所示:
    fiblist[-2] is n1
    fiblist[-1] is n2
    fiblist[-1] is new_num (after append)

    使用健壮性,代码变为:
    while fiblist[-1] < 10000:
    fiblist.append(fiblist[-1] + fiblist[-2])

    为了让它工作,我们需要在while循环之前初始化fiblist:
    fiblist = [0, 1]

    因此,通过这个简化序列,我们获得了建议的代码。

    成为更好程序员的其他引用资料
  • Fibonacci CodeExamples
  • What Python tutorials should Iread
  • 关于python - 斐波那契数 python,我应该学习什么才能成为一个更好的程序员(自学),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59132171/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com