2016년 5월 17일 화요일

[Python] 시프트연산 예제

[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일때 실행)
아닐경우는 소문자로 출력

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

2016년 5월 16일 월요일

[Python] 입력받은 숫자의 구구단 출력하기

드래그용 코드

while True:
num1 = input("숫자를 입력하시오")
for i in range(1,10):
print num1, "X", i, "=", num1*i


가독성을 높이기 위한 코드








코드 설명

while True:
//반복문(while)을 사용하겠다. True는 무한루프이며 대문자 구별함

num1 = input("숫자를 입력하시오")
// 숫자를 입력하시오 라는 구문을 출력하여 사용자가 입력을 하면 input을 사용하여 num1이라는 공간에 넣는다

for i in range(1,10):
// for라는 반복문을 사용하여, 변수(변하는수) i안에다가  range(1,10)을 넣어주겠다
// range(1부터시작하여 10까지)
//즉 for문을 사용하여 1부터 10까지의 수를 i에다가 넣겠다

print num1, "X", i, "=", num1*i
//출력하겠다.
//곱셈하기위한식인 num1 "곱하기" 증가하는변수 i "는" 곱해야할 값

출력화면



계속 반복되는 문자가 싫으면 break 문을 넣어주면 한번만 실행함
@주의할점은 break의 위치이다break문이 for문 앞에 와버리면 for문을 한번 만 돌리고 멈추기 때문에 '3x1 = 3' 만 출력이 된다 for문을 아예 끝내버려야 하니 for문에 break문을 넣도록 한다