2012-12-08 46 views
1

我很難將argv [1]傳遞給一個浮點數。我一直試圖基本上傳入任何int,然後是小數,然後將它向上/向下舍入到最接近的整數。 (基本的初學者python項目)我一直在嘗試使用float來玩一下,並且無法弄清楚它。問題從浮動argv

import sys 

x = int(sys.argv[1]) 
num = x + .5 
s = str(num()) 
point = s.find('.') 
print s[:point] 

if __name__ == "__main__": 
    x(int(sys.argv[1])) 

編輯(當前代碼,咖啡和清理後):

import sys 

def x(argument): 
    num = argument + .5 
    s = str(num()) 
    point = s.find('.') 
    print s[:point] 

if __name__ == "__main__": 
    x(int(round(float(sys.argv[1])))) 

敲定代碼(歸功於:NPE)

import sys 

def x(argument): 
    print "Passed in value: " + str(argument) 
    num = argument + .5 
    print "Rounded whole number: " + str(int(num)) 

if __name__ == "__main__": 
    x(float(sys.argv[1])) 
+1

你期待'x'是一個函數嗎? –

+0

不,我不認爲我需要它是一個函數,如果可能的話,更多的只是傳入的值。 – camihan

+1

你沒有太大的意義。在'__main__'中你希望'x(..)'做什麼? –

回答

2

這聽起來像你正在尋找任

val = round(float(sys.argv[1])) 

val = int(round(float(sys.argv[1]))) 

取決於你期待什麼是val類型。

+0

其實非常感謝你,我已經能夠清理代碼,並意識到我沒有通過爭論。我仍然有問題與浮點,因爲它無法傳遞到int參數爲了什麼原因。雖然你讓我玩弄了很多排列組合。至少我認爲你接近解決我的問題!非常感謝你,對於noob問題抱歉。 – camihan

+0

真的能夠解決它,這要感謝你。我省略了傳入的函數中的int,並在代碼中稍後將其打印爲int。感謝您的幫助。 – camihan