2017-10-30 4 views
0

단일 요소를 사용자 입력에서 부동 소수점 배열로 부동 값으로 추가하는 방법은 무엇입니까? 아래에 작성한 코드는 매번 빈 배열을 인쇄하고 아무 것도 추가되지 않는 이유를 이해하는 데 문제가 있습니다.새 요소 배열에 단일 요소를 추가하는 방법

import numpy as np 

start=0 
start_prompt = int(input("Start press 1")) 
while start_prompt > start: 
    x=np.array([]) 
    y = float(input("Please input number: ")) 
    if y > 0: 
     np.append(x,y) 
    print(x) 
+5

여기에 파이썬 목록을 사용 하겠지만 여기에는 numpy 배열이 필요하지 않습니다. – roganjosh

+1

이것은 무한 루프이기도합니다 .... – DavidG

+0

np.append를 사용하지 마십시오. 특히 설명서를 읽지 않아도됩니다. – hpaulj

답변

0

배열을 변경해야합니까? start_prompt 항상 시작보다 클 수 있기 때문에 먼저 당신이 무한 루프를 실행하고, 또한

x = np.append(x, y) 

>>> while start_prompt > start: 
...  x=np.array([]) 
...  y = float(input("Please input number: ")) 
...  if y > 0: 
...   x = np.append(x, y) 
...  print(x) 

: 당신은로 작성해야합니다. 루프 내에서 x 배열을 만들었고 각 반복마다 다시 초기화됩니다. 예상대로 작동하도록하려면 while 루프 외부에서 선언하십시오. 둘째, 할 일을하는 더 좋은 방법이 있습니다.

+1

루프 밖에서'x = np.array ([]) '를 움직여야합니다. – DavidG

+0

저는 그것이 무한 루프라는 것을 알고 있지만, x의 값은 여전히 ​​변할 것입니다. – pissall

+0

@pissall 루프를 반복 할 때마다 배열을 빈 배열로 다시 정의하여 작업을 실행 취소합니다. 의미있는 결과물은 없습니다. – roganjosh

0

안녕하세요. 답장을 보내 주셔서 감사합니다. 나는 당신이 제안한 것을 받아 들였고 모든 제안에 대해 약간의 시행 착오를 거쳤으며 의도 한 방식대로 작업하게 만들었습니다. 그래서 모든 의견 제시 자들에게 큰 감사를 표합니다. 다음은 작동하는 코드입니다 (복사 및 붙여 넣기 중에 오류가 없기를 바랍니다.)

def get_user_values1(x): 
    x = np.array([]) 
    initial = float(input("Input the cup weight in grams:")) 
    while initial <= 0: 
     #print ("Invalid") 
     initial = float(input("Input the cup weight in grams:")) 
     x=np.append(x,initial) 
    else: 
     x=np.append(x,initial) 
    return (x) 



def main(): 
    x = np.array([]) 
    start = 1 #1 = yes stasrt script 
    start_prompt = int(input("To start press 1, To Close press 0: ")) 
    while start_prompt == start:  
     get_user1 = get_user_values1 (x) 
     x = np.append(x,get_user1) 




main()