키리스트와 값 리스트를 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))
아래와 같이 3.5이하의 버전에서는 순서를 유지하기 위해서
collections 모듈의 OrderedDict를 사용해야한다고한다.
보통 input 되는값을 그대로 조건식에 넣어 이렇게 까지 생각을 안했지만
아래와 같이 true false로 지정되는 다양한 개념이 있다는것을 계속 숙지해야할 것 같다.
아래는 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