2017-01-30 1 views
1
import numpy as np 
def Vin(t): 
    inputs = [] 
    for i in range (1000): 
     if (-1)**(np.floor(2 * t[i])) == 1: 
      Vin = (1) 
      inputs.append(Vin) 
     else: 
      Vin = (-1) 
      inputs.append(Vin) 

     return inputs 

I는 t 값의 범위에이 기능을 사용하면, I는 하나 개의 결과를 얻을파이썬 for-loop는 한 번만 실행됩니까?

input1=Vin(tpoints) 
print (input1) 

에만 원하는 반면에 [1]의 기능을 위해 그것을 준다 모든 t 값.

+3

함수가'return'에 도달하자마자 함수가 끝납니다. 돌아 오기 전에 전체 루프를 실행하려면 루프 대신에 return 문을 넣으십시오. – khelwood

+1

루프의 첫 번째 반복에서 종료됩니다 –

답변

0

for 루프에서 with를 반환하면 루프의 첫 번째 반복에서 함수에서 반환됩니다. 당신은 할 수 있습니다 다시 영장 전자 리턴 입력 여기에 기능에의 들여 쓰기를 확인

코드를

def Vin(t): 
    inputs = [] 
    for i in range (1000): 
     if (-1)**(np.floor(2 * t[i])) == 1: 
      inputs.append(1) 
     else: 
      inputs.append(-1) 
    return inputs 

을 다음과 같은 기능을

. BTW

, 당신의 기능이 더 파이썬하고 효율적인 코드로 줄일 수있다

def Vin(t): 
reduce map(lambda x:int((-1)**(np.floor(t[i] < 1))), range (1000)) 
+1

고마워요. :) – chknpie

0

시도 : 리턴의

for i in range (1000): 
     if (-1)**(np.floor(2 * t[i])) == 1: 
      Vin = (1) 
      inputs.append(Vin) 
     else: 
      Vin = (-1) 
      inputs.append(Vin) 

return inputs 

현재 들여 쓰기, 종료 1 반복 후 루프

3

다른 사람들이 말한대로 return 문에 들여 쓰기 오류가 있습니다. 많이

return [1 if (-1)**(np.floor(2 * t[i])) == 1 else -1 for i in range (1000)] 

그 목록 comprenhension + 삼원 건설 문이 -1,1 배열에 하나의 선을 작성 : 나는 더 파이썬 방식으로 코드를 다시 작성 모든 성가신 루프를 피하고 결과 오류가 저항 할 수 없었다 루프를 사용하여 작성하는 것보다 빠릅니다.

+0

이 함수는 더욱 더 줄일 수 있습니다. 내 대답을 확인하십시오. –

관련 문제