2014-05-10 114 views
1

我使用蟒101版本4.1分割列表轉換成奇數項的兩個列表,甚至-numbered條目

輸入的實施例是(1,4,6,2,53,7)

需要的輸出是偶數(2,4,6)奇數(1,7,53)

我需要在這個問題中使用一個函數只有1個輸入,這將是列表,我認爲一個循環將有助於但我仍然無法得到它。我試着用下面的代碼:

from math import * 
from string import * 
def odd_even(L): 
    list1=raw_input() 
    list1=list1.split(" ") 
    even=[] 
    odd=[] 
    for x in list1: 
     if x%2==0: 
      even.append(L) 
     else: 
      odd.append(L) 
    return even,odd 

L=input() 
print odd_even(L) 
+0

你爲什麼不編輯你以前的問題? –

+0

@EduardGamonal:不一定,這個有基於其中一個答案的代碼..邊緣案例,我會說。 –

+1

爲什麼在函數*中使用更多的輸入呼叫*?你也在這裏對'L'和'list1'感到困惑。 –

回答

0

這是很好,你現在發佈一些代碼;編輯第一個問題本來會更好。

就快成功了:

# Module import is not necessary. 

def odd_even(L): 
    # list1=raw_input()  # <--- no need for raw input here 
    # list1=list1.split(" ") # <--- nor here 
    even=[] 
    odd=[] 
    for x in L: 
     if x%2==0: 
      even.append(x) 
     else: 
      odd.append(x) 
    return even,odd 

L= range(20)      # <--- can replace with raw_input if you need to 
print odd_even(L) 
+0

我認爲Martijn Pieters在我編輯它的同時編輯了我的帖子,然後我搞亂了他的編輯......我也找不到接受編輯的地方...對不起,還在學習。 –

+1

別擔心 - @Martijn有足夠的代表。不需要編輯批准(他正在修復你的一些縮進)......帖子的結尾看起來很好:) –

0
  1. 爲什麼input()在你的函數?
  2. 當你使用input()時,你會得到一個字符串,但是你的函數需要整數,所以你必須在輸入列表的每個元素上應用int()


def odd_even(L): 
    even=[] 
    odd=[] 
    for x in L: 
     if x%2==0: 
      even.append(x) 
     else: 
      odd.append(x) 
    return even, odd 


L = input() 
L = L.split(" ") 
L = list(map(int, L)) 
print(odd_even(L)) 
1

輸入號碼,對它們進行排序:

def odd_even(numbers): 
    result = [], [] 
    for number in numbers: 
     result[number%2].append(number) 
    return result 

def main(): 
    numbers = raw_input('Enter numbers:') 
    numbers = map(int, numbers.split()) 
    even, odd = odd_even(numbers) 
    print "even", even 
    print "odd", odd 

if __name__ == '__main__': 
    main() 
1

這裏是解決方案,返回字典中鍵 「偶」 和 「奇」:

def odd_even(L): 
    even=[num for num in L if num % 2 == 0] 
    odd=[num for num in L if num % 2 != 0] 
    return {"even": even, "odd": odd} 

dict = odd_even([1,2,3,4,5]) 
print dict["even"] 
print dict["odd"] 
0

使用條件表達式相同但不同:

def is_even(n): 
    return not n % 2 

def split_odd_even(L): 
    '''Split a list of numbers into odds and evens. 

    L --> list 
    returns tuple of two lists 
    ''' 
    odd, even = list(), list() 
    for n in L: 
     even.append(n) if is_even(n) else odd.append(n) 
    return odd, even 

print split_odd_even(range(20)) 
>>> ([1, 3, 5, 7, 9, 11, 13, 15, 17, 19], [0, 2, 4, 6, 8, 10, 12, 14, 16, 18])