callig str在使用函数时

时间:2016-02-11 19:37:47

标签: python function

我正在编写一些代码来打印一个有这么多行的三角形,但是当我尝试它时,它说,

how many rows in the triangle 5
Traceback (most recent call last):
  File "U:\School\Homework\year 8\module 3\IT\python\lesson 10\extention          task set by Mr Huckitns.py", line 6, in <module>
    triangle(5)
  File "U:\School\Homework\year 8\module 3\IT\python\lesson 10\extention     task set by Mr Huckitns.py", line 5, in triangle
    print((x*(str(" ")))(int(i)*(str("*")))((int(row)-int(i))*(str(" "))))
TypeError: 'str' object is not callable

任何人都知道这里发生了什么

the code i am using is
inttrow=int(input("how many rows in the triangle "))
def triangle(row):
for i in range(1,row):
    x=int(inttrow)-int(i)
    print((x*(str(" ")))(int(i)*(str("*")))((int(row)-int(i))*(str(" "))))
triangle(5)

2 个答案:

答案 0 :(得分:0)

问题在于print语句中的标点符号。您连续打印了三个字符串,但是忘了在它们之间进行任何连接操作。试试这个:

print ((x*(str(" "))) + (int(i)*(str("*"))) + ((int(row)-int(i))*(str(" "))))

此外,为什么要进行所有这些类型强制 - 所有这些变量都已经具有适当的类型。把它剪切到这个:

print (x*" " + i*"*" + (row-i)*" ")

答案 1 :(得分:0)

您试图通过将字符串放在代码中彼此靠近来尝试连接字符串,如下所示:

("hello")(" ")("world")

在命令行上尝试,看看会发生什么。它不是您正在使用的语言的语法。然后尝试使用加号。

"hello" + " " + "world"