반응형


저는 파이썬을 배우고 c언어를 익히려고 합니다!!
그런데 생각보다 c언어가 코드를 작성하기 더 어렵고, 헷갈리더라고요..
약간 파이썬은 직관적으로 해석하기 용이했는데, c언어는 앞 뒤로 왔다갔다해야해서 직관적이지 않은 것 같아요.
그래서 오늘은 반복문을 활용할 때 어떤 차이점이 있는지 생각해보려고 합니다.



아래는 python에서 for문을 활용하여 구구단 코드를 작성한 것 입니다.

for dan in range(1,10):
    print("%d단을 출력합니다." %dan)
    for i in range(1,10):
        print('%d X %d = %d' %(dan,i,dan*i))
 
 
파이썬에서 for문은 범위 안에 1부터 10전까지 (1~9 동안)
1단을 출력하고 그 루프 안에서 1 x 1 = 1, 1 x 2 = 2, 1 x 3 = 3 ... 으로 출력이 되고,
아래의 for문이 끝나면 dan의 range 안에 있는 1 다음인 2를 출력하게 됩니다.
 
 
다음은 c언어 에서의 for문을 활용한 구구단 코드입니다. 
#include <stdio.h>

int main(void)

for (int i = 2; i <= 9; i++)
{
printf("%d단 계산\n", i);
for (int j = 1; j <= 9; j++)
{
printf("%d x %d = %d\n", i, j, i * j);
}
}
return 0;
}

c언어에서는 for(선언, 조건, 증감)을 표시하는데, 이때 단을 먼저 출력하고
이후, i + 1이 이루어진 후 아래 for 문으로 내려가 j가 10이 될 때까지 단을 출력하고
이 for 문이 끝나면 위로 올라가 다음 단을 출력합니다.

실제로 코드 길이는 거의 비슷하지만, c언어에서는 시작과 조건 그리고 끝이 확실하게 짜여져있는 것 같아요.
그래서 더 자유롭게 코드를 짤 수 있을 것 같네요!

반응형
반응형


다른 블로그들은 연산자를 선택하여 계산을 하는 계산기가 거의 대부분이더라고요!
그래서 저는 나누기 곱하기 더하기 빼기가 섞인 연산을 할 수 있는 코드 작성을 해보려고 합니다!!

 

파이썬 백준 입력 조건 이해하기 / 사칙연산, 계산기

오늘은 백준에서 문제를 풀고 나름대로 코드를 작성해서 입력을 했는데도.. 계속 런타임에러나 컴파일 에러가 나오는 분들에게 도움이 되고자!! 제가 이해한 내용을 포스팅합니다~ 먼저, 가장

irunstudy.tistory.com

 

문제 : 사용자에게 입력받은 사칙연산하는 계산기를 만드시오.

 

입력 : cal1 = input() # "5*7+10/2-2"



먼저, 문제에서 사용자에게 입력받은 값의 type은 문자열로 받기에 이를 이해해야합니다.
잘 살펴보면 저희는 숫자를 가지고 규칙이 있는 코드를 작성할 수 없기에 +,-,*,/를 기준으로 문자열을 이용해야하는 것을 알 수 있습니다! 만약 자릿수가 다르게 입력되어도 코드가 실행되어야하기에 이를 고려해주어야합니다.

cal1 = cal1.replace('+',' + ').replace('-',' - ').replace('*',' * ').replace('/',' / ')
cal1 = cal1.split(' ')
cal1_list = []


저는 연산자를 포함해서 모든 값을 리스트에 넣고 싶었습니다. 그럴려면 각 연산자를 기준으로 일일이 다 나누어주는 방법과 특정 문자 또는 공백을 연산자 앞뒤에 넣어 스플릿함수를 사용하면 될 것 같았습니다!
그래서 각 연산자 앞뒤로 공백을 넣어주고, 이후 이를 공백 기준으로 잘라서 리스트 형태로 cal1에 저장했습니다.
이후로 고려해야 할 것은 곱하기 나누기를 먼저한 이후 더하기 빼기를 계산해야하므로 곱하기 나누기 앞뒤의 숫자를 먼저 계산해주고! 마지막 자리에 넣어주고 더하기 빼기를 다른 리스트를 생성해서 연산자와 더해줍니다!!

