为真实陈述而虚假

时间:2019-03-07 06:59:16

标签: python floating-point int

在下面的代码中,当a,b和c的输入分别为2,3和4时,

sample

输出为

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)

请解释为什么会发生

5 个答案:

答案 0 :(得分:4)

第一个代码段的结果是:

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

在python中,基于字符串的unicode值(此时为一个字符)对字符串进行比较。因此,以上比较变为:

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

False

另一方面,您的第二个片段是简单的float比较:

(2.0 + 3.0) > 4.0

True

答案 1 :(得分:2)

以前:

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 

答案 2 :(得分:1)

如何将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

答案 3 :(得分:1)

输入函数返回字符串值,并且您正在比较字符串值而不是整数。

请按照以下代码将输入值强制转换为整数。

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))

答案 4 :(得分:0)

input()的返回类型是字符串。因此,当您将('1'+'2')做为字符串时,输出为12

因此,您需要使用int()float()将字符串转换为数字数据类型,然后才能工作。