我是python的初学者。我写了一个简单的程序来找到最多的3个数字。当我给出具有相同位数的输入数字时,我得到了正确的答案(例如50 80 20)。但是,当我输入(50 130 20)时,它不起作用。
我做错了什么?
num1=input("Enter 3 numbers\n")
num2=input()
num3=input()
if(num1 > num2):
if(num1 > num3):
print("The greatest number is "+ str(num1))
else:
print("the greatest number is "+ str(num3))
else:
if(num2 > num3):
print("The greatest number is " + str(num2))
else:
print("The greatest number is " + str(num3))
答案 0 :(得分:1)
你是动态打字的另一个受害者。
当您将数据读入num
变量时,变量将被视为字符串。
当Python使用<
或>
运算符比较两个字符串时,它按字典顺序排列 - 这意味着按字母顺序排列。以下是一些例子。
'apple' < 'orange' //true
'apple' < 'adam' //false
'6' < '7' //true as expected
'80' < '700' //returns false, as 8 > 7 lexiographically
因此,您希望使用int()
转换输入,因此<
比较可以按预期工作。
<强>代码强>
num1=int("Enter 3 numbers\n")
num2=int(input())
num3=int(input())
if(num1 > num2):
if(num1 > num3):
print("The greatest number is "+ str(num1))
else:
print("the greatest number is "+ str(num3))
else:
if(num2 > num3):
print("The greatest number is " + str(num2))
else:
print("The greatest number is " + str(num3))
答案 1 :(得分:0)
您可以使用max
找到任意数量的数字的最大值print "The greatest number is " + max(int(num1), int(num2), int(num3))
答案 2 :(得分:0)
如果你不想要TimTom(没有max()),这是另一种方式:
date_inds = ...some subset of dates with DATE dimension...
name_inds = ...some subset of names with DN_NAME dimension...
ds['MACROSS'][date_inds, name_inds] = 1