While 조건문 for 반복문 한글 해설 feat.0과 1의 이해
들어가기 전에 이전에 글도 파이썬 while 조건문이나 for 반복문에 대한 글이다
그런데 방식을 달리해봤다. 줄줄 적어진 언어를 한글로 풀어봤다.
파이썬 공부하면 할수록 이게 왜 컴퓨터언어인지 조금씩 이해가 간다
이거 정말로 한글을 쓰는 우리가 영어를 배우듯이 하나의 언어이다
문법이 있다. 그리고 그 안에 쓰는 단어가 있고, 형식을 이룬다
일반 언어와 다른 점은 불규칙성이 없다는 점이다. 예외도 없다.
언어는 시킨 그대로 뽑아내는 성능 좋은 기계일 뿐이다
그렇기에 더 똑똑한 우리가 정확히 명령을 해줘야 파이썬 언어를 사용해 이해해 줘야 하는 것이 목표이다
그런데 배우기조차도 쉽지가 않은 것이 사실이다
하..
그래서 이 방법도 써보는 것이다.
부디 도움이 되길 바라며
루프 수행 단어 입력, 입력 단어가 영문이나 숫자로만 구성되어 있으면 출력, 그렇지 않으면 출력하지 않는다 3 번의 출력이 있으면 종료
while을 시작하기 위해 우선은 while 옆에 가장 먼저 해야 할 것은 조건문이다. i가 3보다 작으면 그만하라고 명령을 내렸다.
while 옆에는 반드시 조건을 먼저 적어줘야 한다. 그 조건은 명령에 따라 다르다.
while 을 쓴다고 이 예제에선 정해져 있다. 그리고 조건은 3보다 같거나 작으면 계속되는 것이다
이렇게 조건문을 쓰면 이젠 3번의 출력이 완료된 후에 종료되었음을 선언이 가능하다
그리고 그 안에 word라는 변수명을 선언해 준다. 왜? 그래야지 그것을 판단할 수 있기 때문이다
판단하는 조건문은 그다음 조건문을 무엇을 쓸 것인지 고민해야 한다.
입력 단어가 영문이나 숫자로만 구성되어 있으면 출력 <- 이 문제에 집중해야 한다
isalnum 메서드를 사용해야 하는데..
만약 word 안에 들어있는 문구가 isalnum에 적합하지 않으면 건너뛰는 함수를 만들어준다.
그렇게 생각하면 if not 만약 그렇지 않으면~
만약 word에 들어있는 문자가 isalnum()에 해당하지 않으면 건너뛰어라라는 말을 해주는 것이다
그리고 word 안에 word 변수명을 넣고 프린트를 해주면 된다.
우리의 목적 자체가 3번 출력하는 것이기 때문에 마지막에 i+=1을 해주면 한 번 더 반복하게 된다.
반복을 3번 이상으로 바꾸고 싶으면 3을 4,5,6, 등등으로 바꾸면 된다.
왜 해도 해도 어려울까?
2~9단까지 출력하는 것이다
코드를 보면 쉽다.
우선은 2단부터 출력할 것 하나
2*1 그리고 2*2 이렇게 출력할 것 하나
그리고 이를 곱하는 수식. 이렇게 3개만 만들면 된다
먼저 아무 문자나 잡아서 2를 넣어주자
그리고 while을 10미만 일 때로 잘라보자. 이것만 그냥 돌리고 1씩 증가시키면 2부터 9까지 출력이 될 것이다
그리고 다른 변수 j의 조건문을 만들어준다. j가 10보다 적으면 계속 while 문안에 있는 것이다
그리고 그 출력값은 또 다른 k가 되는데 k의 초깃값은 설정해 줄 필요가 없이
i와 j의 곱셈이기 때문이다
그래서 출력값은 % 3d 그러니까 3자리를 확보한 상태에서 띄어쓰기를 한 칸 해준다
두 번째 while 안에 연산이 다 끝나면 첫 번째 while 값 안에서 3으로 바뀐 상태에서 안에서 while 문을 돌린다
마지막에 print() 넣어주면 한 칸 띄어서 3단이 출력이 된다
만약 이걸 빼면 옆으로 쭉 숫자가 나열된다.
이것도 마찬가지이다. 변수 4개를 선언해 줘야 하는데 그 이유는 어디에서 끝내야 할지 내가 정해야 하기 때문이다
만약에 위에 예제처럼 구구단이라고 정해주면 숫자를 입력해 줄 필요가 없지만 이건 @ 을 몇 번 입력해야 좋을지 알아야 하기 때문이다
i 값이 몇 번 입력해 줘야 하는지와 j 값을 몇 번 입력해 줘야 할지 여부를 내가 정해야 한다
조건문에 몇 번 입력해 줘야 할지 정해진다.
i는 행의 개념이고 j는 열의 개념이다
위의 내용과 완전히 동일하지만 틀린 점은 한 가지이다.
a+1이 첫 번째 while 밖에 있는 것이다. 그렇기 때문에 while이 무제한으로 흘러간다. b ==3에서 브레이크 걸려서
첫 번째 while 문으로 가면 거기에서 또 걸린다 그러면 또 돌아간다
컨테이너 자료형
range , reversed, flter m, map , zip()
for 변수 in iterable data:
else:
컨테이너 자료들의 개수가 있으면 그만큼 반복하는 것이다
함수들이 있다 range reversed 등등
이건 while문 응용이다
우선은 i를 0으로 선언하고, i가 어떤 문자열의 개수만큼 루프를 돌게 하는 것이다
그리고 프린트문은 문자열에 있는 문자를 출력하게 하는 것이다
len 함수와 string[i] 함수의 쓰임을 알아야 할 수 있는 것이다
이것은 for 반복문을 사용하면 위의 결과와 똑같다
for 변수 in 리스트(또는 튜플, 문자열):
이렇게 된다. 여기에선 x라는 변수를 쓰고 문자열, 튜플,리스트 중에서 문자열이 들어왔다
x 변수를 isupper 메서드를 써서 대문자로 만들어준다
그리고 문자열이 아니면 리스트나 튜플이 들어가도 된다
isupper 를 쓰는 이유는 판정을 위해서이다. isupper을 쓰면, 이게 대문자인지 소문자인지 판정이 가능하다
이건 위의 코드보다 더 간단하다. 우선 문자열을 하나 받아주고 이걸 전부 다 upper 메서드를 사용해서 키워주면 된다
위에 코드는 판정은 필요 없이 그냥 인쇄할 때 이걸 대문자로 모조리 변경시켜주는 것이다
이거 좀 어렵다. 우선 string 변수명을 만들어서, 여기에서 문자열을 받는다
그 후에 모음 과 자음을 받아줄 변수명을 또 만들어준다.
문제를 보면 '문자열'을 받아 '자음'과 '모음'을 구하는 것으로 총 3가지의 변수명이 필요함을 감각적으로 알아야 한다 ㅠㅠ
문자열을 받는 것과 자음의 숫자를 측정하기 위해 변수명을 하나 정하고
마지막으로 모음을 측정하기 위해 변수명을 정한다.. 이 3가지가 동시에 돼야 한다는 소리이다
그리고 원래는 for 변수 in 리스트(또는 튜플, 문자열):
이렇게 되는 곳에서 리스트 자체를 넣어주면, 리스트의 숫자만큼 for문을 반복해 준다
예를 들어서 위의 경우에도 string 안에 문자열이 vocabulary라고 입력해 주면, for 문안에 있는 반복문을 총 10번 시행해 준다
s 변수명에다가 string 변수명만큼 반복해 주는데, 우선 모음을 걸러준다.
모음이 아닌 것은 전부 자음이기 때문에 가능한 것이다
만약 분류 체계가 다양하다면, elif를 써서 더 분류를 해줘야 한다
숫자까지 분류해 주고 싶다면 elif를 써서 중간에 하나 넣어줘야 한다
이것도 마찬가지이다. string이라는 변수명을 만들어준다
그리고 거기다가 문자열을 받는다.
그 뒤에 신중해야 하는데 우선 이 문자열이 소문자인지 대문자인지 판별을 해야 한다
이때 쓰는 것이 바로 islower()이다
위에서 살펴봤듯이 isupper()는 이것이 대문자인지 소문자인지 판별하는 조건문이라 했다
그러면 islower()는 소문자인지 판별하는 것이다
1단계로 for 반복문으로 반복을 시켜준다
2단계로 if 조건문으로 어떤 조건에 딱 맞으면 어떤 행위를 반복시킨다.
여기서는 ch라는 변수가 들어오면 이것이 소문자이면 이걸 new_string에다가 대문자로 바꿔서 넣어주고,
소문자가 아니면(=대문자이면) 이걸 소문자로 바꿔주는 것이다
그래서 new_string이 완성되는 것이다.
이것도 마찬가지이다. 우선은 x라는 변수에다가 리스트에 있는 3개 문자를 넣어줬다.
문자도 3개, 반복도 3번하기 때문에 red blue white 차례대로 나온다
그리고 frd 안에도 4개의 문자열이 있기 때문에 총 4번 반복.
그리고 frd에 총 4번의 반복을 해서 총 4개의 문장이 차례대로 출력되는 것이다
frds는 변수이다.
여기서도 마찬가지이다. 우선은 가장 긴 단어를 찾아야 한다.
그리고 그 단어의 길이를 측정해야하겠다. 그래서 word 리스트 안에 있는 문자 리스트 가운데
첫 번째 문자를 넣어서 그 길이를 측정해줬다.
word_1 변수명을 만들어서 첫번째 문자를 넣어줬다
그리고 for 반복문에다가 word에 있는 두 번째 단어 먼저 넣어주었다. [첫번째 단어는 우선 지정해줬으므르]
크기를 비교할 땐 이렇게 해야 한다. 참고하자
그 뒤론 if 조건문 안에서 w 변수가 longest 안에 있는 첫 번째 문자와 비교해 준다
그리고 만약 변수 w가 기존에 비교한 것과 크면 word_1에 변수명을 넣어준다
여기에서 longest 안에 w의 길이도 넣어준다
만약 if 조건문이 성립하지 않으면? if문을 빠져나와서 다서 for 반복문으로 간다
끝나면 print가 되면서 일단락된다
답만 보면 되게 쉽다
주어진 문자 리스트를 하나씩 넣어주고, for 반복문을 통해서 하나씩 넣어준다
그 뒤에 if 조건문으로 만약 2로 나눠서 0이 되면 total이라는 변수명에 넣어준다
그리고 2로 나와서 0이 되는 값만 출력한다
이것이 짝수만 더한 합이다
도시 리스트를 주어준다. 그리고 번호를 출력해야 하기 때문에 i에다가 1씩 증가시켜주면서
1 DC 2 NY 이런식으로 넘버링을 해준다.
여기까지가 for 반복문의 역할이 끝난다. 이 다음은?
바로 나오는 if 조건문이 역할을 할 때이다
숫자입력을 받는다. 그리고 if 조건. 그러니까 이 숫자가 3과 동일하다? 그러면 맞다라고 판정
아니면 틀렸다고 판정!
튜플과 for문 이것도 형식은 동일하다
보면 그냥 끄덕일 정도?
for 변수 in 리스트(또는 튜플, 문자열): 라고 했다
그러면 튜플이나 set도 가능하다
그걸 보여주기위한 예제이다
난이도가 있진 않다
아.. 이래서 교집합이구나
1단계로 for 반복문으로 해준다. a set 안에 원소가 b보다 많으니까 가능한 코드이다
아니면 for문으로 아예 숫자를 지정해주는 것도 방법이다
그 뒤에 b set 안에 있는 문자가 x와 동일한지 동일하지 않은지 if 조건문으로 넣어주는 것이다
그러니까 for 반복문과 if 조건문을 모두 통과한 문자가 비로소 출력되는 것이다
인간의 언어로 교집합인 것이다
이것은 딕셔너리 형태이다
이렇게 해주면 key가 출력된다
밸류를 출력하려면?
아래와 같이하면 된다!