파이썬 난수 생성 함수 0 포함 하는 함수 만들기
본문
여기까지 난수 생성하는 함수를 만들었습니다. (최소값, 최대값, 난수 생성 개수 지정)
이 함수를 import 해와서 함수를 하나 더 만든 후 랜덤 신호를 생성할 때.
0이 있다면 출력하고 신호를 return하고 0이 없다면 다시 랜덤한 신호를 생성하는 함수를 만드는데
저 주석 처리한 부분이 왜 잘못됐는지 잘 모르겠습니다.
답변 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]
답변을 작성하시기 전에 로그인 해주세요.