"5 * 7 + 10 / 2 - 2" 에서 곱하기를 한 후
"35 + 10 / 2 - 2"에서 나누기를 계산하고
"35 + 5 - 2"로 계산이 되고 이후 차례로 계산하는 코드를 작성할 것 입니다.

 

   for i in range(0,len(cal1)):
        if cal1[i] == '*':
            val = float(cal1[i-1])*float(cal1[i+1])
            del cal1[i+1]
            cal1.insert(i+1,val)

        elif cal1[i] == '/':
            val = float(cal1[i-1])/float(cal1[i+1])
            del cal1[i+1]
            cal1.insert(i+1,val)

        elif cal1[i] == '+':
            cal1_list.append(float(cal1[i-1]))
            cal1_list.append(cal1[i])

        elif cal1[i] == '-':
            cal1_list.append(float(cal1[i-1]))
            cal1_list.append(cal1[i])
   
    cal1_list.append(float(cal1[len(cal1)-1]))
 
이렇게 하면 사실 중간중간 cal1의 리스트에는 남아 있는 데이터가 있습니다. 하지만, 계속 list index가 뒤로 밀려서 계산이 이루어지기 때문에 중복값이 나오지 않고 계산이 되는 것 입니다. 또한 중복 계산되지 않도록 cal1_list를 생성하여 여기에 추가를 합니다.

 


    for i in range(0,len(cal1_list)):
        if cal1_list[i] == '+':
            val = cal1_list[i-1] + cal1_list[i+1]
            del cal1_list[i+1]
            cal1_list.insert(i+1,val)

        elif cal1_list[i] == '-':
            val = cal1_list[i-1] - cal1_list[i+1]
            del cal1_list[i+1]
            cal1_list.insert(i+1,val)
       
    print(cal1_list[len(cal1_list)-1])


마지막으로 cal1_list에 있는 더하기 빼기를 계산해주면 사칙연산 계산기 코드 작성 완료!!

반응형
반응형

오늘은 백준에서 문제를 풀고 나름대로 코드를 작성해서 입력을 했는데도.. 

계속 런타임에러나 컴파일 에러가 나오는 분들에게 도움이 되고자!!

제가 이해한 내용을 포스팅합니다~

 

 

먼저, 가장 기본 문제 중 1000번을 가지고 와보았습니다.

 

 

 

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력 : 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

저는 이 부분을 생각해보지 않고 마음대로 

 
A = 5
B = 2
print(A+B)

처음에 이런 식으로 코드를 작성했었습니다..!

이렇게 코드를 작성하면 컴퓨터 입장에서는 입력칸에 주어진 조건대로 두 정수 A와 B를 입력하는데, 이를 받지 않고

print()를 작성해버리니 계속 에러가 뜰 수 밖에 없었던 것이죠.

 

그래서 입력 부분의 A와 B를 각각 받아 변수에 저장하기 위해서 다음과 같이 코드를 작성해주었습니다. 

 
a,b = map(int,input().split())

 

이렇게 작성해주면 입력 받은 값을 공백을 기준으로 앞과 뒤를 나누어주고 이를 정수형(int)로 바꾸어 변수를
 
a와 b에 저장할 수 있게 됩니다! 
 
# 참고
 
map(,)함수는 뒤의 값을 앞의 자료형으로 바꾸어줍니다. (리스트 안에 있는 모든 값을 특정 자료형으로 바꿀 때 사용됩니다.)
input()은 사용자에게 값을 입력받을 때 사용하는 함수입니다.
split()은 ()안의 특정 값으로 (',')일 때는 ,를 기준으로 문자열을 나누어(slicing) 리스트 형태로 저장합니다.
 
 

