같이푸는 Python

드디어 4일차. 내일이면 비대면 강의는 끝이 난다. 오늘은
같이푸는 Python 강의 인데, python 기본 문법이라던가, 간단한 알고리즘을 배울 것 같다.

가장 처음 소개해주는건

Input인데, 숫자를 받아주고, int형으로 변환시키는 코드를 배웠다.

input() 함수 정리.

  • 사용자의 입력을 받는다.

  • 문자열로 취급한다.

  • 사용자의 입력을 반환.
  • 입력은 엔터가 입력될 때 엔터 전까지를 모두 받는다.
    input("문자열") 은 사용자로부터 입력을 받을 때 보여줄 메시지를 입력하면 됩니다.
    예를 들어 숫자를 입력해달라고 하려면
 input("숫자를 입력해주세요 : ")
    라고 작성하면 됩니다.

출처: https://blockdmask.tistory.com/462 [개발자 지망생]

여기서 주의 할 점은 input은 입력을 문자열로 받기 때문에, 숫자와 같은 경우 int형으로 변환을 해줘야 한다

수학점수 = input(“점수를 입력 : “)
정수형_수학점수 = int(수학점수) 

이런식으로! 주의할 것

List

리스트의 모든 숫자 더하기

Print ( sum (list))

이렇게 해줘도 되고

Add = sum(list)
Print (add)

이런식으로 더하는 변수를 하나 생성해 주고, 그 변수를 출력하는 방법도 있다.

강의를 듣다 이중리스트,삼중리스트의 인덱싱이 헷갈려서 찾아보았던 것을 공유한다.

이번에는 다음 예처럼 리스트 a를 숫자 1, 2, 3과

또 다른 리스트인 ['a', 'b', 'c']를 포함하도록 만들어 보자.
a = [1, 2, 3, ['a', 'b', 'c']]
다음 예를 따라 해 보자.

a[0]
1
a[-1]
['a', 'b', 'c']
a[3]
['a', 'b', 'c']

예상한 대로 a[-1]은 마지막 요솟값 ['a', 'b', 'c']를 나타낸다. a[3]은 리스트 a의 네 번째 요소를 나타내기 때문에 마지막 요소를 나타내는 a[-1]과 동일한 결괏값을 보여 준다.
그렇다면 여기에서 리스트 a에 포함된 ['a', 'b', 'c'] 리스트에서 'a' 값을 인덱싱을 사용해 끄집어낼 수 있는 방법은 없을까? 다음 예를 보자.

a[-1][0]
'a'

위와 같이 하면 'a'를 끄집어낼 수 있다. a[-1]이 ['a', 'b', 'c'] 리스트라는 것은 이미 말했다. 바로 이 리스트에서 첫 번째 요소를 불러오기 위해 [0]을 붙여 준 것이다.
다음 예도 마찬가지 경우이므로 어렵지 않게 이해될 것이다.

a[-1][1]
'b'
a[-1][2]
'c'

[삼중 리스트에서 인덱싱하기]
조금 복잡하지만 다음 예를 따라 해 보자.

a = [1, 2, ['a', 'b', ['Life', 'is']]]

리스트 a 안에 ['a', 'b', ['Life', 'is']] 리스트가 포함되어 있고,
그 리스트 안에 다시 ['Life', 'is'] 리스트가 포함되어 있다. 삼중 구조의 리스트이다.
이 경우 'Life' 문자열만 끄집어내려면 다음과 같이 해야 한다.

a[2][2][0]
'Life'

위 예는 리스트 a의 세 번째 요소인 리스트 ['a', 'b', ['Life', 'is']]에서
세 번째 요소인 리스트 ['Life', 'is']의 첫 번째 요소를 나타낸다.
이렇듯 리스트를 삼중으로 중첩해서 쓰면 혼란스럽기 때문에 자주 사용하지는 않지만 알아두는 것이 좋다.

또한

Append,insert,del,reverse,index 함수 등 많은 함수들은 더 정확하게
https://wikidocs.net/14
여기서 공부해 보았는데, 슬라이싱까지 리스트 관련 함수들을 괜찮게 공부한 것 같다. 참고하면 좋을 듯.

Dictionary

만드는법

Menu = {“짜장면” : 4000,”짬뽕”:3000}

짜장면 -> key
4000 -> value 는 한쌍! ,로 구분

추가방법

Dictionary에 값을 추가하고 싶다면

Menu [“냉면”] = 6000 

이런식으로 키와 벨류값을 = 으로 나타내주면 된다.

출력방법

print(menu[“냉면”]) 

처럼, 키값을 찾아주면 된다. 그러면 냉면에 해당하는 value값을 출력해준다.

print(menu["짜장"],menu["짬뽕"])

두개를 찾고싶다면 이런식으로.

수정하기

menu[“냉면”] = 8000

이런식으로 바꿔주면 된다.

삭제하기

Del menu[“key”] 이런식으로 dictionary에선 키값으로 거의 모든 것을 해결하는 것 같다.

조건문

