2013-02-17 93 views
0

這會產生什麼結果?我看到輸出結果,但無法理解爲什麼會發生。raw_input函數中的逗號

所有的
def multiple(x,y): 
    mul = x*y 
    return mul 

x=int(raw_input("Enter value 1 ")), 
y=int(raw_input("Enter value 2 ")) 
print multiple(x,y) 

回答

0

首先,定義了一個名爲multiple功能,它乘以xy(的multiple參數),然後返回值。然後它需要輸入兩個不同的變量,xy(與上面的參數不一樣),乘以(通過調用multiple)和print,這就是您所看到的輸出。

然而,逗號只是將x定義爲元組。

2

逗號使得x等於大小爲1的元組(包含int)。

簡單的測試:

>>> a = 1, 
>>> print a 
(1,) 
4

在代碼中,所述,在第一raw_input的端部裝置x實際上是包含用戶輸入一個tuple。當你調用這個函數時,你實際上做的是將這個元組乘以一個整數,這個整數乘以元組(xy倍。

例如:

>>> x = 2, 
>>> x * 5 
(2, 2, 2, 2, 2) 
>>> x = 2 
>>> x * 5 
10 
2

與此大的誤差是,如果X和Y不是數字(又名字符串),則該函數將被弄亂了。這可以說是固定的: try: mul = float(x) * float(y) 然後,趕情況下,當X或Y不是數字, except TypeError: print('Please do not give a string...') 在這種情況下,你要證明MUL是無效的,所以你說, mul = None 現在你可以return mul符合try和except語句。

這確保輸入是小數點數字,而不是字符。