当用户输入数字时,该代码应该在表中输出许多trinumber。示例:用户输入4作为a,表运行在trinumber定义中运行n的所有变量1-4的公式,并将其输出到表中。当我运行它时,程序说它没有定义。
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
答案 0 :(得分:1)
如果TriNumber
等于公式,则t
的第一行是请求,而不是将其值分配给t
。
另请注意,您可以只返回表达式;你根本不需要t
。
答案 1 :(得分:0)
我在这里看到几个问题:
当您想要为==
分配值时,您正在使用双等号(t
)。您应该使用单个等号(=
)代替。或者,更好的是,将功能简化为:
def triNumber(n):
return (n(n+1))/2 # (sic; see #2)
我不认为公式的(n(n+1))
部分正在按照您的意愿行事。我对trinumbers一无所知,但我猜你想要" n次(n加1)"?如果是这样,请确保使用*
运算符。我认为(n * (n + 1)) / 2
就是你想要的。 (否则,n(n+1)
表示"调用n
上的函数n + 1
,"这将失败,因为您还没有定义名为{{1}的函数}。)
从实际的角度来看,n
循环的第一行for
实际上正在做任何事情。看起来你实际上要做的是打印一个从1到用户指定数字的trinumber值表。因此,程序的一般结构将是包含TriNumber(num)
语句的for
循环。
由于您在print
个数字上使用for
循环,因此您不需要每次都手动增加range
。同样,您不需要在num
循环之前指定num = 1
。重要的是要注意,当你使用for
时,默认的起点是0,而不是1.所以,如果你真的想要一个范围"从1到a,"那么你想要range
。
您对range(1, a)
的使用有点不稳定,因为您在一个人可以使用的地方使用多个字符串。例如,print
应为print("***""\t""\t"" *****")
。
我会从print("***\t\t *****")
循环中取出前两个print
语句,因为它们似乎是标题,所以我猜你只想让它们打印一次
函数名称通常以Python中的小写字母开头。
要打印数字,您必须先将它们转换为字符串,例如for
以下是我修改代码的方法:
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
和num
的字符串版本替换。