if가 필요없는 비교연산자부터 배워보았다.

myGrade = 10
yourGrade = 15

print(myGrade == yourGrade)

로 출력하면 False가 나오게 된다.
!=를 사용해서

print(myGrade != yourGrade)

로 쓴다면 True가 출력!

if문

If 문법은 조금 특이하다.

If 조건문:
Tap.   실행할 코드

여기서 탭은 4칸을 띄어주거나 , 탭을 누르는 것을 말하고, if 뒤에 꼭 한칸을 띄어쓰기 해줘야한다.

If 조건문:
    실행내용
Elif:
    실행내용
Else :
    실행내용

list와 if

아까 만든 food 리스트에, 내가원하는게 있는지 찾을려면

If food in orders:
    실행내용
Else :
    실행내용

Dictionary도 위 문법과 똑같다.
다만 출력 시 value 값을 원하면 menu[food] 이런식으로 입력.

반복문

while

while문의 로직은 이와 같다. 참이면 코드가 실행되고, 거짓이면 그 밑에있는 문을 실행하게 된다.

While True:
     print(“True”)

이런식으로 놓으면 계속 무한반복이 되게 된다.
무한반복에서 빠져나올려면 ctrl+c 버튼을 누르면 된다.

탈출하기

반복에서 탈출하려면 , break를 쓰곤 한다.
보통 if문이랑 같이 사용을 하게된다. 예를들어

I=0
While True:
	print(i)
	i++


if i>=3:
	print(“if문 동작”)
	break

print(“반복문 종료!”)

이런식으로 코드를 짠다면 ,
0
1
2
if문 동작
반복문 종료! 가 되게 된다.
이유는 i에 2가 들어갔을때, 2를 출력해주고 i++로 인해 i가 3이되게 되는데,
이때 조건문에서 '3과 같거나 크다' 조건에 걸리기 때문에, 그 밑에 출력문을 실행해주고 브레이크에 걸려 while문을 탈출하게 되는 것이다.

for문

문법은

For 변수 in 시퀀스:
	실행코드

이다. 시퀀스도 많이 사용하지만

range를 보통 이용하는데

For x in range(시작,종료,스텝)

이런식으로 생각하면 된다. 시작과 스텝은 생략가능.

스텝은 -만큼 증가이기 때문에, 2를 넣어준다면, 2씩 증가해서 나오게 된다.
-2를 넣어준다면 2씩 줄어든다.

코드 풀어보기

떨어지는 숫자

숫자를 입력받고, 1이 될때까지 1씩 감소하면서 모든 숫자를 출력해주는 프로그램.
바로 풀어보았다.

x = int(input("숫자를 입력해주셈"))

while x>0:
print(x)
x = x-1

아맞다. 파이썬에는 검색해보니 ++ —와 같은 증감연산자가 없다고한다…ㅠㅠ
X— 로 했었는데 안되는 바람에 찾아보았다… 잘 찾아본 것 같다!

줄바꿔 출력하기

다음 문제는 숫자를 입력받았을때, 한줄 씩 띄어쓰며 출력해주고,
10단위에서 줄바꿈을 해주는 문제이다.

풀이 ——

x = int(input("숫자를 입력해주세요 : "))

for i in range(1,x+1) :
print(i,end=" ")
if (i%10 == 0):
print("")

랜덤로또숫자 생성기

파이썬 랜덤모듈이 기억이 안나서 찾아보았다.

우선 import random은 필수.

https://www.daleseo.com/python-random/

거의모든 랜덤모듈 사용법이 나와있다. 참고!

.randint, .randrange(시작,끝,스텝),.choice를 많이 쓸 것 같다.

본론으로 들어가서, 몇개의 로또를 살건지 입력받고,
랜덤으로 1부터 45까지의 숫자중 6개를 뽑아준다.
그리고 로또의 갯수만큼 반복시켜서 출력시켜주는데, 로또번호는 오름차순으로 정리해서 출력해주는 프로그램이다.

풀이 —

import random

lotto = int(input("몇 개 사실래요?"))

for i in range(1,lotto+1):
lotto_num = random.sample(range(1,46),6)
lotto_num.sort()
print(lotto_num)

오늘의 TIL 끝!
비록 진짜 간단한 알고리즘 들이긴 하지만 ( 알고리즘 이라고 하기도 뭐한가..? ) 강의를 들으며 간만에 로직을 생각하고 풀수있는 강의다 보니까 시간가는 줄 모르고 기본부터 공부했던 것 같다. 혼자 신나서 다른 동기들도 잘 풀 수 있도록, 나 또한 다른 동기들의 코드를 보며 배울 수 있도록 Q&A 답변을 엄청 열심히도 달았다.. 뭔가 근데 이 활동을 하면서 좀더 기본을 다잡고 문법을 많이 찾아보다 보니까 실력이 많이 는 기분이 들었다. 강의해주신 코드라이언 님께 감사드리며
내일이면 비대면 강의는 끝! 마지막까지 힘내자 :) 파이팅

profile
TIL 기록

0개의 댓글