2022년 11월 28일 월요일(조건문,반복문 문제)
isdigit(), isupper(),islower() 을 사용해서
숫자인지,대문자인지,소문자인지 조건문을걸어서
숫자라면 입력값에 +20 을 더해줘서 출력하도록 print에 코딩했다.
25-26행
ch.isupper()를 통해 대문자라면
ch.lower()를 통해서 소문자로 바꿔주도록 코딩한다
27-28행
ch.islower()를 통해 소문자라면
ch.upper()로 대문자로 변경 후 출력하도록 해줬다.
1부터 10까지 숫자를 한단계씩 추가되어
소괄호 안에 추가되고 마지막에 총 합을 나오는 코딩을 진행하였다.
결과를 담아두기 위해 변수 hap=0을 선언해주고
39-40행
반복문으로 열리는 소괄호 ' ( ' 를 출력하기위해 코딩하였다.
41-42행
숫자를 찍어주기위한 반복문이다.
j는 1부터 i+1만큼 반복될것이다 결국 1~10까지 반복된다.
43-44행
반복문을 진행하면서
i와 j가 같은경우는
다음구간으로 넘어가야한다.
그러니, i와 j가 같지않다면
현재구간이 끝나지않은것이므로, +를 출력하게해준다.
45-47행
구간요소들(1,2,3,,,)들을 hap에 넣어주고
닫히는 소괄호를 출력, 만약 i==10이 되면 끝나는 소괄호가 닫힌것이기때문에
' ) ' 닫히는 소괄호를 출력하고
마지막으로 데이터들이 저장된 hap을 출력하면서 코딩을 마무리한다.
자연수를 입력받을 num
자리수의 합을 저장해둘 hap 을 선언하고,
while문에 조건을 주기위해 tmp에 num을 저장했다.
while (tmp >0) tmp가 0이되면 반복문이 종료되도록 설정했다.
hap += tmp % 10
만약 입력값이 54321 이라고 가정해준다.
1번째
54321을 10으로 나눈 나머지는 1
나머지를 hap에 저장해둔다
tmp //=10 을통해
54321를 10으로나눈 몫 5432가while문으로올라간다.
2번째
5432는 0보다 크기때문에 반복문은 종료되지않고 실행된다.
tmp//10
5432를 10으로 나눈 나머지
2
현재 hap은 1+2
5432를 10으로 나눈 몫 543이 while문으로 올라간다
계속반복되며
마지막
hap+=tmp%10
hap 에는 5+4+3+2+1
tmp//10 을 통해
tmp는 0이되어
while문은 종료가된다
마지막 print(num,"자리수의 합",hap)
54321 자리수의 합 15 가 출력이된다.
컴프리헨션 방식으로
aa 를 리스트로 0~99까지해주고,
짝수100개를 저장해야하기때문에
앞에 x*2를 해주었다.
bb 리스트는
역순으로 99부터 출력해줘야하기때문에
99부터 0까지 -1(역순)으로 설정해주었다
82-83행
aa리스트에는 현재 짝수데이터만저장되어있으니
반복문을통해
aa[0]=0, aa[1]=2, aa[2]=4 ,,,a[9]=18
이 출력되도록 반복문을 설정했다.
88행-89행
len(bb)-1 : 100-1 -> 99부터
len(bb)-11 : 100-11 ->90까지
-1 역순으로!
반복문을통해
bb[99]=0 , bb[98] = 2 ,,,,,bb[90] =18
가 결과로 출력된다.
구간을 나누어서 진행되도록
역삼각형, 정삼각형 출력하는 부분을 두부분으로 나누었다.
먼저 역삼각형. 0부터 입력값//2 +1
공백은 0,1,2개 순
공백은 i로 출력시키면 해결된다.
* 은 5,3,1개 순으로 출력되어야하기때문에
*은 입력값-(i*2)를 해주면
입력값이 5일때
5-(0*2) =5
5-(1*2)=3
5-(2*2)=1
역삼각형이 출력된다.
111행-113행
다소 복잡해보이지만
공백과 *의 갯수를 파악해서
식을세워 실행하였다.
123행-126행
country = {}
현재 입력된 나라가없기 때문에 담아둘 객체를 생성한다.
종료를 입력해야 종료가되기때문에
while 반복문을통해 계속 반복문이 실행된다.
indata는 입력값으로 country의 key값이 될것이다.
즉 나라이름이다.
127-128행
입력값이 country객체에 저장된 데이터라면
입력값(키값)에 맞는 밸유값(수도)를 출력해준다.
130-131행
종료가 입력되면 반복문이 종료된다.
132행-137행
등록된 나라가 없는경우이다.
수도를 등록할 여부를 묻는 입력값 y/n을 입력받고
y가 입력되면
f에 입력된 수도이름을 입력하고
country[indata(입력시 존재하지않았던 나라이름)] = f(입력된 수도이름)
즉 데이터에없는 나라와 나라에맞는 수도이름을
country객체에 저장해준다.
그리고 종료가 입력되면
139-141행
반복문이 종료되면서
country에 등록된
키값과 키값에맞는 밸유값
데이터들이 출력된다
151-157행
임의의 수를 저장하기위해 import random을 사용한다.
중복되는 수가 생기지않도록
set1객체를 생성하고
while반복문을 사용한다.
4개의 수만 저장하기위해
set1의 길이가4보다 크게되면 종료되기때문에
0-9까지의 임의의수를 생성해
set1에는 4개의 임의의 수만 저장된다.
set1을 리스트로 수정후 list1에 저장한다.
cnt는 시도횟수를 저장하기위해 변수선언해준다.
158행-172행
number로 입력값을 받는다.
입력값을 입력할때마다
시도횟수를 늘려주기위해 cnt +=1을 실행한다.
strike와 ball 횟수를 저장하기위해 변수선언을해주었다.
입력값의 존재여부를 알기위해
list1.count(num) ==1
입력된 숫자가 존재한다면
아래의 if문이 실행된다
숫자가 존재하더라도 순서도 맞아야하기때문에
입력된 값의 인덱스와 시스템 숫자의 인덱스를 비교해,
맞다면 strike +=1
틀리다면 ball += 1을 실행한다.
정답을 맞출때까지 반복하다가
175행-180행
스트라이크가 4개가된다면
반복문을 빠져나오고
그렇지않다면
스트라이크와 볼갯수를 출력해주고
계속반복된다.
스트라이크가 4개가되어 반복문이 종료되면
cnt를 통해
몇번 시도했는지 출력해주고 종료된다.