파이썬 난수 생성 함수 0 포함 하는 함수 만들기

파이썬 난수 생성 함수 0 포함 하는 함수 만들기

QA

파이썬 난수 생성 함수 0 포함 하는 함수 만들기

답변 1

본문

989943380_1666450340.973.png

 

여기까지 난수 생성하는 함수를 만들었습니다. (최소값, 최대값, 난수 생성 개수 지정)

이 함수를 import 해와서 함수를 하나 더 만든 후 랜덤 신호를 생성할 때.

0이 있다면 출력하고 신호를 return하고 0이 없다면 다시 랜덤한 신호를 생성하는 함수를 만드는데

저 주석 처리한 부분이 왜 잘못됐는지 잘 모르겠습니다.

 

989943380_1666450461.1467.png

이 질문에 댓글 쓰기 :

답변 1

지역변수 array 를 못찾는것 같습니다.


#    if find_zero(array) == 0:

바로 아래라인 while find_zero(array) 도 마찬가지 이겠구요.

 


if __name__ == "__name__":

이 부분도


if __name__ == "__main__":

처럼 되어야 하지 않나 싶구요

 

파이썬 잘은 모르지만 재구성 해봤습니다.

다만 의도하시는 내용이 정확히 맞는지는 모르겠습니다.

 

+ 구성요소


./
├── generate_random_signal.py
└── main.py

 

+ generate_random_signal.py


from random import randint
def generate_random_signal(min_val, max_val, length):
    arr = []
    x = 0
    while (x < length):
        for i in range(length):
            i = randint(min_val, max_val)
        arr.append(i)
        x += 1
    return arr
if __name__ == "__main__":
    input_string = input("세 정수를 입력하세요: ")
    splited_input = input_string.split()
    min_val, max_val, length = map(int, splited_input)
    array = generate_random_signal(min_val, max_val, length)
    print(array)

 

+ main.py


from random import randint
# from lab4_기본 import generate_random_signal
from generate_random_signal import *
def find_zero(arr):
    for i in range(len(arr)):
        if arr[i] == 0:
            return True
    return False
def random_signal_with_zero(arr, min_val, max_val, length):
    generate_random_signal(min_val, max_val, length)
    if find_zero(arr) == 0:
        while find_zero(arr) == False:
            if min_val > 0:
                min_val = 0
            print("reset-param: { min_val: " + str(min_val) + ", max_val: " + str(max_val) + ", length: " + str(length) + " }")
            arr = generate_random_signal(min_val, max_val, length)
            print("re-generate: " + str(arr))
            if find_zero(arr) == True:
                break
    return arr
if __name__ == "__main__":
    min_val, max_val, length = map(int, input("세 정수를 입력하세요: ").split())
    array = [min_val, max_val, length]
    print(array)
    array = random_signal_with_zero(array, min_val, max_val, length)
    print(array)

 

+ 실행샘플


세 정수를 입력하세요: 1 3 3
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [1, 3, 2]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [1, 1, 2]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [2, 2, 3]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [2, 3, 3]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [3, 2, 3]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [2, 2, 2]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [2, 1, 2]
reset param { min_val: 0, max_val: 3, length: 3 }
regenerate: [1, 1, 0]
[1, 1, 0]
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 209
© SIRSOFT
현재 페이지 제일 처음으로