2012-12-08 113 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