2013-11-15 75 views
-5

我被要求写一个程序,接受来自用户10,只有整数和正数(大于0),并打印最大值。问题与无效文字为int()与基地10

我写了很多程序,给了我从用户插入的10个最大数量,但是当我输入负数时,它也给了我最大的数,这是错误的,当我把浮点数,它带有错误

invalid literal for int()with base 10 

任何建议来编写一个正确的程序?

+4

你能告诉我们你的代码?就像你已经写的代码一样?如果用户输入负数,你想怎么做? –

回答

0

这里有一些代码可以完成你所要求的功能。但是,在负数或非整数输入的情况下,您想要编码的内容有点不清楚。我只是把一个Exception

def find_max(my_list): 
for x in my_list: 
    if x<0 or type(x) != int: 
    raise Exception("You must input positive integers!") 
print max(my_list) 
2

“无效的文字”错误是说:‘我不明白你键入的内容’的INT()的方式。 int()函数只能理解数字(在不同的基数/计数系统中,请参阅python int() doc)。

如果你想“保护” agains用户逗号的数字输入,它包像这样:

int(float(userinput)) 

这将首先使用户输入一个小数号码,然后进入一个int。 请注意,float()对“”,“与”是挑剔的。“

float("3.4") # gives 3.4 
float("3,4") # throws "ValueError: invalid literal for float(): 3,4" 

测试如果数是负的可以通过检查来事后parsedNumber> = 0 它在数学上完全有效的询问关于“-1的最高数量,-2和-3”,所以python内置插件不会为你做。您必须手动添加严格的标准(见@ AlexChumley的答案。)

max(-1, -2, -3) 

返回-1,在“最高”数,其中“最高”的意思是“最接近正无穷大”

+1

+1深度比我愿意去的质量问题 –

+0

谢谢;我同意质量,但我希望文件链接是一个很好的教学资源:-) –

相关问题