2015-09-18 162 views
0

我有這樣的提示:如果語句比較失敗

你必須做你的化學作業,但你討厭查找週期表 元素!寫一個程序,從標準輸入中取一個名稱爲 的元素(作爲一個字符串,與案例無關),並且 打印一個代表其原子權重的雙精度值到標準輸出。 僅執行前三個元素hydrogren, 氦和鋰的程序,它們的原子量分別爲1.008, 4.0026和6.94。如果還有其他內容作爲輸入,請打印語句「對不起,我不認識那個元素!」

我寫了一個代碼,但一直得到錯誤的結果。不管我輸入什麼,它總是出錯。標準輸出不斷指出「輸入元素名稱:」與原子量數

這裏沿着就是我寫的:

hydrogen = 1.008 
helium = 4.0026 
lithium = 6.94 
atomic_weight = input("Enter element name:").lower() 
if atomic_weight == hydrogen: 
    print(hydrogen) 
elif atomic_weight == helium: 
    print(helium) 
elif atomic_weight == lithium: 
    print(lithium) 
else: 
    print("Sorry, I don't recognize that element!") 

更新代碼

hydrogen = 1.008 
helium = 4.0026 
lithium = 6.94 
element_name = input("Enter element name:").lower() 
if element_name == hydrogen: 
    print(hydrogen) 
elif element_name == helium: 
    print(helium) 
elif element_name == lithium: 
    print(lithium) 
else: 
    print("Sorry, I don't recognize that element!") 
+0

'atomatic_weight'是一個字符串;這就是你將從'input'返回的內容(否則'.lower()'不起作用。爲了比較一個字符串和一個浮點數(因爲你的元素是浮點數),你必須將字符串轉換爲float。附加說明:浮點數比較不準確 – Evert

+0

這對我們很有幫助,但更有助於您解釋您得到的「錯誤結果」如果您已經輸入了「無論輸入什麼名稱, '對不起......'「你可能已經看到了這個問題,正確命名變量可以節省你的麻煩;你不需要一個'atomic_weight',我們知道它是一個數字,你要求一個'element_name',輸入字符串的更好的名字 – msw

+0

感謝您的命名建議! –

回答

4

你是你輸入比較原子權重。您可能想要將其與字符串進行比較,例如"hydrogen","helium""lithium"

0

你可能要一本字典,如果你想使用該名稱訪問原子量:

elements = {'hydrogen': 1.008, 
      'helium': 4.0026, 
      'lithium': 6.94} 

name = input("Enter element name:").lower() 
print(elements.get(name, 'element not found!')) 
+0

當然,這是Pythonic做的更好的方法,但是要考慮你的聽衆,如果你要回答,請注意你正在扔詞典和非典型訪問模式('get')在某人身上他們在打雜類型和其他基礎方面遇到困難。 – msw

1

我終於想通了,輸入被認爲是空

hy = 1.008 
he = 4.0026 
li = 6.94 


element_name = input("").lower() 

if element_name == "hydrogen": 
    print(hy) 
elif element_name == "helium": 
    print(he) 
elif element_name == "lithium": 
    print(li) 
else: 
    print("Sorry, I don't recognize that element!") 
+0

如果你指'input(「」)'中的字符串;不,那沒關係。任何你會放在那裏的東西都會在某人給出的實際輸入之前使用一個字符串(問題)。有''輸入元素名稱:''那裏是完全正確的。 – Evert