为什么Python一个名称指向了两个变量?

先贴代码:


def Z50(inputs:str,w:list=[[1.090,-0.2],[0.725,1],[1.5,-2]]):
    output=[]
    data=[]
    l=len(w)
    r=True
    i=len(inputs)
    while i!=0:
        i=i-1
        data.append(ord(inputs[i]))
        output.append(ord(inputs[i]))
    data.reverse()
    while l!=0:
        l=l-1
        i=len(inputs)
        if r:
            a=i
        while i!=0:
            i=i-1
            if r:
                output[a-i-1]=(data[a-i-1]+output[a-i-1])/2*w[l][0]+w[l][1]
            else:
                output[i]=(data[i]+output[i])/2*w[l][0]+w[l][1]
        output,data=data,output
    del r,i,l,data,w
    i=len(inputs)
    while i!=0:
        i=i-1
        print(output)
        print(type(output))
        output=list(output)
        if output[i]>ord(inputs[i]):
            output=True
        else:
            output=False
    l=[]
    i=len(inputs)
    n=output[i-1]
    while i!=0:
        i=i-1
        if n==output[i]:
            pass
        else:
            n=not n
            l.append(i)
    del i,n,output
    return l

我在中间加了两个print,让后在电脑上跑了一下结果:


>>> Z50("gcuewhicr")
[96.609375, 89.99374999999999, 103.04375, 92.621875, 108.11874999999999, 93.709375, 98.69375, 89.99374999999999, 100.596875]
<class 'list'>
False
<class 'bool'>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\MIN\Desktop\Z50.py", line 30, in Z50
    output=list(output)
           ^^^^^^^^^^^^
TypeError: 'bool' object is not iterable

好好的一个变量为什么指向了两个变量?莫名其妙的!搞得这下我直接一个也用不了了!怎么解决?

if output[i]>ord(inputs[i]):
            output=True
        else:
            output=False

这段代码,将output弄成了bool

你33行和35行给他付的bool值。循环第一进来是没问题的,所以打印的是<class 'list'>。第二次循环的时候,output已经被更新为bool,打印的类型为<class 'bool'>

打印的类型不太对吧