輸入的工作,我想輸入的形式載體「(x,y,z)
」如何使蟒蛇
s=raw_input("Enter vector (x,y,z): ")
x,y,z= s.split()
self.x= float(x)
self.y= float(y)
self.z= float(z)
現在缺少的代碼?不應該分裂做這份工作?我也試過s.split("(",",",")")
,但沒有成功。
輸入的工作,我想輸入的形式載體「(x,y,z)
」如何使蟒蛇
s=raw_input("Enter vector (x,y,z): ")
x,y,z= s.split()
self.x= float(x)
self.y= float(y)
self.z= float(z)
現在缺少的代碼?不應該分裂做這份工作?我也試過s.split("(",",",")")
,但沒有成功。
可以使用ast.literal_eval
這樣輸入:
>>> import ast
>>> s = "(1,100,200)"
>>> x, y, z = ast.literal_eval(s)
>>> type(x)
<class 'int'>
使用字符串函數,你需要剝去()
,然後再拆分對,
:
>>> x, y, z = s.strip('()').split(',')
>>> x, y, z
('1', '100', '200')
幫助上str.split
:
S.split([sep [,maxsplit]]) -> list of strings
返回字符串S中的單詞列表,使用sep作爲 分隔符字符串。如果給出maxsplit,最多maxsplit 拆分完成。如果
sep
沒有指定或者沒有,則任何 空格字符串是一個分隔符,空字符串從結果中被移除 。
如果您輸入這樣的:
Enter vector (x,y,z):
> 2,3,4
你會想要做
x, y, z = s.split(",")
如果你輸入的逗號和空格分隔的數字,這樣做:
x, y, z = s.split(", ")
str.split
將字符串拆分爲subs敲擊,在提供的參數的每次出現時分割(默認爲「」)。
另一種方法:捕捉你想要的而不是分開你不需要的東西。
import re
s = '(44.2, 19, 12.73)'
floats_rgx = re.compile(r'-?\d+(?:\.\d+)?')
x, y, z = map(float, floats_rgx.findall(s))
這種做法有允許更多的開放式輸入格式的優勢(或劣勢,這取決於你的目標)。如果你想要更嚴格的東西,你可以寫一個完整的正則表達式來驗證精確的輸入格式。
可能還想在模式開頭添加' - ?'來處理負數。 – iCodez