簡體   English   中英

為真實的陳述弄錯

[英]Getting false for a true statement

在下面的代碼中,當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

請解釋為什么會這樣

您的第一個代碼段的結果是:

('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

先前:

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 

如何將輸入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

輸入函數返回字符串值,並且您正在比較字符串值而不是整數。

請通過下面的代碼將輸入值輸入到整數。

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

input()的返回類型是string。 所以當你做('1'+'2')作為字符串時,輸出為12

所以你需要使用int()float()將字符串轉換為numeric數據類型,這將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM