请帮我修一下这个三号鳕鱼

2024-04-27 05:01:11 发布

您现在位置:Python中文网/ 问答频道 /正文

当用户输入一个数字时,这段代码应该在一个表中输出一个数字。示例:用户为a输入4,表运行在trinumber定义中为n运行所有变量1-4的公式,并将其输出到表中。当我运行它时,程序说t没有定义。你知道吗

def TriNumber(n):
    t == ((n(n+1))/2) #trinumber formula
    return t

a = int(input("please input a number")) #user input for number of trinumbers to output
num = 1

for num in range(a):
    TriNumber(num)
    print(" n" "\t""\t""Tri Number")
    print("***""\t""\t""   *****")
    print(num, "\t""\t",(TriNumber(num)))
    num = num + 1

Tags: 代码用户程序示例numberforinput定义
2条回答

您的第一行TriNumber是询问t是否等于公式,而不是将它的值赋给t。你知道吗

还请注意,您可以只返回表达式;实际上根本不需要t。你知道吗

我在这里看到几个问题:

  1. 您使用的是一个双等号(==),看起来您想给t赋值。您应该使用一个等号(=)。或者,更好的方法是将函数简化为:

    def triNumber(n):
        return (n(n+1))/2  # (sic; see #2)
    
  2. 我不认为你公式的(n(n+1))部分是做你想做的事情。我对三元数一无所知,但我猜你想要“n次(n加1)”?如果是这样,请确保使用*运算符。我想(n * (n + 1)) / 2就是你想要的。(否则,n(n+1)表示“在n + 1上调用函数n”,这将失败,因为您尚未定义名为n的函数)。

  3. 从实际的角度来看,你的for循环的第一行TriNumber(num)实际上并没有做任何事情。看起来您实际上要做的是打印一个从1到用户指定数字的trinumber值表。因此,程序的一般结构将是一个包含print语句的for循环。

  4. 因为您在数的range上使用for循环,所以不需要每次手动递增num。类似地,不需要在for循环之前指定num = 1。需要注意的是,当您使用range时,默认的起点是0,而不是1。所以,如果你真的想要一个“从1到a”的范围,那么你想要range(1, a)

  5. 您对print的使用有点不稳定,因为您在某个地方使用了多个字符串。例如,print("***""\t""\t"" *****")应该是print("***\t\t *****")

  6. 我会把前两个print语句从for循环中去掉,因为它们看起来是一个标题,所以我猜您只希望它们打印一次。

  7. 在Python中,函数名通常以小写字母开头。

  8. 要打印数字,必须先将它们转换为字符串,例如str(num)

下面是我将如何修改您的代码:

def triNumber(n):
    return (n * (n + 1)) / 2 #trinumber formula

a = int(input("please input a number")) #user input for number of trinumbers to output

print(" n\t\tTri Number")
print("***\t\t   *****")

for num in range(1, a):
    print(str(num) + "\t\t" + str(triNumber(num)))

希望有帮助!你知道吗

编辑:格式化最后一行的更好方法是:

print("%d\t\t%d" % (num, triNumber(num)))

%d分别由numtriNumber(num)的字符串版本替换。你知道吗

相关问题 更多 >