簡體   English   中英

擴展列表理解

[英]Expanding a List Comprehension

我已將此行寫為單行 for 循環:

p.x, p.y, p.z = [float(s) for s in input('Input X, Y, Z: ').split()]

它工作正常。 但為了我自己的理解,我嘗試將其擴展為:

p.x, p.y, p.z = input('Input X, Y, Z: ').split()
float(p.x)
float(p.y)
float(p.z)

但是每當我嘗試對它們進行操作時,它都會引發錯誤( TypeError: unsupported operand type(s) for -: 'str' and 'str' )。

有人可以向我解釋我做錯了什么並糾正它嗎?

非常感謝!

正如其他人所說, float()不會更改其輸入的值,它會返回新值。 一個快速的解決方法是將float function map()到拆分輸入。

class P:
    pass

p = P()

p.x, p.y, p.z = map(float, input('Input X, Y, Z: ').split())

print(p.__dict__)
# Input X, Y, Z: 5.6 3.2 6.7
# {'x': 5.6, 'y': 3.2, 'z': 6.7}

您可能還想捕獲錯誤輸入的異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM