[英]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.