Ruby教程(基础篇)

article/2025/9/11 9:18:28

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

http://chatgpt.dhexx.cn/article/PGxBWCgS.shtml

相关文章

Ruby语言简介

Ruby是一种解释型、面向对象、动态类型的语言。Ruby采取的策略是在灵活性和运行时安全之间寻找平衡点。随着Rails框架的出现,Ruby也在2006年前后一鸣惊人,同时也指引人们重新找回编程乐趣。尽管从执行速度上说,Ruby谈不上有多高效&#xff0c…

Ruby基本介绍

Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。Ruby 可运行于多…

字典生成----在线密码破解工具hydra和medusa的使用

大家好,我是SuieKa。 本次主要稍微详细分析一下字典的生成和在线密码破解工具hydra和medusa及使用案例,希望对大家学习上有帮助! 目录表 一、常见字典生成工具及使用方法1、字典生成工具crunch2、cupp自定义字典3、cewl-根据网站信息生成字典…

入侵AI Medusa 的赛博之海,诚邀#光点2022

未来性 | 突破性 | 跨领域 TEA 新媒体社区发起光点国际新媒体艺术节已经迈入第五年,每年推出的活动板块具前瞻视野,深受赞誉,感谢大家的支持和厚爱。 光点2022国际新媒体艺术节组委会通过 TEA 新媒体社区的力量,打造全球化、合作式…

Medusa学习Medusa参数使用

Medusa学习&&Medusa参数使用 文章目录 Medusa学习&&Medusa参数使用一、Medusa学习二、Medusa参数使用三、我的公众号 一、Medusa学习 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具。可以同时对多个主机,…

Medusa和Hydra快速入门手册

Hydra入门使用手册 vanHauser TheHackersChoice http://www.thc.org/thc-hydra 目录 什么是Hydra? Hydra-GTK 如何安装 如何使用Hydra? 参考文档 爆破实例 免责说明 联系我们 防范措施 什么是Hydra? 一个非常快速的网络登录破解程序&#xff…

【kali-密码攻击】(5.1.2)密码在线破解:Medusa

前言: 介绍: 博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员&…

Kali 暴力破解--medusa/hydra/xhydra

目录 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 1 实战-使用 hydra 工具在线破解系统用户密码 2 实战-使用 Medusa 工具在线破解 3 实战-图形化暴力破解软件 xhydra 环境 Kali Centos7(192.168.0.…

密码爆破工具:Medusa(美杜莎)-操作说明

科普下: Medusa是支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (AUTH/VRFY), SNMP, SSHv2, SVN, Telnet, VmAuthd, VNC的密码爆破工具。 最近搞一个项目,需要爆破postgres这个数据库的…

新增X-Helios、X-Medusa算法研究

纯属技术研究,如有侵权,请联系删除 抓个包,在抖音最新的23.7.0版本中,已经新增加了2个参数x-helios,x-medusa 进去解开看了一下,解开得内容和argus得内容相差并不是很大.第一个pb参数从四字节数变成了一段字节串,其他…

Mesa简介

Mesa, also called Mesa3D and The Mesa 3D Graphics Library, is an open source software implementation of OpenGL, Vulkan, and other graphics API specifications. Mesa translates these specifications to vendor-specific graphics hardware drivers. Mesa 实际…

最新版X-Helios、X-Medusa、X-Ladon、X-Argus逆向与风控分析

今天安装新了最新版的某短视频app(23.5.0版),发现了一些新的东西 1、新的加密参数X-Helios、X-Medusa 2、新的请求参数 咱们到处逛逛 ,看下哪些请求都用了这些请求参数 我们主要关注几个重要的 (1)详情页 (2)列表页 (3) 播放 (…

medusa破解ssh

medusa -h 192.168.3.56 -u priess -P /passwd.txt -M ssh打开kail 输入 即可

Hydra/Medusa爆破工具命令参数和简单操作

1.hydra参数介绍 -l :指定单个用户名称 -L:指定用户名称字典 -p :指定单个密码 -P :指定密码字典 -vV :显示详细的执行过程 -R :根据上一次进度继续破解 -S :使用SSl协议连接 -s &#…

使用kali的medusa工具

实验目的: 练习使用kali的medusa工具 实验环境: 系统:kali CentOs7 kali用户名:kali 密码:kali 靶机用户名:root 密码:123456 实验步骤: 一、通过命令“ip addr”Centos7…

在线密码破解medusa

pw-inspector 按长度和字符集筛选字典 pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -l #提取小写字母pw-inspector -i /usr/share/wordlists/nmap.lst -o p.lst -u密码破解效率 密码复杂度(字典命中率) 带宽、协议、服务器性能、客户端…

Kali-登录暴力破解器工具-medusa使用

medusa是什么? https://www.kali.org/tools/medusa KaliLinux网址对美杜莎机翻: Medusa 旨在成为一个快速、大规模并行、模块化的登录暴力破解器。目标是支持尽可能多的允许远程身份验证的服务。作者认为以下项目是该应用程序的一些关键特性&#xff1a…

密码爆破工具————Medusa(美杜莎)介绍

Medusa(美杜莎),开源的软件,kali中有集成。 支持爆破的服务有: AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare), NNTP, PcAnywhere, POP3, PostgreSQL, rexec, rlogin, rsh, SMB, SMTP (AUTH/VRFY), SNMP, …

密码工具Medusa(美杜莎)参数使用教程

Medusa是一种密码爆破工具,它支持多个协议的爆破,包括FTP、POP3、SSH、Telnet等。其主要特点是速度快,支持多线程操作。下面是Medusa工具的介绍和常用参数: 安装Medusa 在Kali Linux中可以直接使用以下命令进行安装: a…

medusa 使用教程

密码爆破:medusa(美杜莎)使用方法 1.工具介绍 Medusa工具是通过并行登陆暴力破解的方法,尝试获取远程验证服务访问权限,它支持AFP, CVS, FTP, HTTP, IMAP, MS-SQL, MySQL, NCP (NetWare),NNTP, PcAnywhere, POP3, P…