본문 바로가기

Python

20210121_Python 와 Ruby 비교 01 - Ruby 위주로

환경설정

문서편집기(notepad)를 통한 코딩 실행

  • 터미널로 작업하기에는 복잡한 구조를 못함-> 코드를 파일로 만들어서 작업하는게 좋음

  • notepad로 print("hello, world!")hellowworld.rb 파일 작성

  • notepad로 print("hello, world!")hellowworld.py 파일 작성

  • Ruby의 경우 터미널에서 동작 명령어는 ruby 파일이름

  • python의 경우 터미널에서 동작 명령어는 python 파일이름

  • (물론, 경로에 없으면 경로에 들어가거나 경로까지 모두 쳐줘야 함)

Ruby Syntax

  • print() : 출력값이 한줄에 모두 나타남
  • puts() : python의 print 처럼 개행이 나타남
  • BEGIN{code} : 어디에 명령문이 있든 제일 먼저 실행
  • END{code} : 어디에 명령문이 있든 제일 마지막에 실행
  • # 내용, =begin 여러 줄 =end : 주석기능 (vscode에서 단축키 ctrl+ / 가능)
  • class 클래스 이름 end : 클래스 선언은 class 로 하고 클래스 이름은 항상 첫번째 문자가 대문자 그리고 마지막에 항상 end 붙여줄 것



  • 사칙 연산 가능 : +, -, /, *, **는 승수
  • 문자 표현 : "" , '', ''' ''' 모두 가능하나 python 처럼 다른 따옴표의 짝을 이루면 syntax error
  • 문자열 제어 : 문자와 문자의 +, *개수 반복, indexing 가능 (python과 같음)
  • 문자관련 함수:
    • .capitalize() - 대문자화는 동일
    • .upper()(python) - .upcase()(ruby)
    • .__len__ () or len()(python) - .length()(ruby)
    • .replace()(python) - sub()(ruby)

 

  • escape 문자 :
    • \의 경우 붙이면 그대로 표현 가능, 그 외에 python ruby 둘다 같다
    • 단, pytnon은 개행시 \n을 큰따옴 작은 따옴표던 상관 없이 개행이 가능한데, ruby는 큰 따옴표에서만 개행이 된다.

 

  • 변수 정의 :
    • python과 같이 =으로 할당(왼쪽 문자 = 값)

 

  • 비교와 불리언 : ruby 같은 경우 True 와 False가 모두 소문자로 표기한다. true , false

 

  • 조건문 : python과 다르게 콜론:을 사용하지 않으며 끝나는 지점에는 end를 넣어서 나와주어야 한다.
  • else는 똑같고 python의 elif -> ruby에서는 elsif 로 표기함
  • python은 인덴트를 넣어야 하지만, ruby의 경우에는 인덴트를 안넣어도 문제는 없지만 가독성 때문에 하는게 좋다.
a = 10
b = 7
c = 10
if a == b
  puts("code1")
  puts("code2")
elsif a == c
  puts("correct")
else
  puts("code else")
end
puts("code3")  

 

  • 입력과 출력
    • python의 경우에는 input(보이는 내용) 함수를 사용하지만 ruby의 경우 gets.chomp()를 사용한다.
    • 다른 점은 python의 경우 표시내용이 함수에 포함 되어 있지만, ruby의 경우 puts를 통해 따로 보이는 내용을 출력 시켜주고 입력을 받아야 한다는 것
puts("Please Enter your key!")
input = gets.chomp()
real_tom = "11"
real_jerry = "8"
if real_tom == input
  puts("hello! Tom~")
elsif real_jerry == input
  puts("hello! Jerry~")
else
  puts("it's not correct!")
end

 

  • 논리 연산자 : and , or, not 의 사용은 둘이 같다.
  • 중첩 if 문
real_id = "tom"
real_pw = "1111"
puts("Please Enter your id!")
input_id = gets.chomp()
puts("Please Enter your password!")
input_pw = gets.chomp()
if input_id == real_id
  if input_pw == real_pw
    puts("hello! Tom~")
  else
    puts("Wrong password!")
  end
else
  puts("Wrong id!")
end

 

  • if 중첩 + and 문
real_id = "tom"
real_pw = "1111"
puts("Please Enter your id!")
input_id = gets.chomp()
puts("Please Enter your password!")
input_pw = gets.chomp()
if input_id == real_id and input_pw == real_pw 
  puts("Hello! Tom!")
else
  puts("Check your id or password!")
end

 

  • 컨테이너
    • 컨테이너는 [] 로서 python 에서는 list로 ruby에서는 Array로 불린다.
    • 특성은 똑같이 인덱스와 값을 가지며 순서가 존재한다.
    • python의 type()를 ruby에서는 .class를 붙여서 본다.
    • 또한 값 변경도 둘다 똑같이 변수명[index] = 값 을 사용하여 값을 변경 가능하다.

 

  • 반복문
    • python 과 똑같이 while을 사용하며 조건문과 같이 사용도 된다. 단, ruby에서는 do 가 추가 된다.
    • break문도 똑같다. 단, continue문 말고 redo를 사용한다.
i = 0
while i < 10 do
  if i == 4
    break
  end
  puts(i)
  i += 1
end
puts("after while")

 

  • 컨테이너 + while
members = ['tom', 'jerry', 'snoopy']
i = 0
while i < members.length do
  puts(members[i])
  i += 1
end

 

  • for 문
    • python의 경우 보통 range 함수와 같이쓴다.
    • ruby에서 range를 설정은 (숫자..숫자) -> (둘다 포함) 이상 이하 , (숫자...숫자) -> 이상 미만
    • 단, for 문에서만 저렇게 쓰이고 밖에서 출력시 .to_a를 붙여줘야 함
for item in (3..10) do
  puts(item)
end

puts("Enter your id")
input_id = gets.chomp()
members = ['tom', 'jerry', 'snoopy']
for member in members do
  if member == input_id
    puts("hello! " +member)
    exit
  end
end
puts("who are you?")
  • 여기서 exit 명령은 기본 내장 명령인것 같다.(해당 모듈에서 나가는 명령 인듯) 파이썬의 경우 immport sys가 필요하다.



Cheat-Sheets

Cheat-sheet 언어 선택

Cheat-sheet 언어 비교

python cheat-sheet



설명서 보는 법 (Documentation)

  • 검색 능력 + Reference 보는 법을 기르자

용어

  • Getting Started : 입문서
  • Tutorial : 자습서
  • Reference : 참조
  • language reference : 문법책
  • library reference : 단어장 같은 느낌(여러 명령어 같은 거)