2016-08-30 276 views
-2

這是我的腳本,它是一個像計算器一樣的腳本,但是當我運行它時,它給了我while循環的無效語法?我是新來的蟒蛇請幫助我。在python中使用while循環的語法錯誤

import functools 
numbers=[] 

def mean(): 
    end_mean = functools.reduce(lambda x, y: x + y, numbers)/len(numbers) 
    print(end_mean) 

def sums(): 
    end_sum = functools.reduce(lambda x, y: x + y, numbers) 
    print(end_sum) 

def whatDo(): 
    print('Input Extra Numbers '+str(len(numbers)+1)+' (or nothing to close):') 
    try: 
     number= int(input()) 
     numbers.append(number) 
    except: 
     print('What do you want to do?') 
     answer = input() 
     if answer == "mean": 
      mean() 
     elif answer == 'sum': 
      sums() 
     elif answer== 'median': 
      median() 

def median(): 
    numbers.sort() 
    medianNumber=int(len(numbers)) 
    if medianNumber%2==0: 
     end_median=numbers[int(len(numbers))/2]+numbers[int(len(numbers))/2+1] 
    if medianNumber%2==1: 
     numbers[int(len(numbers))+1/2 

while True: 
    print('Input Number '+str(len(numbers)+1)+' (or nothing to close):') 
    try: 
     number= int(input()) 
     numbers.append(number) 
    except: 
     print('What do you want to do?') 
     answer = input() 
     if answer == "mean": 
      mean() 
     elif answer == 'sum': 
      sums() 
     elif answer== 'median': 
      median() 
     print('Do you want anything else?') 
     reply=input() 
     if reply=='no': 
      break 
     elif reply=='yes': 
      whatDo() 
     else: 
      break 

我沒有刪除while循環,但它說,打印功能是無效的。請記住,我是python的新手。

+3

你在這之前就錯過了關閉'''的行。 – Barmar

+0

此外,該行似乎缺少賦值操作。 – Barmar

+0

爲什麼使用'functools.reduce'來獲取序列的總和?只需使用內置的sum函數。 –

回答

2

之前:

numbers[int(len(numbers))+1/2]

通常這是一個好主意總是c heck上面的錯誤發生的地方,如果python告訴你發現了一個SyntaxError,但你的語法似乎有效。

0

就在while循環之前,有丟失]numbers列表的使用

這行應該是:while循環結束括號添加到線

numbers[int(len(numbers))+1/2] 
+1

你在答案中也錯過了']'! –