2011-09-01 30 views
-3

當我在Python中運行下面的程序時,該函數接受變量,但完全跳過其餘部分並重新顯示程序的主菜單,而不執行任何操作。此外,即使選擇了第一個或第二個選項(不需要第三個變量),它也會跳過限定的「if」語句並請求所有變量。順便說一句,它不應該是一個縮進錯誤,我只是縮進顯示它是在stackoverflow中的代碼。正在發生什麼事? Python在函數中跳過行

編輯:NEVERMIND。我得到它的工作。函數括號中的變量都必須相同。 DUH! 嫌額頭

option = 1 
while option !=0: 
    print "\n\n\n************MENU************" 
    print "1. Counting" 
    print "2. Fibbonacci Sequence" 
    print "0. GET ME OUTTA HERE!" 
    print "*" * 28 
    option = input("Please make a selection: ") #counting submenu 
    if option == 1: 

     print "\n\n*******Counting Submenu*******" 
     print "1. Count up by one" 
     print "2. Count down by one" 
     print "3. Count up by different number" 
     print "4. Count down by different number" 
     print "*" * 28 
     countingSubmenu = input("Please make a selection: ") 
     x=0 
     y=0 
     z=0 
     q=0 
     def counting (x, y, z, countingSubmenu, q): 
      x = input("Please choose your starting number: ") 
      y = input("Please choose your ending number: ") 
      if countingSubmenu == 1: 
       for q in range (x, y+1, 1): 
        print q 
      elif countingSubmenu == 2: 
       for q in range (x, y, -1): 
        print q 
      elif countingSubmenu == 3: 
       z = input("Please choose an increment: ") 
       for q in range (x, y+1, z): 
        print q 
      else: 
       z = input("Please choose an increment: ") 
       for q in range (x, y, -z): 
        print q 
      return x, y, z, q 
     if countingSubmenu == 1: 
      counting(countingSubmenu, x, y, z, q) 
     if countingSubmenu == 2: 
      counting(countingSubmenu, x, y, z, q) 
     if countingSubmenu == 3: 
      counting(countingSubmenu, x, y, z, q) 
     if countingSubmenu == 4: 
      counting(countingSubmenu, x, y, z, q) 
+1

「NEVERMIND。我得到它的工作。函數括號中的變量都必須是相同的。」這是一種不好的更新。請刪除它。請發佈一個**答案**與其他人需要的信息來弄清楚發生了什麼。回答你的問題沒關係。道歉不好。最好刪除它,而不是提供這樣一個令人困惑的更新。 –

回答

5

你的函數定義爲counting (x, y, z, countingSubmenu, q),但是當你調用它,你參數列表counting(countingSubmenu, x, y, z, q)

3

似乎在Python 2.7是工作(見克里斯·菲利普斯回答)

反正一些改進,你可以做

  • 取出功能counting圈外
  • 你不必調用counting四次,而不只是撥打counting(countingSubmenu, x, y, z, q)
  • counting函數以不同的順序傳遞參數,並以錯誤的順序傳遞它
  • 因爲你問的是從用戶
3

你沒有提到你正在使用哪個版本的Python你不必通過X,Y,Z,但我懷疑它從3.x系列的。 Python 3 changed the behavior of input()以匹配2.x系列中以前的raw_input()。

因此,input()現在總是返回一個字符串。所以你需要對結果調用int()或eval()(我個人建議int())。

+0

+1我認爲就是這樣! –

1

您的問題是您將錯誤的順序傳遞給counting()