我被要求编写一个程序,该程序接受用户10,只接受int和正数(大于0),并打印最大值。
我编写了很多程序,这些程序给了我用户插入的10个最大数字,但是当我输入负数时,它也给了我最大值,这是错误的,当我把浮点数,它附带错误
invalid literal for int()with base 10
有关编写正确程序的建议吗?
答案 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)