이를 알게 된 이후로  10869번 사칙연산을 풀어봤어요!
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 
 
입력 : 두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

입력을 고려해서 아래와 같이 코드를 작성했더니 잘 출력이 되었습니다.

A,B=map(int,input().split())
print(A+B)
print(A-B)
print(A*B)
print(A//B)
print(A%B)
파이썬에서 사칙연산
더하기 : +
빼기 : -
곱하기 : *
몫 : //
나머지 : %
나누기 : /
 
다음 포스팅에서는 실제 사칙연산 함수의 코드를 작성해볼게요!
반응형
반응형

오늘은 VSCode 다운로드를 하려고 합니다! VSCode는 코딩을 할 때 여러가지 편리한 기능을 제공해주는데요.
검정 바탕에 흰 영어 글씨만 써 있으면 눈으로 읽기가 쉽지 않죠!?
이 부분을

class AttackUnit(Unit):
    def __init__(self, name, hp, speed, damage):
        Unit.__init__(self, name, hp, speed)
        self.damage = damage
       
    def attack(self, location):
        print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]"\
            .format(self.name, location, self.damage))
   
    def damaged(self, damage):
        print("{0} : {1} 데미지를 입었습니다.".format(self.name, damage))
        self.hp -= damage
        print("{0} : 현재 체력은 {1} 입니다.".format(self.name, self.hp))
        if self.hp <= 0:
            print("{0} : 파괴되었습니다.".format(self.name))
이러한 형태로 눈에 잘 띄게 도와줍니다! 
#출처 유튜브 나도코딩의 코딩을 따라하며 작성한 코드입니다!
또, 디버깅이라는 옵션으로 내가 어떤 부분에서 어떤 오류가 생기는지 알 수 있습니다!
특히 코딩은 컴퓨터가 이해할 수 있도록 작성해야하는데 사람이 작성하다보면 분명 논리적인 오류가 발생하곤 하는데요. 그때 이 옵션의 효과가 강력합니다!!
 
VSCode 설치 과정
 

https://code.visualstudio.com/download 사이트에 접속합니다.

자신의 운영체제에 맞는 것을 눌러 다운로드를 진행합니다!



설치가 완료되면 파일을 열고 실행합니다.
이용약관에 동의한 후에~~



파일을 설치할 위치를 선택한 후 다음을 눌러 설치를 진행합니다!



이 설치창에서 PATH에 추가를 꼭 해주시는게 좋습니다. 누르지 않으면 다른 위치에서 python을 실행할 수 없습니다. 나중에 PATH를 추가하고 설정해주려면 처음 코딩을 하는 분들은 정말 어렵거든요..ㅠㅠ 말이 이해가 안되서..저도 처음에 그냥 했다가 3~4시간 동안 이거 관련해서 계속 찾아봤어요!!




설치 준비가 완료되면 설치를 진행합니다.



이렇게 설치를 완료할 수 있습니다.!



이후 Anaconda Prompt를 실행하여 python을 입력해 위에 두 줄 같이 실행이 된다면 어제 설치했던 Anaconda가 정상적으로 설치된 것 입니다!



VSCode를 실행하여 'Hello, world'를 print()를 호출하여 실행해봅시다!
헷갈리실 수 있는 VSCode의 기능..! 오른쪽 하단에 보이는 Plain Text는 현재 특정 언어로 지정된 것이 아닙니다.

파이썬으로 사용하시려면 Plain Text를 눌러 Python으로 변경하거나 이 파일을 저장할 때 아래 사진과 같이 Python 파일 형식으로 저장해야 정상적으로 실행됩니다!!!!!!

 

이후 정상적으로 Hello, world가 출력된다면 정상적으로 VSCode가 설치된 것입니다.!!!

반응형

+ Recent posts