1. Print和puts的区别
- puts输出内容独立成行、自动换行,而print会把输出的内容打印在同一行。
2. 变量和常量
character_name = "Kevin"
#variable name变量character_age = "21"puts ("name:" +character_name)puts (character_age+" years old")character_name="roger"puts ("hello "+character_name)
**3. 加载和混入模块
- require:加载相应的模块文件到当前的环境中,模块只会被加载一次。
- load:加载相应的模块文件到当前的环境中,即使曾经加载过也会重新加载,可以用来重载源代码。
load 'filename.rb'#加载filename.rb文件
require 'yaml'#加载yaml库,也会把yaml.rb文件加载进来
- include:不能自动加载文件,只能将模块混入或扩展已有的模块或类,建立一个由类到所包含模块的引用,自动为类添加模块中所包含的方法,模块改变时方法同步改变。
- extend:与include类似,extend用于在一个对象中引入 一个模块。
module MyModuledef module_methodputs "module_method"end
endclass MyClassinclude MyModule
endclass MyClass1extend MyModule
end
my_class = MyClass.new
my_class.module_method
MyClass1.module_method
aa = "123"
aa.extend(MyModule)
aa.module_method
4. 数据类型type of data
Ruby没有严格的数据类型,可以随便起名字
Name=”kevin” string类型
Age=75
Gpa=3.2
Ismale=true
Isfat=false
Flaws=nil
5. Working with string
- 换行符:\n
puts"kevin\nroger"
- 引用
phrase="kevin k"
puts phrase
- 大小写转换
phrase="Kevin K"
puts phrase.upcase()
puts phrase.downcase()
- phrase用法
phrase="Kevin K"
#0123456从0开始计数
puts phrase[0]
puts phrase[6]
puts phrase[0,3]#打印前三个字符
- phrase.index 显示字符的位置
phrase="Kevin S"
puts phrase.index("e")
puts phrase.index("S")
6. 数字和运算
- 运算
print("取余计算:10%3=",10%3)
puts#换行
print("加法计算:5+3=",5+3)
puts
print("2的3次方:2**3=",2**3)
puts
num=20#输出数字
print "输出num的值:",num
- 使用.to_s将数字转换成字符串,将字符串和数字连在一起
puts ("输出num的值:" + num.to_s)
print "输出num的值:",num
- 取绝对值
puts num.abs()
- 取整
puts num.round()#取整数
puts num.ceil()#向上取整
puts num.floor()#向下取整
7. 获得用户输入的信息
- 获得键盘输入
puts "Enter your name:"
name = gets
puts("hello "+name)
- str.chomp(): 从字符串末尾移除记录分隔符($/)或\n,将输出显示在同一行
- str.chop(): 移除 str 中的最后一个字符
puts "Enter your name:"
name = gets.chomp()
puts("hello "+name+",nice to meet u")
8. 获得用户输入的数字
- ruby默认所有键盘输入的值都是string类型的
puts "enter a number:"
num1=gets.chomp()
puts "enter another number"
num2=gets.chomp()
puts(num1+num2)
- 获取用户输入的数字
puts "enter a number:"
num1=gets.chomp()
puts "enter another number"
num2=gets.chomp()
puts(num1.to_i+num2.to_i)#.to_i将字符串转换为数字
- 获取用户输入的小数
puts "enter a number:"
num1=gets.chomp().to_f
puts "enter another number"
num2=gets.chomp().to_f
puts(num1+num2)
`
9. madlibs小游戏
puts "Enter a color:"
color = gets.chomp()
puts "Enter a plural_noun:"
plural_noun = gets.chomp()
puts "Enter a celebrity:"
celebrity = gets.chomp()puts("Rose are " + color)
puts(plural_noun + " are blue")
puts("I love " + celebrity)
10. 数组Array
注意:在ruby的数组中不能同时出现数字和字符串
friends=Array["Kevin","Jane","MIke","Jack"]
puts friends#显示Array中所有数据
puts friends[0]#显示第一个数据
puts friends[-2]#显示倒数第二个数据
puts friends[0,2]#显示第一个和第二个数据
friends[2] = "Lily"#将Mike改为Lily并显示
puts friends[2]
exgirlfriends =Array.new#创建一个空数组
puts exgirlfriends[0]="Lily"#向新数组中写入数据
puts exgirlfriends
puts friends.length#输出数组长度
puts friends.include?"Karens"#查找数组中是否有“Karens”这条数据,输出true/false
puts friends.reverse()#倒序输出数组
puts friends.sort()#按照字幕顺序给数组中元素排序
11. Hash
类似一个数组,索引可是是数字或是字符串,没有特定的顺序
states = { #keys必须是唯一的"河北" => "冀","北京" => "京","天津" => "津",:NewYork => "NY",1 => "beijing"
}
puts states
puts states["天津"]
puts states[:NewYork]
puts states[1]
12. 方法Methods
定义一个方法使用def,使用end作为方法的结束
def sayhi(name="none",age=-1)#定义一个方法名叫sayhi,并初始化puts ("hello user "+name+",you are "+age.to_s)
end
sayhi()#调用这个方法
sayhi("kevin")
sayhi("kevin","21")
13. return
def cube(num)puts "hello"return num*num*num9
endputs cube(2)
14. if判断
ismale = true
istall = false
if ismale and istall #and为且,or为或puts "you are male"
elsif ismale and !istallputs "you are a short male"
elseputs "you are not male"
end
def max(num1,num2,num3)if num1>=num2 and num1>=num3return num1elsif num2>=num1 and num2>=num3return num2elsereturn num3end
end
max(1,20,3)
puts max(1,20,3)
puts "Enter first number:"
num1 = gets.chomp().to_f
puts "Enter operator:"
op = gets.chomp()
puts "Enter second number:"
num2 = gets.chomp().to_fif op == "+"puts (num1+num2)
elsif op == "-"puts(num1-num2)
elsif op == "*"puts(num1*num2)
elsif op == "/"puts(num1/num2)
elseputs "Invalid operator"
end