print( )는 출력을 담당하는 함수이다.
문자열은 str, 정수는 int, 논리형은 bool(True/False)
X = 3이라는 코드의 뜻은 X라는 변수에 3이라는 값을 지정해준다는 뜻이다.
print("a : { }".format( ))에서 .format( )은 앞의 { }를 채워주는 함수이다.
다만 .format은 앞에서부터 순서대로 값을 채워준다.
Ex) a = 10
print("a:{a}".format(a))를 입력하면 a:10이라는 값이 출력된다.
Ex) a = 10
b = 20
print("a:{},b:{}".format(a,40,b))
a:10,b:40 와 같은 값이 출력된다.
=(이퀄)은 값을 넣어줄때 사용된다.
==은 수학에서의 =을 뜻한다.(같을때)
!= 은 같지않다는 것을 뜻한다.
사칙연산은 +, -, *, %이며 각각 더하기, 빼기, 곱하기, 나누기를 뜻한다.
<, >는 각각 미만과 초과를 뜻한다
<= , >= 는 각각 이하와 이상을 뜻한다.
and는 그리고, or은 또는 이라는 뜻으로 and가 들어가있으면 조건 중 하나라도 False면 False가 되지만 or은 하나만 True여도 True가 될 수 있다.
age = 60
if age >= 60 or age <= 19:
print("할인 대상입니다.)
else:
print("할인 대상이 아닙니다.)
할인 대상입니다.
age = 40
if age >= 20 and age <= 59:
print("할인 대상이 아닙니다.")
elif age >= 60 or age <= 19:
print("할인 대상입니다.")
할인 대상이 아닙니다.
if조건문
if 뒤에 붙을 수 있으며, elif는 여러 if문을 한 덩어리로 만들어준다.
age = 60
if age <= 19:
print("할인 대상입니다.")
elif age >= 60:
print("할인 대상입니다.")
elif age > 19 or age < 60:
print("할인 대상이 아닙니다.")
할인 대상입니다.
if 뒤에 붙을 수 있으며, else는 if의 모든 경우의 수가 실패했을때 작동한다.
age = 40
if age >= 60 or age <= 19:
print("할인 대상입니다.")
else:
print("할인 대상이 아닙니다.")
할인 대상이 아닙니다.
s = "안"+"녕"
i = 10 + 20
print(s)
print(i)
안녕
30
처럼 문자열에 +는 문자열을 합쳐준다.
다만
s = "안"+"녕"+10+20
print(s)
는 에러가 뜬다. 정수와 문자열은 계산될수 없다는 에러정보가 나온다.
안녕 1020을 출력하고 싶으면
s = "안"+"녕"+str(10)+str(20)
print(s)
라고 입력해야 안녕1020이 출력된다.
s = "안"
s = s + "녕"
print(s)
안녕 이 출력된다.
마찬가지로
s = "1"
s = s + "2"
s = s + "3"
s = s + "4"
print(s)
1234라는 값이 출력된다.
이 방법을 조금 더 활용하면
dan = 8
print("=={}단==".format(dan))
a = 1
print("{}{}={}".format(dan,a,dan1))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))
이와 같이 구구단에서도 사용할 수 있을거같다.
dan = 8
i = 1
if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1
if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1
if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1
if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1
라는 코드를
dan = 8
i = 1
while i <= 3:
print("{}{}={}".format(dan,i,dani))
i = i + 1
로 바꿀수 있다.
i = i +1 와 i += 1 은 같은 뜻이다.마찬가지로 i = i - 1과 i -= 1은 같다.
반복문의 3가지 구성요소 : 초기(값),(종료)조건,step(보폭(증가,감소값)과 방향(+,-)
i = 1
while i <= 5:
print(i)
i += 1
에서 i = 1은 초기(값)이고 while i <= 5는 (종료)조건, i += 1은 step(보폭)이다.
while dan <= 9: # 첫번째 반복문
i = 0
while i <= 8: # 두번째 반복문
i+=1
print("{}{}={}".format(dan,i,dani))
dan += 1
무한루프에 빠지지않게 멈추게 해주는 역할.
i = 1
while True:
print(i)
i += 1
이런 코드를 사용하면 while 반복문의 값이 계속해서 True이므로 무한대로 값이 나온다. 이런 현상을 막고자 break를 사용하는데
i = 1
while True:
if i == 10:
print(i)
break
i += 1
을 사용하면 i가 10일때 루프가 멈추므로 출력은 1~10까지만 된다.
skip해주는 역할.
i = 1
while i <= 10:
i += 1
if i == 3:
continue
print(i)
라는 코드를 작성하면 2부터 시작해서 11까지의 값이 출력된다. 하지만 이때 3은 생략된채로 나온다. continue는 이런 역할이다. 해당 값이 나오면 그 값은 생략한채로 while문으로 돌아가게 만드는 역할.
input은 사용자의 입력을 받아 출력할 수 있게 만들어주는 명령어. 하지만 그냥 넣었을때는 문자열로 취급하기때문에 정수로 쓰고싶다면 a = input() a = int(a)처럼 코드를 입력해줘야한다. 또는 a = input()을 입력한 후 계산하는 식에서 int(a)를 사용하여 정수로 바꿔줄수도 있다.
Ex) i = input()
print(5+int(i))
s = 0
i = 1
while i <= 5:
s += i
i += 1
print(s)
15
가 답이다.
첫번째로 s라는 변수를 추가할 생각을 못하고 두번째로 1+2~+5까지 식을 구현하지 못했다. 코드를 해석해보면 s=0이라는 값을 주고 i = 1이라는 값을 준 다음 i가 5가 될때까지 반복시킨다. i가 1이 되고 루프를 돌아서 2가 되는데 이때 s는 i값을 + 시키므로 1부터 5까지 i값이 증가하면서 루프를 돌면 s는 1+2+3+4+5가 되는 것이다. 그리고 print(s)로 1부터 5까지 더한 값을 출력시키는것이다.
메모장으로 식은 다 만들어놨지만 코드로 구현하지 못한것과 어떻게 응용해야하는지 아직 미숙한거 같다.
두번째 문제같은 경우는 위 문제와 원리는 비슷하다.
s = 0
i = 1
while i <= 100:
if i%2 == 0:
s += i
i += 1
print(s)
2550
라는 코드가 나온다. 이번엔 짝수의 합을 구하라고 했으니 i%2 == 0이라는 조건을 걸어 i값에서 2를 나누면 0이 나오는 수들을 찾고 s += i 로 i값들을 더해준다. 그러면 2+4+6+8~+100까지 될테니 이 값을 다 더하면 2550이라는 값이 나온다.
s = 0
i = 1
while i <= 100:
if i%2 == 0 and i%3 != 0:
s += i
i += 1
print(s)
1734
세번째 문제도 첫번째와 비슷하며, 이번엔 짝수이고 3의 배수가 아닌 수의 합을 구하라고 하였으니 if i%2 == 0으로 i값중 짝수를 찾게 만들고 i%3 !=0으로 3의 배수가 아닌 값을 찾게 만든다. 문제중 "짝수이고 3의 배수가 아닌 수" 라고 하였으니 두 조건 모두를 충족시켜야 하므로 and를 써서
if i%2 == 0 and i%3 != 0이라는 조건을 만들어준다.
나머지는 전 문제와 전전 문제처럼 계산된다. 따라서 답은 1734가 나온다.
dan = 1
while dan <= 9:
print("=={}단==".format(dan))
i = 1
while i <= 9:
print("{}{}={}".format(dan,i,dani))
i += 1
dan += 1
라는 코드가 나온다. while 반복문 안의 while 반복문은 안쪽 while 반복문이 끝나면 바깥 while문이 실행되므로 dani중 dan이 1이고 i가 1~9까지 반복된 다음 dan이 2로 증가하기 때문에 11 = 1 ~ 9*9=81까지 출력된다.
111=1
112=2
~
999= 729
dan = 1
while dan <= 9:
print("=={}단==".format(dan))
i = 1
while i <= 9:
j = 1
while j <= 9:
print("{}{}{}={}".format(dan,i,j,danij))
j += 1
i += 1
dan += 1
문제에 대한 코드는 이렇다.
전체적인 구성은 전 문제인 구구단을 출력할때와 비슷한데 뒤에 n이 더 추가된 형식이다. while dan과 while i는 전 문제와 동일하게 dan i를 구현한 것이고 이번 문제는 곱셈을 세 개의 숫자와 해야하므로 while j를 추가하여 dan i j로 구현하였다.
아직 한참 부족한거 같다는 생각이 든다. 예전부터 개념은 이해해도 응용력을 요구하는 문제들은 풀지 못해 일찍이 수학을 포기했었다. 지금도 응용면에서 애먹고 있지만 계속 복습을 해보면서 내가 못하는 곳을 숙달하겠다는 생각으로 공부를 진행해보겠다.