i键入以下代码
z=1+2j
z=list(str(z))
我获得输出为
['(','1','+','2','j',')']
但是当我编写以下代码
时 z=input('')
z=list(str(z))
print(z)
我获得输出为
['1','+','2','j']
而不是列表中的曲线括号,为什么?
使用input()
时,您输入了4个字符:1
,+
,2
,j
。在一起,它们可能与您的语义价值相同,与数字1+2j
相同,但是就Python而言,前面的情况只有四个字符。Python没有任何方法知道您认为应该将这些字符转换为单个数值值。
您可以使用一些print
语句观察差异。
您可以明确地声明,该四个字符的字符串应解释为一个复杂的数字,使用complex()
:
a = input('') # input: "1+2j"
print(a) # i+2j
print(type(a)) # <class 'str'>
b = complex(a)
print(b) # (1+2j)
print(type(b)) # <class 'complex'>
您可能是指:
z =" 1 2J"
键入代码
z=1+2j
z=list(str(z))
z的类型是复杂。在其上调用函数str只会为您提供complex
类返回的__str__
功能。在您的情况下,str(z)
将返回
'(1 2J)'
进行z=list(str(z))
时,它会为您提供str(z)
中所有字符的列表。现在z指向列表,而不是复杂的对象。
当您运行此
时 z=input('')
z=list(str(z))
print(z)
input('')
为您提供了str类型值。打电话给z=list(str(z))
时,无论您输入什么输入。