Integer
Float
Complex Numbers
String
Boolean
string과는 다르게 따옴표 사용하면 안된다.
정수뿐만 아니라 부동소수점 숫자 값도 가능하고 음수도 가능하다.
기본적인 사칙연산은 모두 가능하지만 주의할 점들이 몇 가지 있다.
파이썬에서 string 과 number를 같이 연산하려고 하면 에러가 뜬다.
``` num1 = int(input()) num2 = int(input()) print("더하기: " + (num1+num2)) 에러메세지 [TypeError: can only concatenate str (not "int") to str] ```
그러므로 자료형을 주의해가면서 사용해야한다.
파이썬은 기본적인 연산외에도 % += -+ *= /= 같은 연산 표현도 지원한다.
파이썬의 연산 순서는 1순위 (), 2순위 ** , 3순위 , /, %, 4순위 +와 - 이다.
print("Hello, " + "World")
name = input()
print("Hello, " + name)
name = input()
print(f"Hello, {name}")
def func():
a=7
if a>5:
print("a is greater than 5")
else:
print("a is less than or equal to 5")
if name == "차은우":
print(f"Hello {name}")
if expression:
codes to execute
if condition:
print("if statement code 1")
print("if statement code 2")
print("Not if statement code")
if (age > 19 and age < 30) or (married == True and income < 100000000):
print("WeCode 은행의 전세대출 우대자 이십니다")
#월(month)와 일(day), 이 2가지를 input 값으로 받았을때,
#2019년의 해당 월과 일의 다음 날의 월과 일을 출력해주세요.
#예를 들어, month 는 3이고 일은 31이면 2019년 3월 31일의 다음날은
#4월 1일 임으로 다음과 같이 출력이 되면 됩니다 (월 과 일을 각각 다른 줄에 출력 해주세요).
month = int(input())
day = int(input())
if day == 31:
day = 1
print(month+1)
print(day)
elif day == 30 and (month == 4 or 6 or 9 or 11):
day = 1
print(month+1)
print(day)
elif day == 28 and month == 2:
day = 1
print(month+1)
print(day)
else:
print(month)
print(day+1)
파이썬 일정 버젼 이상에서는 나누기를 했을 때, 산수적으로 나누어떨어지는 값이라도 실수형으로 반환한다.
다음의 방정식을 해결하는 프로그램을 구현 하세요. x값을 구해야 합니다.
ax = b
결과 출력물은 다음과 같아야 합니다.
1. Input 으로 주어진 a 와 b 값으로 위의 방정식을 충족하는 단 하나의 정수가 존재한다면 해당 정수를 출력하면 됩니다.
2. 만일 a 와 b 값으로 위의 방정식을 충족하는 정수가 없다면 "No Solution"을 출력해주세요.
3. a 와 b 값으로 위의 방정식을 충족하는 정수가 많다면 "Many Solutions"을 출력해주세요.
Hint: a 나 b 는 0이 될 수 있습니다.
Examples:만일 a = 1, b = -2 라면 결과값으로 -2가 출력이 되어야 합니다.
만일 a = 2, b = -1 라면 결과값으로 "No Solution"이 출력이 되어야 합니다.``` a = int(input()) b = int(input()) #x = b / a if b == 0: if a == 0: print("Many Solutions") else: x=0 print(x) # b가 0이면 기본적으로 x 값은 0이 되지만, a가 같이 0일수 있으므로 나눠준다. elif a == 0: print("No Solution") # b가 0이 아닌데 a가 0인 경우 정수를 0으로 나누게되므로 No Solution elif b % a == 0: x = b / a print(int(x)) # a와 b 둘 다 0이 아니고 정수인데 b / a 가 딱 떨어지는 값일 때 x를 출력해준다. # 난 파이썬에서 정수 / 정수 도 실수로 계산되어서 나오므로 정수형으로 형변환해준다. else: print("No Solution") # 남은 경우의 수는 둘 다 0이 아니면서 딱 나눠떨어지지 않는 값들이다. # 그럴경우는 No Solution ```
def 함수명(parameter):
문장1
문장2
...
문장N
return 리턴값
parameter와 return값은 optional이다. 둘 중 하나 혹은 둘 다 없을수도 있다.
return 값은 함수에서 해당 함수를 호출한 주체(invoker)에게 결과값(output)을 보내준다.
def 함수명(parameter1, parameter2):
print(f"{parameter1} and {parameter2}")
함수명("욥", "얍")
-> 욥 얍
위 처럼 순서대로 값이 함수에 전해지는 경우가 가장 기본적이다.
순서에 맞춰서 parameter값을 전해주지 않을경우도 있는데, 이를 keyword arguments라고 한다.
#keyword arguments
def 함수명(my_name, your_name):
print(f"{my_name} and {your_name}")
함수명(your_name = "욥", my_name = "얍")
-> 욥 얍
#Mixing positional arguments and keyword arguments
def 함수명(my_name, your_name):
print(f"{my_name} and {your_name}")
함수명("욥", your_name = "얍")
-> 욥 얍
default value parameter를 non-default value parameter 앞에 정의하면 안되는 이유는?
함수를 호출할 때 positional argument 를 이용해 호출하는게 일반적인데, 이때 필수적으로 순서를 지켜야한다.
``` def exam(a="hi", b="예얍", c, d): print(a, b, c, d) ```
라는 함수가 있다고 할 때
exam("abc", "def") 라고 함수를 호출하면 syntax error가 난다.
이유는 파이썬이 입력받은 "abc", "def"를 a, b, c, d 중 어디에 저장해야하는지 판단 할 수 없기때문이다.
호출은 positional argument 방식으로 호출을 했는데, a와 b에 저장하라는 건지, 디폴트 값이 없는 c, d에 저장하라는 건지 파이썬이 판단할 수 없게되기 때문이다.
이런것을 방지하고자 함수를 선언할 때, 디폴트값이 없는 파라미터부터 선언하기로 한것이다.
답변받은 내용 : (포지셔널, 디폴트벨류, args, 키워드온리, 디폴트키워드온리,*kwargs)이순서라고 보시면됩니다. 재밌는건 키워드온리 아규먼트도 디폴트 값은 뒤에 와야하는거죠)
더 자세히 알아볼 수 있도록 그림을 참조해보자.
모든 종류 arguments들이 적합한 위치가 어디인지 알 수 있다. 위에서는 파이썬이 판단할 수 없다고 표현했지만, 이 순서들은 말그대로 정해져있는 문법으로 봐야된다. 지켜지지 않으면 error가 나므로 주의해야한다.
매개변수 위치에 대해서 도움받을 만한 좋은 사이트 및 블로그가 있어서 공유.
Python keyword only arguments 참조 사이트
가변 매개변수의 위치에 따른 keyword 매개변수 호출시 error 종류