python basics review notes:
python은 object-oriented language이다. python에서는 variable들이 object다.(Java와는 다르게) variable을 생성할때에 선언을 할 필요가없다!
2가지 number types가 지원된다:
-integers
-floats
myfloat=7.0
myfloat=float(7.0)
integer값을 float type으로 만듥싶다면 위와같이 float()을 사용하면된다.
2가지 방식으로 string variable을 만들수있다 - single & double quotation
mystring="hello"
yourstring='hi'
위와 같이 yourstring 변수는 ' ' (single-quotation)으로 작성이된다.
(Don't 또는 Tom's같이 single quotation이 필요한 경우엔 double을 써야한다)
신기하게도
여러Type의 여러변수를 한꺼번에 만들 수 있다.
x,y,z= "string",5,3.141592
그러나,
숫자와 문자열은 섞은 operator은 지원되지않는다.
one=1
two=2
hello="hello"
#This will NOT work
print(one+two+hello)
배열이다. 여러 type의 variable을 가질수있고 미리 배열 사이즈를 정해놓지않아도 된다.
(Java의 Arraylist와 비슷한것같다)
mylist=[]
mylist.append(1)
mylist.append(2)
mylist.append(3)
for x in mylist:
print (x)
append()를 통해 mylist라는 list에 숫자 1,2,3을 넣고
for loop으로 하나씩 출력을하는 코드이다.
print(mylist[2])
이렇게 mylist의 가장 마지막 index=2의 값을 출력할 수 있다.
print(mylist)
이렇게 list를 통채로 출력하려고하면, mylist 객체가 저장된 주소값이 나올까??
아니다!
mylist라는 list안에 값들이 출력된다.
==> [1, 2, 3] 이렇게.
Arithmetic operators는 보통 계산방식과 같다.
exponential을 계산하기위해서는
squared = 7 ** 2
cubed = 2 ** 3
print(squared)
print(cubed)
출력되는 값은 squared=49, cubed=8
Operators with Strings
lotsofhellos = "hello" * 10
print(lotsofhellos)
hello가 연이어서 10번 출력된다.
Operators with Lists
even_numbers = [2,4,6,8]
odd_numbers = [1,3,5,7]
all_numbers = odd_numbers + even_numbers
print(all_numbers)
출력결과는 [1, 3, 5, 7, 2, 4, 6, 8]
String Formatting
python은 C의 string formatting style을 사용한다.
% operator를 tuple(size가 정해진 list)의 변수를 format하기 위해 사용한다.
Basic argument specifiers:
%s - String (or any object with a string representation, like numbers)
%c - character (문자 1개)
%d - Integers
%f - Floating point numbers
%.< number of digits >f - Floating point numbers with a fixed amount of digits to the right of the dot.
%x/%X - Integers in hex representation (lowercase/uppercase)
%o - Integers in octal representation
%% - %(the percent sign) itself
예시)
# This prints out "John is 23 years old."
name = "John"
age = 23
print("%s is %d years old." % (name, age))
astring = "Hello world!"
print(astring.count("l")) #3이 출력됨
astring = "Hello world!"
print(astring[3:7]) #lo w이 출력됨
astring[a:b]는 index[a]부터(포함) index[b]까지(미포함)의 substring을 반환한다.
그래서 여기서는 index 3,4,5,6 문자가 출력된것이다.
extended slice syntax의 general form은 [start:stop:step]이다.
astring = "Hello world!"
print(astring[3:7])
print(astring[3:7:2]) #l 를 출력함.
위와 같은 경우에는 3부터 7(미포함)까지 한문자를 skip하는것이다.
extended slice를 응용해서 reverse string을 얻을 수 있다
astring = "Hello world!"
print(astring[::-1]) #!dlrow olleH 출력됨.
python에서 사용되는 boolean logic은 True/False (대문자로시작함을 주의!)값을 갖는다.
condition에 두개 이상의 boolean expression을 넣으려면 and 혹은 or를 사용한다.
in operator는 list와 같은 object container에 특정 object가 있는지 확인할때에 사용한다.
statement = False
another_statement = True
if statement is True:
# do something
pass
elif another_statement is True: # else if
# do something else
pass
else:
# do another thing
pass
위 코드block과 같이 if, elif, else를 사용해서 condition에 해당할때에 취할 action을 정의할 수 있다. condition문장의 if statement의 끝을 맺는것으로 :이 사용되고, if에 해당할 시 취할 action 내용은 { } curly bracket이 아닌, 단순히 indent(1tab or 4spaces)만 해서 작성하면 된다.
x = [1,2,3]
y = [1,2,3]
print(x == y) # Prints out True
print(x is y) # Prints out False
여기서 사용되는 is operator은 instance를 비교하는데에 사용된다. x와 y는 같은 값을 갖더라고 서로 다른 instance이기때문에 위와같이 두번째 print문장은 false를 출력한다.
for loop 예시)
primes = [2, 3, 5, 7]
for prime in primes:
print(prime)
while loop 예시)
# Prints out 0,1,2,3,4
count = 0
while count < 5:
print(count)
count += 1 # This is the same as count = count + 1
break는 loop에서 빠져나오기위해 사용되고, continue는 현재 block을 skip하고 loop을 continue 하기위해 사용된다 (Java와 동일)
using else for loops 예시)
# Prints out 0,1,2,3,4 and then it prints "count value reached 5"
count=0
while(count<5):
print(count)
count +=1
else:
print("count value reached %d" %(count))
# Prints out 1,2,3,4
for i in range(1, 10):
if(i%5==0):
break
print(i)
else:
print("this is not printed because
for loop is terminated because of break
but not due to fail in condition")
code를 이해하기/사용하기 편리하도록 block으로 나눈다. reusability 또한 큰 merit이다.
python에서 block의 syntax는 아래와같다:
block_head:
1st block line
2nd block line
...
앞에서 이미 사용해본 for, if, while이 이런 block의 keyword였던것이다.
function을 구현하는 block keyword는 def이다. def옆에 작성하는 function의 이름으로 function을 호출할 수 있다.
def my_function_with_args(username, greeting):
print("Hello, %s , From My Function!, I wish you %s"%(username, greeting))
위와같이 function은 argument를 전달받을 수있다.
그리고 아래와 같이 return keyword를 통해 값을 반환할 수 있다.
def sum_two_numbers(a, b):
return a + b
Object를 생성하면 variables & functions를 하나의 entity로 encapsulate할 수 있다.
Class는 object를 만드는 틀(template)과 같은것이다. object는 class에 정의된 variables & functions를 갖게된다.
아주아주 간단한 class예시)
class MyClass:
variable = "blah"
def function(self):
print("This is a message inside the class.")
myobjectx = MyClass()
print(myobjectx.variable)
MyClass에서 정의한 variable의 값인 string "blah"가 출력된다. function도 동일한 방법으로 호출할 수 있다.
배열과 비슷하지만, index & element 대신 key & value로 정렬되어있다. key를 사용해서 store된 value를 access할 수 있다. 배열의 index와는 다르게 key는 다양한 object type이 가능하다-string, number, 심지어 list자체가 될수도있다.
phonebook = {"John" : 938477566,"Jack" : 938377264,"Jill" : 947662781}
for name, number in phonebook.items():
print("Phone number of %s is %d" % (name, number))
이렇게 dictionary를 iterate할 수 있다. 단, list와는 다르게 dictionary는 담고있는 value들의 order를 지키지않는다. 처음 dictionary를 생성 할때 넣은 순서대로 출력되지 않을수있다.
dictionary에서 value를 remove하는 방법 예시)
phonebook = {
"John" : 938477566,
"Jack" : 938377264,
"Jill" : 947662781
}
del phonebook["John"]
print(phonebook)
#또는
phonebook.pop("John")
print(phonebook)