Ruby 程式語言入門 - 基本數字計算與輸出

在Ruby中,當想要將變數值、陣列之類的值印出時,可以使用printputsp等方法,而這三者之間的效果都有些微不同。

puts "Hello World"
print "Hello World"
p "Hello World"

puts

irb(main):001:0> puts "Hello World"
Hello World
=> nil

irb(main):008:0> puts [1,2,3,4]
1
2
3
4
=> nil

print

irb(main):002:0> print "Hello World"
Hello World=> nil

irb(main):007:0> print [1,2,3,4]
[1, 2, 3, 4]=> nil

p

irb(main):003:0> p "Hello World"
"Hello World"
=> "Hello World"

irb(main):006:0> p [1,2,3,4]
[1, 2, 3, 4]
=> [1, 2, 3, 4]

由上方的例子可以得知:

  • pputs後方有換行字元。
  • putsprint兩者都是沒有回傳值的輸出。
  • pprint方法可以完整的把型態跟結構印出來,例如 "Hello World" 字串以及 [1, 2, 3] 陣列,而 puts 則是把「內容物」印出來。
圖片來源icelandcheng

值得一提的是,puts搭配inspect也可以做到類似p方法的效果,但依舊沒有回傳值。

irb(main):004:0> puts "Hello World".inspect
"Hello World"
=> nil

irb(main):005:0> puts [1,2,3,4].inspect
[1, 2, 3, 4]
=> nil

單雙引號和跳脫字元的使用

  • 字串可以使用單雙引號輸出:

例如:

irb(main):013:0> puts 'Hello World'
Hello World
=> nil

irb(main):014:0> puts "Hello World"
Hello World
=> nil
  • 跳脫字元的使用

當你程式碼寫

puts "Hello "World"" 

會產生下方錯誤訊息:

test.rb:29: syntax error, unexpected tCONSTANT, expecting end-of-input
puts "Hello "World"" 

你可以使用\來做跳脫字元,在字串內的雙引號使用\來隔開。

irb(main):011:0> puts 'You\'re smart'
You're smart
=> nil

irb(main):012:0> puts "Hello \"World\""
Hello "World"
=> nil
  • 字串之間可以使用+號相連
irb(main):009:0> puts "Hello "+"World"
Hello World
=> nil

irb(main):010:0> puts 'Hello '+'World'
Hello World
=> nil

簡單的計算功能

注意:使用#可以寫註解。

常用的運算符號

+ 加號 
- 減號 
/ 除號 
* 乘號 
% 取餘數 
< 小於符號 
> 大於符號 
<= 小於等於符號 
>= 大於等於號

簡單的加減乘除

下方做簡單的運算和演示:

#加法
irb(main):015:0> puts 2+3
5
=> nil

#減法
irb(main):016:0> puts 2-6
-4
=> nil

#負數減法
irb(main):017:0> puts 2.33-6
-3.67
=> nil

#乘法
irb(main):018:0> puts 3*2
6
=> nil

#除法
irb(main):019:0> puts 66/3
22
=> nil

#計算
irb(main):043:0> puts 3 + 1 % 4 - 2 / 3 + 9
13
=> nil

#判斷
irb(main):041:0> 5>3
=> true

irb(main):042:0> 3<1
=> false

#使用逗號將字串與運算式連接
irb(main):040:0> puts "237" , 23*2 + 4/5
237
46
=> nil

irb(main):045:0> print "12",34
1234=> nil

次方與開根號

若想使用n次方可以使用值**次方,如:

irb(main):020:0> puts 3**3
27
=> nil

若想使用開根號可以使用Math.sqrt(值),如:

irb(main):021:0> puts Math.sqrt(6)
2.449489742783178
=> nil

浮點數轉換

除法方面,若今天直接使用整數除法運算若有餘數會取下限值,想要得到餘數結果可以在除數或者被除數後方加上.0變成浮點數的型態,或者使用.to_f轉換成浮點數。

irb(main):022:0> puts 36/3
12
=> nil

irb(main):023:0> puts 38/3
12
=> nil

irb(main):024:0> puts 37.0/3
12.333333333333334
=> nil

irb(main):025:0> puts 37/3.0
12.333333333333334
=> nil

irb(main):026:0> puts 37.to_f/3
12.333333333333334
=> nil

四捨五入與絕對值

使用.round可以做到四捨五入的效果,而在.round(值)中輸入值可以呈現出取到小數幾位的效果。

irb(main):027:0> puts 77.222222.round
77
=> nil

irb(main):028:0> puts 77.555555.round
78
=> nil

irb(main):029:0> puts 77.2353.round(3)
77.235
=> nil

使用.abs可以取絕對值

irb(main):035:0> puts -5.abs
5
=> nil

字串、整數、浮點數轉換

使用.to_s可以轉換為字串型態,使用.to_i可以轉換為整數型態,使用.to_f可以轉換為浮點數型態,
依靠這種轉換就可以達到許多神奇的效果。

irb(main):031:0> puts 23.to_s
23
=> nil

irb(main):032:0> puts "21r".to_i
21
=> nil

irb(main):033:0> puts "21r".to_i+3
24
=> nil

irb(main):034:0> puts 23.to_s + "happy"
23happy
=> nil

字串內插

使用 #{變數名稱} 可以插入字串。

#學而不思則罔,思而不學則殆
#Learning without thinking is vain; thinking without learning is perilous. 

a = "Learning"
b = "thinking"
puts "#{a} without #{b} is vain; #{b} without #{a} is perilous." 

輸出結果:

$ ruby calculate.rb
Learning without thinking is vain; thinking without Learning is perilous.

更多字串方法

還有反向reverse、輸出字串長度length、大寫upcase、小寫downcase....等方法

irb(main):036:0> puts "TWICE".reverse
ECIWT
=> nil

irb(main):037:0> puts "TWICE".length
5
=> nil

irb(main):038:0> puts "twice".upcase
TWICE
=> nil

irb(main):039:0> puts "Twice".downcase
twice
=> nil