builtins.TypeError:类型' int'的对象没有len()

时间:2014-04-05 01:36:17

标签: python

def printsection1(animals, station1, station2):
    animals=['a01', 'a02', 'a03', 'a04', 'a05']
    station1={'a04': 5, 'a05': 1, 'a03': 6, 'a01': 2}
    station2={'a04': 5, 'a02': 3, 'a03': 4, 'a01': 1}    

    print('Number of times each animal visited each station :')
    print('Animal Id'+' '*11+'Station 1'+' '*11+'Station 2'+'           ')

    #preparing animal station1 and station2
    for name in animals:
        if name in station1:
            visit=str(station1.get(name))
        else:
            visit=0
        if name in station2:
            visit2=str(station2.get(name))
        else:
            visit2=0

        space=str((20-len(visit))*' ')


        print(name+' '*17+str(visit)+space+str(visit2))
    print('='*60)

实际输出,我得到的输出:

Animal Id           Station 1           Station 2           
a01                 2                   1

错误:

builtins.TypeError: object of type 'int' has no len()

通缉输出:

Number of times each animal visited each station :
Animal Id           Station 1           Station 2           
a01                 2                   1                  
a02                 0                   3                  
a03                 6                   4                  
a04                 5                   5                  
a05                 1                   0                  
============================================================

嘿伙计们我正在做这个程序,但我现在陷入困境。我正在尝试打印动物ID和两个站。这三个站都是20个字符长,但由于某种原因我一直收到这个错误。

希望你们能帮忙:)

感谢

2 个答案:

答案 0 :(得分:2)

如果您转到visit=0访问将是一个整数,然后您无法space=str((20-len(visit))*' '),您可以尝试撰写visit='0'

答案 1 :(得分:1)

visit=0行给你了。未定义整数的长度,因此稍后代码中的len(visit)会给您一个错误。您似乎在代码中较早的时候将visit设置为字符串,因此使用visit="0"应该可以正常工作。