所以我正在学习考试,我做了一个简单的功能来回顾'顺序处理'然后我做了这个函数,将空格数字的字符串输入转换成列表并扫描以找到最高,但我的条件似乎认为8大于20和23.有人可以告诉我为什么这是? / p>
def findMax(numberlist):
maxval = numberlist[0]
for i in numberlist[1:]:
print("The value now is:\t",i,"\nThe max value is currently\t",maxval,"\n")
if(i > maxval):
maxval = i
print(maxval)
return maxval
def makeList(stringput):
print(stringput)
stringput = stringput.split(" ")
for i in stringput[0:]:
print("Value is:\t",i)
return stringput
findMax(makeList(input("\nWhat test are to be sorted\n")))
这从输入" 1 20 8 21"
返回结果8编辑:抱歉,新用户
答案 0 :(得分:2)
因此,您基本上需要使用int()
将整数的每个字符串表示形式转换为整数。所以,'20' < '8'
因为2以ASCII顺序出现在8之前。当检查哪个字符串更大时,比较每个字符以查看哪个更大,它不会确认'0'
后面的'2'
的上下文。但是int('20') < int('8')
因为数字线的工作原理(过度简化)。
您可以通过列表理解来完成所有这些:
stringput = [int(val) for val in stringput]
结果:
def findMax(numberlist):
maxval = numberlist[0]
for i in numberlist[1:]:
print("The value now is:\t",i,"\nThe max value is currently\t",maxval,"\n")
if(i > maxval):
maxval = i
print(maxval)
return maxval
def makeList(stringput):
print(stringput)
stringput = stringput.split(" ")
stringput = [int(val) for val in stringput] #new line
for i in stringput[0:]:
print("Value is:\t",i)
return stringput
findMax(makeList(input("\nWhat test are to be sorted\n")))
答案 1 :(得分:2)
您正在将字符串输入python。这意味着所有排序都按字母顺序进行 - 而不是数字排序。
例如,如果您按字母顺序对以下两个单词进行排序,您会先放哪个?
Apple对吗?因为A来自B.让我们再试一次苹果
蜂
8
23
它将在23 - 8后面的字母表中显示为&#39;。
如果要对这些进行正确排序,请先将它们全部转换为int。或者使用natsorted等库。