带有基数10的int()的无效文字问题

时间:2013-11-15 14:57:07

标签: python

我被要求编写一个程序,该程序接受用户10,只接受int和正数(大于0),并打印最大值。

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

invalid literal for int()with base 10

有关编写正确程序的建议吗?

2 个答案:

答案 0 :(得分:2)

“无效的文字”错误是int()说“我不明白你输入的内容”的方式。 int()函数只能理解数字(顺便说一下,在不同的基数/计数系统中,参见python int() doc)。

如果您想要“保护”再次输入逗号的用户,请将其换行:

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 :(得分: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)