python - 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?
解决方案
问题是您已经定义了一个名为的自定义函数,并且您在循环中再次print()
调用。print()
因此,在下一次递归调用中,您print()
使用str
object 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()
推荐阅读
- r - 我无法在 dplyr 中计算均值和标准差
- javascript - Javascript对变量的不安全引用
- jenkins - 黄瓜 HTML 报告
- jwk - 我如何获得正确的苹果登录公钥
- java - 如何更改使用的 Java 版本的 SoapUI?
- python - 具有分组依据的 Django SQL Windows 函数
- mysql - laravel sql问题与查询where和or,丢失条件
- linux - 在 docker 容器中启用命令行审计日志记录 - kubernetes
- ocaml - 为什么会发生这种情况(Ocaml)
- typescript - 卡在反应原生 redash 库中