Python - сравнение чисел. Я сравниваю 1 с 1, но он терпит неудачу - пожалуйста, посмотрите код - Может кто-нибудь сказать мне, в чем проблема?
if __name__ == '__main__':
strSize = input()
inpt = input()
strArrSize = strSize.split()
if (len(strArrSize) ==2):
n = strArrSize[0]
m = strArrSize[1]
inptArray = inpt.split()
print(n)
print(len(inptArray))
if (n == len(inptArray)):
print("true")
else:
print("Given " + str(n) + " integers but entered " + str(len(inptArray)))
else:
print("Invalid itnput. The first line must have two space seperated integers.")
Вот вход и выход я получил.
PS S: \ Study \ CH1> python tt.py
1 2
1
1
1
Дано 1 целое число, но введено 1
3 ответа
Когда вы сравниваете n == len(inptArray)
они не равны, потому что n
это str
а также len(inptArray)
является int
,
Когда вы установите n
а также m
брось их int
типы.
n = int(strArrSize[0])
m = int(strArrSize[1])
Давайте отладим это, проверив значения:
print('|'+n+'|', type(n))
print(len(inptArray))
Выход:
|1| <class 'str'>
1
input
возвращает строки. Когда вы разделяете это, вы получаете меньшую строку. Таким образом, n
является строковым значением len
возвращает целое число Поскольку они имеют разные основные типы, они не могут быть равными.
Исправить это с n = int(strArrSize[0])
, Вы, вероятно, захотите сделать то же самое с m
,
Вы хотите убедиться, что вы сравниваете подобное с подобным. Сравнение '1' == 1
дам False
потому что вы сравниваете str
с int
,
Вот один из способов исправить это:
strSize = input()
inpt = input()
strArrSize = strSize.split()
if (len(strArrSize) ==2):
n = strArrSize[0]
m = strArrSize[1]
inptArray = inpt.split()
print(n)
print(len(inptArray))
if (int(n) == len(inptArray)):
print("true")
else:
print("Given " + str(n) + " integers but entered " + str(len(inptArray)))
else:
print("Invalid itnput. The first line must have two space seperated integers.")
Или, как сказали другие ответы, вы можете преобразовать в int
когда вы назначаете n
а также m
,