TIL-no25, python advanced 3

sanghun Lee·2020년 7월 9일
0

Today I Learned

목록 보기
23/66

dictionary 값 할당

키리스트와 값 리스트를 zip함수를 이용하여 묶는 방법을 익히기 위해
문제를 풀어봤다.

a 와 b의 input값이 주어지고 a 는 string 원소로된 list를
b는 float원소로된 list를 가지고 있다.
이때 두가지를 결합한 dictionary를 출력하는 문제이다.
아래는 참고를 위한 예제이다

lux 2 = dict(zip(['health','length','malee'],[330,220,110]))

이렇게 zip 안에 중괄호를 쳐서 묶어주는것을보고 아래와 같이 코드를 작성했는데
실패했다.

a = input().split()
b = input().split()
for i in range(len(b)):
	b[i] = float(b[i])

c = dict(zip([a],[b]))
print(c)

이유가 뭔고 하니 ... zip(a,b)가 맞는표현인 것을 검색을 통해 알아냈다
a 와 b는 이미 list이니 여기에 '[]'를 표현하는것이 문법적 오류로 인식된것이다.
아래는 검색을 통해 참고한 예제이다

name = ['a', 'b'] value = [1, 2] 
for n, v in zip(name, value):
print(n, v)

출처: https://horensic.tistory.com/78 [돌석사 연구 노트]

따라서 최종 적으로 답이된 것은 이러하다. map함수를 활용해 for 반복문을 없애버렸고
새로이 변수로 할당하기 보다는 그냥 print시켜버렸다

a = input().split()
b = list(map(float, input().split()))
print(zip(a,b))
  • dictionary의 key 순서 참고용 자료

아래와 같이 3.5이하의 버전에서는 순서를 유지하기 위해서
collections 모듈의 OrderedDict를 사용해야한다고한다.

조건문 참 거짓 값 할당

보통 input 되는값을 그대로 조건식에 넣어 이렇게 까지 생각을 안했지만
아래와 같이 true false로 지정되는 다양한 개념이 있다는것을 계속 숙지해야할 것 같다.

while 반복문 활용

아래는 while 반복문의 기본 형태이다.
조건문이 거짓이 될때 까지 계속 반복되니(왜이렇게 계속 까먹을까) false가 될 조건을 잘 설정해야한다.

while의 반복문 특성상 반복횟수가 정해져 있지 않을때 사용하면 유용하며
이말은 random과 잘 어울린다는 말 같다.
예제도 그렇게 쓰인게 보인다.
아래는 예제이다

import random

print(random.random())

print(random.randint(1,6))

아래는 i 가 3이 되면 프린트가 중단되는 코드이다.

i = 0
while i != 3:
    i = random.randint(1,6)
    print(i)

6나올때까지 계속 무분별한 숫자가 나오는 코드이다.

dice = [1,2,3,4,5,6]
while i != 6:
    i = random.choice(dice)
    print(i)

아래 예제는 좀 고생을 했다 .. 뭐랄까
내가 생각했을때는 더 간단한 방법이 있을 것 같다고 생각했는데 ..
아래는 문제이다.

start, stop = map(int, input().split())

i = start

while True:
# 여기를 채우세요.
        print(i, end = ' ')
        i += 1

아래는 풀이인데 .. 뭔가 처음 시도를 했을 때 i +=1 라인을 작성하지 않아
프로그램 진행이 되지 않았는데 힌트를 보니 i += 1 을 작성하라고 했다..
작성한 요지는 무엇인고 하니.. continue 로 인해 제일하단의 i += 1까지 코드가 진행되지 않고
넘어 가버린다는 것이다.
그래서 상단의 i+=1 을 기입해서 그것을 방지하는 것 같다..
어렵다

start, stop = map(int, input().split())

i = start

while True:
    if i % 10 == 3: #작성본
        i+=1
        continue
    if i > stop: #작성본
        break
        print(i, end = ' ')
        i += 1
profile
알고리즘 풀이를 담은 블로그입니다.

0개의 댓글