Ложь за истинное утверждение - PullRequest
2 голосов
/ 07 марта 2019

В приведенном ниже коде, когда входы для a, b и c равны 2,3 и 4 соответственно,

a=input('Enter length of first side of triangle: ')
b=input('Enter length of second side of triangle: ')
c=input('Enter length of third side of triangle: ')
print((a+b)>c)

Выход

False

Но если входы изменяются на плавающее (как показано ниже),

a=float(input('Enter length of first side of triangle: '))
b=float(input('Enter length of second side of triangle: '))
c=float(input('Enter length of third side of triangle: '))
print((a+b)>c)

тогда вывод

True

Пожалуйста, объясните, почему это происходит

Ответы [ 5 ]

4 голосов
/ 07 марта 2019

Результат вашего первого фрагмента:

('2' + '3') > '4'
# which is equivalent to:
'23' > '4'

В python строки сравниваются по значению Юникода, по одному символу за раз.Таким образом, приведенное выше сравнение становится:

ord('2') > ord('4')
# which is equivalent to
50 > 52

, что составляет False.

С другой стороны, ваш второй фрагмент представляет собой простое сравнение float:

(2.0 + 3.0) > 4.0

что составляет True

2 голосов
/ 07 марта 2019

Ранее:

a=input('Enter length of first side of triangle: ')   #  '2'
b=input('Enter length of second side of triangle: ')  #  '3'
c=input('Enter length of third side of triangle: ')   #  '4' 
print((a+b)>c)   # ('2' + '3') > '4' becoming '23' > '4' 

input возвращает str, преобразовать его в int и затем сравнить:

a=int(input('Enter length of first side of triangle: '))    # 2
b=int(input('Enter length of second side of triangle: '))   # 3
c=int(input('Enter length of third side of triangle: '))    # 4
print((a+b)>c)    # (2 + 3) > 4   becoming 5 > 4 
1 голос
/ 07 марта 2019

Функция ввода возвращает строковое значение, и вы сравниваете строковые значения, а не целые числа.

Пожалуйста, приведите входные значения к целому числу, используя следующий фрагмент кода.

a=int(input('Enter length of first side of triangle: '))
b=int(input('Enter length of second side of triangle: '))
c=int(input('Enter length of third side of triangle: '))
print((a+b)>c)

или

a=input('Enter length of first side of triangle: ')
b=input('Enter length of second side of triangle: ')
c=input('Enter length of third side of triangle: ')
print((int(a)+int(b))>int(c))
1 голос
/ 07 марта 2019

Как насчет преобразования входных данных, которые string в int

a=int(input('Enter length of first side of triangle: '))
b=int(input('Enter length of second side of triangle: '))
c=int(input('Enter length of third side of triangle: '))
print((a+b)>c)

Это дает

Enter length of first side of triangle: 2
Enter length of second side of triangle: 3
Enter length of third side of triangle: 4
True
0 голосов
/ 07 марта 2019

Тип возвращаемого значения input () - строка.Поэтому, когда вы делаете ('1'+'2') в виде строки, выдается 12.

Таким образом, вам нужно преобразовать строку в числовой тип данных, используя int() или float(), и это сработает.

...