首页 > 解决方案 > I have already translated the type into int but still suffered a type error (python language)

问题描述

def get_positive_int():
    while True:
        n = int(input("Height: "))
        if n > 0 and n < 9:
            return n
            
def print(n):
    for i in range(n):
        print(" " * (n - i) + "#" * i + " " + "#" * i)
        
def main():
    n = get_positive_int()
    print(n)
    
if __name__ == "__main__":
    main()

and here is my error message: TypeError: 'str' object cannot be interpreted as an integer

Since int(input()) has already translate n into an int I an curious why would n recieve an string?

标签: pythonpython-3.x

解决方案


问题是您已经定义了一个名为的自定义函数,并且您在循环中再次print()调用。print()因此,在下一次递归调用中,您print()使用strobject in调用自定义定义print(" " * (n - i) + "#" * i + " " + "#" * i)range()然后抛出错误,因为它需要一个整数但它得到了一个str对象。

将方法的名称更改为print()其他名称:

def get_positive_int():
    while True:
        n = int(input("Height: ").strip())
        if n > 0 and n < 9:
            return n
            
def print_0(n):
    for i in range(n):
        print(" " * (n - i) + "#" * i + " " + "#" * i)
        
def main():
    n = get_positive_int()
    print_0(n)
    
if __name__ == "__main__":
    main()

推荐阅读