2017-10-02 14 views
1

Pythonの初心者です。私はforループを使い、10 - 19の範囲をf(x)& g(x)の両方の関数定義x^2 +1に入れたいと思っています。以下を成功させようとしました。提案?関数定義に変数を配置する - Python

def f(x): 
    return (x*2+1) 

def g(x): 
    return (x*3+1) 

for f(x) in range(10, 20): 
    print x 

for g(x) in range(10, 20): 
    print x 
+3

'for x in range(10、20):print f(x)'? – mgilson

+0

@mgilson答えとして投稿してください。 – Barmar

+0

あなたはこれから何かを得るかもしれないし、そうでないかもしれないが、私の脳が働く方法は、範囲(10)のf(x)のための*(例えば)* '構文が正しくありません。パーサージェネレーターのためのpython [文法の定義](https://docs.python.org/2.7/reference/grammar.html)にあります。それを読む方法は[Wikipedia](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form)で説明されています。 – Aaron

答えて

1

あなたの関数呼び出しは

for x in range(10, 20): 
    print f(x) 

for x in range(10, 20): 
    print g(x) 

あなたが指定した範囲内xのすべてのインスタンスのために、あなたの関数を呼び出している。この方法は、あなたが現在それを呼び出している方法は意味をなさないでなければなりません。

2

あなたは変数やメソッド式を切り替える必要があります。

for x in range(10, 20): 
    print f(x) 

for x in range(10, 20): 
    print g(x) 

これは、それぞれの範囲内f(x)g(x)xについて(10、11、12、...、19)を呼び出します。

-2

あなたが私がforループを使用すると、10から範囲を持ってい

を言って何を意味するかは不明である - のための関数定義に のx^2 +1を置かれている19両方ともf(x)&g(x)である。

しかし、あなたが指定した範囲を意味している場合、たとえば、関数定義に配置されるあなたは、代わりにこのコードスニペットの出力は

のように見えるの機能に次のよう

def f(first: int, last: int) -> int: 
    for i in range(first, last + 1): 
     yield i ** 2 + 1 

def g(first: int, last: int) -> int: 
    for i in range(first, last + 1): 
     yield i ** 3 + 1 

for i in f(10, 20): print(i, end = " ") 
print() 
for i in g(10, 20): print(i, end = " ") 
print() 

を定義することができます

101 122 145 170 197 226 257 290 325 362 401 
1001 1332 1729 2198 2745 3376 4097 4914 5833 6860 8001 

使用Pythonは注釈をサポートしていない場合は、

のような定義を書き換えるには