2012-09-04 29 views
1

我的實驗室問我「提示輸入一個數字,接受一個正數或負數。使用雙重替代」決定「結構並打印一條消息輸入的數字是正數還是負數。「Python實驗室 - 我被我的代碼卡在我的實驗室

我做了我的代碼,但由於某種原因,它不工作....

def getNumFromUser(): 
    num=input (「Please enter a number: 「) 
    if num >= 0: 
     print "The number you entered is positive" 
    elif num <= 0: 
     print "The number you entered is negative" 
    else: 
    getNumFromUser() 

而且它不會運行我的代碼出於某種原因,當我拿出ELIF聲明它要求我輸入數字如果我輸入負數,它會要求我重新輸入數字以獲得肯定的結果......我只是不知道如何在代碼中結合負數和正數,以便「打印輸出的數字表示輸入的數字是正數還是」負。」 * 我是新來的Python編程,所以我在這裏輸了,我會很感激,如果有人向我解釋 *

+0

你用什麼編輯器鍵入你的代碼btw?你有奇怪的字符輸入()字符串周圍的引號 – jdi

+0

我使用Wing IDE ... – yulana

回答

4

input功能python2.x將嘗試並評估您將其作爲代碼傳遞給它的字符串。這可能被認爲是不可取的或危險的,通常建議使用raw_input代替。

這就是說,raw_input會給你一個字符串。你會希望將其轉換爲int,以比其他整型:

val_str = raw_input("enter a number") 
if int(val_str) >= 0: 
    print "greater" 

請記住,如果用戶沒有輸入一個數字,這個例子就會崩潰。你可以使用:val_str.isdigit()來檢查一個字符串是否是一個數字。這適用於整數,而不是浮點數。你的支票的一部分可以先確認它是一個int,否則再問一次。此外,isdigit將不會正確地檢測到一個負數,這意味着您可能想要了解如何捕獲可能會引發異常...

至於您的整體結構,我覺得只需while循環檢查將服務你不是一個遞歸調用getNumFromUser更好的每一次他們進入不良信息:

def getNumFromUser(): 

    while True: 
     num=raw_input("Please enter a number: ") 
     try: 
      num = int(num) 
     except ValueError: 
      # if the input cannot be converted into an int 
      # then loop again 
      continue 
     else: 
      # otherwise, we have an int, so stop looping 
      break 

    # num is now an int 
    if num >= 0: 
     print "The number you entered is positive" 
    else: 
     print "The number you entered is negative" 

    return num 

它可能不是你的任務期待用戶輸入以外的任何其他有效的int的一部分,但這個例子說明了如何嘗試並轉換爲int,並處理失敗。

+0

jdi謝謝你解釋讓我試着完成這個任務,並看看它將如何工作..... – yulana

+0

Jdi我用簡單的while循環做了我的代碼,它給了我負面和正面的數字。但是我不知道如何結束程序,例如用戶在第一次嘗試輸入負值後,第二次嘗試結果爲正值時,程序應該關閉,但是我的輸入號碼保持不變,而True: num =輸入(「請輸入數字:」) 如果num> = 0: 打印「您輸入的數字爲正數」 其他: 打印「您輸入的數字爲負數」 – yulana

+0

您需要使用'break'關鍵字告訴你的while循環在你想要的地方結束。 – jdi

0

使用

num=raw_input(「Please enter a number: 「) 

代替

+0

我不知道爲什麼人們投票了。僅僅使用raw_input是不夠的。它將返回一個字符串,OP仍將其與int進行比較。儘管它的'0',它仍然應該指出,它可以導致其他數字比較的問題。 – jdi

+0

@jdi: - 真的,你應該得到更多,但也許他們跟着更短更甜......並避免勺子餵養。;) – perilbrain

+0

是的,這確實解決了它的非數字時不會崩潰的直接問題。希望OP在任何時候都不改變要比較的數字範圍。 – jdi

0

確保輸入和括號之間沒有空格。你寫這個: num = input(「請輸入一個數字:」) 當你應該寫這個: num = input(「請輸入數字:」) 這將評估一個字符串。沒有必要添加原始部分,至少按照我的經驗用python編程