2011-04-24 67 views
0

如果輸入是數字,我想在我的if語句中打印公式的結果,如果是字母,則打印"any thing"Python - 如果輸入是字母或數字,則顯示不同的輸出

我試過這段代碼,但是效果不好。這裏有什麼問題?

while 1: 
    print '\tConvert ciliuse to fehrenhit\n' 
    temp = input('\nEnter the temp in C \n\t') 
    f = ((9/5)*temp +32) 
    if temp.isdigit(): 
     print f 
    elif temp == "quit" or temp == "q" : 
     break 
    elif temp.isalpha() : 
     print ' hhhhhhh ' 

回答

2

第一對夫婦的事情 - 總是用raw_input用戶輸入而不是inputinput將評估潛在危險的代碼。

while 1: 
    print "\tConvert ciliuse to fehrenhit\n" 
    temp = raw_input("\nEnter the temp in C \n\t") 

    if temp in ("quit", "q"): 
     break 

    try: 
     f = ((9.0/5.0) * float(temp) + 32) 
    except ValueError: 
     print "anything" 

代替使用isalpha檢查,如果輸入是無效的的,用於ValueError catch子句,當使用一個非數字值,該值被拋出。

0

它爲什麼不工作?你是否收到任何類型的錯誤?

直走我可以看到一個問題。在將其驗證爲數字之前,您正在進行計算。將計算移至if temp.isdigit()之內。

0

看看本作的一些例子:

http://wiki.python.org/moin/Powerful%20Python%20One-Liners

OK,這個工程。唯一的問題是當你辭職時,你會被解僱。

while 1:import sys; temp = raw_input('\ n輸入C \ n \ t中的溫度值); temp.isdigit()和sys.stdout.write('%lf'%((9./5)*float (temp)+32))或temp =='q'和sys.exit(0)或sys。 stdout.write(temp)

4

您需要逐行檢查您的代碼,並考慮您期望每個值的類型。 Python不像一些語言那樣在字符串和整數之間自動轉換,所以記住類型是很重要的。

讓我們先從這一行:

temp = input('\nEnter the temp in C \n\t') 

如果你看一下the documentationinput()input()實際上您在在Python 2.x中鍵入的內容(這看起來像你使用)調用eval()。這意味着它會將你在那裏鍵入的內容當作代碼進行評估,就像在shell中鍵入它一樣。所以如果你輸入123,它將返回一個int;如果您輸入'abc',則會返回str;如果你輸入abc(並且你還沒有定義變量abc),它會給你一個錯誤。

如果你想得到用戶輸入的字符串,你應該使用raw_input()來代替。

下一行:

f = ((9/5)*temp +32) 

它看起來像你期待temp是一個數字。但這沒有意義。無論temp是什麼,該行都會被執行,並且您希望兩個包含數字的字符串和包含字母的字符串作爲輸入。這條線不應該在這裏。

在繼續:

if temp.isdigit(): 

isdigit()是一個字符串的方法,所以在這裏你希望temp是一個字符串。這實際上是應該的。

if聲明的這個分支是你的公式應該去,但它的工作,你必須首先temp轉換爲整數,如:

c = int(temp) 

此外,爲了讓您的計算制定出正確的,你應該讓你被一個浮點數乘以分數:

f = ((9/5.0)*c +32) 

如果您對上面的改變你的代碼的其餘部分應該沒問題。

相關問題