2017-02-16 50 views
-1
def main(): 
    for sayi in range(1,100): 
     if not sayi%2==0: 
      sonuc=hesapla(sayi) 
      print(sonuc) 

def hesapla(sayi): 
    carpim = 1 
    if carpim == 1: 
     carpim=carpim*sayi 
     return carpim 
main() 

它不工作乘號,我想打印:Python的1-100與功能

1 
3 
15 
105 
945 
10395 
135135 
2027025 
34459425 
654729075 
13749310575 
316234143225 
................. 

但它的打印:

1 
3 
5 
7 
9 
11 
13 
15 
17 
19 
21 
............... 
+2

似乎是一個功課... :) –

+0

上水屠房爽:) – pigman

+0

「_IT不是working_」是不是一個問題。詢問我們可以回答並幫助您的關於您的代碼的明確問題。 –

回答

0

可以在只有一個功能做到這一點。見下文。

def main(): 
    sonuc = 1 
    for sayi in range(1,100): 
     if not sayi%2==0: 
      sonuc=sonuc*sayi 
      print(sonuc) 
main() 

這樣做的一種雙功能的方法是如下:

def main(): 
    sonuc=1 
    for sayi in range(1,100): 
     if not sayi%2==0: 
      sonuc=hesapla(sonuc,sayi) 
      print(sonuc) 

def hesapla(sonuc,sayi): 
    carpim=sonuc*sayi 
    return carpim 

main() 

EDIT下面是使用的步驟的簡化方法,而不是使用則i%2檢查:

def main(): 
    sonuc=1 
    for sayi in range(1,100,2): 
     sonuc=hesapla(sonuc,sayi) 
     print(sonuc) 

def hesapla(sonuc,sayi): 
    return sonuc*sayi 

main() 
+0

否我想用兩個函數(main和hesapla(英文:calculate)) – pigman

+0

爲什麼要使用兩個函數? –

+0

因爲我的練習本要兩個功能。 – pigman

0

您需要保留一個正在運行的產品,而不是每次重新計算它。

x = 1 
for i in range(1, 100, 2): 
    x *= i 
    print(x) 

編輯:

你真的不需要兩個函數來做到這一點。這是浪費資源和不必要的複雜。我假設有人讓你做這個

def main(): 
    for i in range(1, 100, 2): 
     print(calculate(i)) 

def calculate(i): 
    x = 1 
    for n in range(1, i+1, 2): 
     x *= n 
    return x 
+0

是的我知道,但我的練習本想要兩個功能。謝謝。 – pigman