当用户输入一个数字时,这段代码应该在一个表中输出一个数字。示例:用户为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
您的第一行
TriNumber
是询问t
是否等于公式,而不是将它的值赋给t
。你知道吗还请注意,您可以只返回表达式;实际上根本不需要
t
。你知道吗我在这里看到几个问题:
您使用的是一个双等号(
==
),看起来您想给t
赋值。您应该使用一个等号(=
)。或者,更好的方法是将函数简化为:我不认为你公式的
(n(n+1))
部分是做你想做的事情。我对三元数一无所知,但我猜你想要“n次(n加1)”?如果是这样,请确保使用*
运算符。我想(n * (n + 1)) / 2
就是你想要的。(否则,n(n+1)
表示“在n + 1
上调用函数n
”,这将失败,因为您尚未定义名为n
的函数)。从实际的角度来看,你的
for
循环的第一行TriNumber(num)
实际上并没有做任何事情。看起来您实际上要做的是打印一个从1到用户指定数字的trinumber值表。因此,程序的一般结构将是一个包含print
语句的for
循环。因为您在数的
range
上使用for
循环,所以不需要每次手动递增num
。类似地,不需要在for
循环之前指定num = 1
。需要注意的是,当您使用range
时,默认的起点是0,而不是1。所以,如果你真的想要一个“从1到a”的范围,那么你想要range(1, a)
。您对
print
的使用有点不稳定,因为您在某个地方使用了多个字符串。例如,print("***""\t""\t"" *****")
应该是print("***\t\t *****")
。我会把前两个
print
语句从for
循环中去掉,因为它们看起来是一个标题,所以我猜您只希望它们打印一次。在Python中,函数名通常以小写字母开头。
要打印数字,必须先将它们转换为字符串,例如
str(num)
下面是我将如何修改您的代码:
希望有帮助!你知道吗
编辑:格式化最后一行的更好方法是:
%d
分别由num
和triNumber(num)
的字符串版本替换。你知道吗相关问题 更多 >
编程相关推荐