본문 바로가기

파이썬 프로그래밍/파이썬 심화

[Python] 시프트연산 예제1-1

[Python] 시프트연산 예제1-1

문자열을 입력하고 문자열 안에 포함된 'x'의 개수만큼의 숫자를 시프트 연산하여라


드래그용 코드

print bin(0b1111 << raw_input("Enter : ").count('x'))



가독성을 높이기 위한 코드




코드 설명

print bin(0b1111 << raw_input("Enter : ").count('x'))


    print: 출력하겠다


    bin(0b111 << #): 시프트연산자

         #: raw_input("Enter : "): 문자열 입력값


    .count('x')): x의 갯수를 count를 사용하여 세겠다

          여기서 . 은 시프트 연산자를 카운트 하겠다는 뜻임


종합

즉 출력을 하겠는데 그안을 들여다 보니 

     시프트 연산자(bin1111 << #)를

     카운트 하겠다(.count)


시프트 연산자란?

-시프트 연산자는 데이터를 비트 단위로 이동시켜 값을 증감시키는 연산자











예제를 보면 쉽게 이해할 수있다


2진수로 예를 들겠다. 101011을 <<2 시프트연산 해주니 값이 뒤로 00이 더붙었다

반대로 >>해주니 2영역을 지워서 101011->1010으로 11이 삭제된 것을 알 수 있다




[Python] 시프트연산 예제1-2

사용자에게 입력받은 문자열의 'p'갯수가 짝수이면

문자열 전체를 대문자로 출력

홀수이면 문자열 전체를 소문자로 출력


드래그용 코드

while True:

a=raw_input('go')

chk=a.count('p')


print('chk= %d' %chk)

if chk % 2 == 0:

print(a.upper())

else:

print(a.lower())

break



가독성을 위한 코드




















코드 설명

while True:

a=raw_input('Enter :')

chk=a.count('p')


print('chk= %d' %chk)

if chk % 2 == 0:

print(a.upper())

else:

print(a.lower())

break


while True: 무한루프 이용하려 한다. 무한루프를 이용해서 입력과 출력을 해야하는 번거로움을 없애려고 한다. 궁금하면 이문장과 break를 지워보고 실행해봅시다


a=raw_input('Enter :') raw_input은 문자형으로 입력을 받겠다.

     즉. 문자형으로 입력을 받은 값을 a에 넣어주겠다


chk=a.count('p') 입력값 a안에 있는 'p'의 개수를 카운트하여 chk라는 곳으로 보내준다


print('chk= %d' %chk) 카운트가 잘 넘어왔는지 체크하기 위해서 출력해준다

     chk로 chk의 값이 잘 넘어왔는지 출력을 해본다

          -오류가 나서 오류를 찾기 위해 넣은 구문


if chk % 2 == 0:  조건문. chk(p의개수)를 2로 나누어 %(나눈값의 나머지)가 0이 될경우

                            즉. p의 개수를 나누어 나머지가 0이 나올경우

print(a.upper()) 참이면 대문자(짝수니까 2로 나눠서 0으로 떨어지겠죠?)

else: 거짓이면

print(a.lower()) 소문자

break 브레이크 문을 빼주면 실행하고 다시 입력을 해야하기 때문에 테스트를 많이                    하고싶으면 뺴도 좋다



간편한 한줄코딩












코드 설명

temp라는 방에 raw_input입력값을 넣어준다


출력을 하는데  temp를 대문자로 한다.

조건은 temp의 p의 개수를 카운트해서 (p / 2 나머지가 0일때 실행)

아닐경우는 소문자로 출력


위에 코드를 보면 충분히 이해할 수 있기 때문에 자세한 설명은 안했습니다.