Python

[Python] 배열 / 반복문 / 랜덤함수

아잠만_ 2024. 6. 25. 11:18

배열

반대로 숫자로 갈 경우 역순으로 간다

arr = ["오리", "거위"]

#ECNA Script 규약에 맞춰 만듬 (자바스크립트와 흡사한 구조를 가짐)

print(arr[0], arr[1]) # 오리 거위
print(arr[-1], arr[-2]) # 거위 오리

메서드

  • 삽입
    • 배열.append(value)
    • 배열.insert(index, value)
  • 길이
    • len(배열)
arr = [1, 2, 3]

arr.append(4) 
# 뒤에 붙임 자바스크립트의 push와 같음

print(arr) # [1, 2, 3, 4]

# 맨끝에 넣어주기 위해서는 index사이의 값을 넣어줘야함
#arr.insert(4, 5) # 원하는 index에 value값을 넣음
arr.insert(len(arr), 5) # 원하는 index에 value값을 넣음

print(arr) # [1, 2, 3, 4, 5]
arr   1   2   3  
index 1   2   3   4
  • 생성
    • 배열 = range(범위 숫자)
      함수형 배열
    • list(배열) 
      함수형 배열을 일반 배열로 변환해주는 메서드
# 함수형 배열
arr = range(5)

print(arr) # range(0, 5) 0은 default값
# list 함수형 배열에서 배열로 변환
print(list(arr)) # [0, 1, 2, 3, 4]

# 1에서 5까지 출력
arr = range(1, 5+1)
print(list(arr))

반복문

for문

for i in range(5) : # 0 ~ 4까지
    print(i) # item

배열  출력

index도 넣고 싶을 땐 enumerate(배열)

arr = ["오리", "거위", "참새"]
'''
for i in range(len(arr)):
    print(arr[i])
'''    
for i in arr:
    print(i)

arr = ["오리", "거위", "참새"]
 
for idx, i in enumerate(arr):
    print(idx, i)

문제

# 1에서 10까지의 합을 구하기
sum = 0 # 더한 값을 저장해줄 변수
for i in range(1, 10+1):
    sum += i
print("1부터 10까지의 합 >>", sum)

# 첫수를 입력하시오 1
# 끝수를 입력하시오 4
# 1에서 4까지 합은 10입니다.

a = input("첫수를 입력하시오")
b = input("끝수를 입력하시오")

sum = 0
for i in range(int(a), int(b)+1):
    sum += i
    
print("{}에서 {}까지 합은 {}입니다.".format(a, b, sum))

랜덤 함수

어떤 함수를 import되었는 가의 차이로 호출 방식이 달라진다

1. from random import random

from random import random

rnd = random()
print(rnd)

2. import random

import random

rnd = random.random()
print(rnd)

random은 0 <= x < 1사이의 값을 출력한다

랜덤 함수는 많은 시도를 할 수록 중간값으로 수렴한다 (완전한 랜덤이 아니다)

from random import random

sum = 0
for i in range(100):
    rnd = random()
    sum +=rnd
print("100번의 평균 >> ",sum/100)

해당 결과를 시도해보면 0.5와 가까운 값을 얻을 수 있다.

문제

# 문제 랜덤함수를 이용해서 0.5보다 크면 홀 / 작으면 짝
from random import random
ran = random();

if ran > 0.5 :
    print("홀")
else :
    print("짝")

# random을 이용하여 1~9까지만의 정수를 출력하시오
from random import random
'''
ran = random()*(9-1)+1
print(round(ran))
'''

for i in range(100) :
    rnd = int(random()*9)+1
    print(rnd, end=",")

출력 자바와 비교

java python
System.out.println("abc") print( "abc" )
print( "abc" , end="\n")
System.out.print( "abc" ) print( "abc" ,end="")

로또 문제

from random import random
arr = [1, 2, 3]

for i in range(10):
    rnd = int(random()*3)
    temp = arr[0]
    arr[0] = arr[rnd]
    arr[rnd] = temp
    
print(arr)

from random import random
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

for i in range(10):
    rnd = int(random()*9)
    temp = arr[0]
    arr[0] = arr[rnd]
    arr[rnd] = temp
    
print(arr[0], arr[1], arr[2])

# 로또 생성
from random import random
arr = list(range(1,45+1))

for i in range(10000):
    rnd = int(random()*(len(arr)))
    temp = arr[0]
    arr[0] = arr[rnd]
    arr[rnd] = temp
    
lotto = [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]]
lotto.sort()
print(lotto)