개발/개발일지(국비지원)

2022년 11월 28일 월요일(조건문,반복문 문제)

후누피 2022. 11. 28. 18:15
728x90

문제1

isdigit(), isupper(),islower() 을 사용해서

숫자인지,대문자인지,소문자인지 조건문을걸어서

숫자라면 입력값에 +20 을 더해줘서 출력하도록 print에 코딩했다.

 

25-26행

ch.isupper()를 통해 대문자라면

ch.lower()를 통해서 소문자로 바꿔주도록 코딩한다

 

27-28행

ch.islower()를 통해 소문자라면

ch.upper()로 대문자로 변경 후 출력하도록 해줬다.

 

문제2

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를 통해

몇번 시도했는지 출력해주고 종료된다.

728x90