본문 바로가기
프로그램

[파이썬] 문제 : 난수(random) 정해진 행으로 배열

by 오디세이99 2022. 11. 21.
728x90
반응형

문제

숫자를 범위 안의 숫자를 랜덤으로 뽑은 후 정해진 행(사진에선 가로 10줄)에 배열.

random package 사용을 선언 하고

1부터 100까지 수를 가진 리스트를 만듭니다.

import random l = list(range(1,101))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

L 리스트에 있는 내용을 임의로 섞습니다. (소문자 l은 보기에 i, 숫자 1 등 다른 문자와 혼동될 수 있기 때문에 설명은 L로 할께요)

random.shuffle(l)
[89, 56, 5, 50, 55, 49, 73, 6, 16, 67, 83, 20, 48, 40, 1, 32, 17, 37, 70, 3, 62, 36, 9, 87, 28, 60, 2, 4, 88, 79, 26, 74, 45, 97, 61, 14, 10, 59, 92, 42, 30, 38, 66, 21, 95, 19, 33, 64, 47, 85, 58, 24, 53, 44, 71, 76, 43, 93, 15, 86, 29, 84, 78, 98, 22, 8, 46, 75, 65, 96, 13, 69, 100, 41, 77, 27, 90, 25, 81, 68, 31, 12, 52, 7, 57, 54, 63, 18, 94, 82, 11, 34, 23, 91, 35, 99, 51, 39, 72, 80]

다음 코드인데, 여러개 개념이 같이 있어서 어려울 수 있어요.

for i in range(10): print(''.join(map(lambda n:'%3s '%n, l[10*i:10*(i+1)])))

하나씩 떼어내서 실험해보면 됩니다.

(lambda n:'%3s '%n)(3) # 앞뒤에 공백 만들기

결과를 보면 앞뒤어 공백을 붙여주는 것을 알 수 있습니다.

' 3 '

lamda다는

- lambda 매개변수 : 표현식

으로 되어 있습니다.

위 코드를 왼쪽부터 보면

- n을 마지막으로 받을 거고

- '%3s ' 와 같이 문자열로 3자리 만든다

- %n 은 n을 이수로 받는다.

- (3)은 제가 임으로 값을 준것으로

다음은 'l[10*i:10*(i+1)]'코드인데

다음과 같이 실행해 봅니다.

for i in range(10): print(l[10*i:10*(i+1)])

아래 결과를 보면 L 리스트 10개씩 만들어 주는 것입니다.

[4, 28, 51, 67, 18, 89, 88, 81, 7, 13] [69, 76, 27, 43, 40, 87, 85, 11, 9, 91] [46, 50, 2, 45, 59, 86, 6, 32, 99, 90] [75, 77, 22, 33, 20, 16, 49, 71, 37, 38] [79, 30, 66, 78, 54, 58, 84, 1, 3, 19] [60, 8, 24, 70, 47, 48, 80, 41, 93, 65] [35, 92, 83, 53, 42, 72, 14, 34, 36, 73] [98, 5, 57, 64, 10, 12, 15, 44, 94, 25] [96, 61, 21, 31, 74, 68, 100, 95, 26, 17] [52, 56, 82, 63, 23, 55, 39, 62, 29, 97]

join은

a = ['a','b','c'] ''.join(a)

입력으로 들어온 List의 문자열 값들를 붙여줍니다.

'abc'

728x90
반응형

댓글