楼主: AlexQin

《 笨方法學 Ruby 》(Learn Ruby The Hard Way)

[复制链接]
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
11#
 楼主| 发表于 2013-11-13 15:15 | 只看该作者
习题2: 注释和井号


程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么,在你想要临时删除一段代码时,你还可以用注释的方式将这段代码临时禁用。接下来的练习将让你学会注释:


  1. # A comment, this is so you can read your program later.
  2. # Anything after the # is ignored by Ruby.

  3. puts "I could have code like this." # and the comment after is ignored

  4. # You can also use a comment to "disable" or comment out a piece of code:
  5. # print "This won't run."

  6. puts "This will run."
复制代码


你应该看到的結果


  1. $ ruby ex2.rb
  2. I could have code like this.
  3. This will run.
  4. $
复制代码


加分习题


弄清楚 # 符号的作用。而且记住它的名称。(中文为井号,英文为 octothorpe 或者 pound character)。
打开你的 ex2.rb 文件,从后往前逐行检查。从最后一行开始,倒着逐個单词检查回去。
有发现更多的错误吗?有的话就改正过来。
阅读你写的习题,把每个字符(charcter)都读出来。有没有发现更多的错误呢?有的话一样改正过来。


使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
12#
 楼主| 发表于 2013-11-13 15:54 | 只看该作者


习题 3: 数字和数学计算


每一种程序语言都包含处理数字和进行数学计算的方法。不必担心,程序设计师经常撒谎说他们是多么厉害的数学天才,其实他们根本不是。如果他们真是数学天才,他们早就去从事数学相关的行业了,而不是写写广告程序和社交网络游戏,从人们身上偷赚点小钱而已。


这章习题里有很多的数学运算符号。我们来看一遍它们都叫什么。你要一边写一边念出它们的名称来。直到你念烦了为止。名称如下:
+  加号
-  减号
/  除号
*  乘号
%  百分比符号
<  小于号
>  大于号
<=  小于等于号
>=  大于等于号


有没有注意到以上只是些符号,没有运算操作呢?写完下面的练习代码后,再回到上面的列表,写出每个符号的作用。例如 + 是用来做加法运算的。
  1. puts "I will now count my chickens:"
  2. puts "Hens", 25 + 30 / 6
  3. puts "Roosters", 100 - 25 * 3 % 4
  4. puts "Now I will count the eggs:"
  5. puts 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
  6. puts "Is it true that 3 + 2 < 5 - 7?"
  7. puts 3 + 2 < 5 - 7
  8. puts "What is 3 + 2?", 3 + 2
  9. puts "What is 5 - 7?", 5 - 7
  10. puts "Oh, that's why it's false."
  11. puts "How about some more."
  12. puts "Is it greater?", 5 > -2
  13. puts "Is it greater or equal?", 5 >= -2
  14. puts "Is it less or equal?", 5 <= -2
复制代码


你应该看到的结果
  1. $ ruby ex3.rb
  2. I will now count my chickens:
  3. Hens
  4. 30
  5. Roosters
  6. 97
  7. Now I will count the eggs:
  8. 7
  9. Is it true that 3 + 2 < 5 - 7?
  10. false
  11. What is 3 + 2?
  12. 5
  13. What is 5 - 7?
  14. -2
  15. Oh, that's why it's false.
  16. How about some more.
  17. Is it greater?
  18. true
  19. Is it greater or equal?
  20. true
  21. Is it less or equal?
  22. false
  23. $
复制代码


加分习题
  • 使用 # 在程序码每一行的前一行为自己写一个注解,说明一下这一行的作用。
  • 记得最开始时的 IRB 吧?再次打开 IRB,然后使用刚才学到的运算符号,把Ruby 当做计算机玩玩。
  • 自己找个想要计算的东西,写一个 .rb 文件把它计算出来。
  • 有没有发现计算结果是「错」的呢?计算结果只有整数,没有小数部分。研究一下这是为什么,搜索一下「浮点数(floating point number)」是什么东西。
  • 使用浮点数重写一遍 ex3.rb,让它的计算结果更准确(提示: 20.0 是一个浮点数)。



使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
13#
 楼主| 发表于 2013-11-13 16:17 | 只看该作者
习题 4: 变量(variable)和命名


你已经学会了打印出东西和数学运算。下一步你要学的是「变量」。在开发程序中,变量只不过是用来代表某个东西的名称。程序员通过使用变量名称可以让他们的程序读起来更像英语。而且因为程序员的记性都不怎样,变量名称可以让他们更容易记住程序的内容。如果他们没有在写程序时使用好的变量名称,在下一次读到原来写的代码时对他们会大为头疼的。


如果你被这章习题难住了的话,记得我们之前教过的:找到不同点、注意细节:
  • 在每一行的上面写一行注释,给自己解释一下这一行的作用。
  • 倒着读你的 .rb 档案。
  • 朗读你的 .rb 档案,将每个字符也朗读出来。



  1. cars = 100
  2. space_in_a_car = 4.0
  3. drivers = 30
  4. passengers = 90
  5. cars_not_driven = cars - drivers
  6. cars_driven = drivers
  7. carpool_capacity = cars_driven * space_in_a_car
  8. average_passengers_per_car = passengers / cars_driven
  9. puts "There are #{cars} cars available."
  10. puts "There are only #{drivers} drivers available."
  11. puts "There will be #{cars_not_driven} empty cars today."
  12. puts "We can transport #{carpool_capacity} people today."
  13. puts "We have #{passengers} passengers to carpool today."
  14. puts "We need to put about #{average_passengers_per_car} in each car."
复制代码




Note: space_in_a_car 中的 _ 是 下划线(underscore)符号。你要自己学会怎样打出这个符号来。这个符号在变量里通常被用作假想的空隔,用来隔开单词。




你应该看到的结果
  1. $ ruby ex4.rb
  2. There are 100 cars available.
  3. There are only 30 drivers available.
  4. There will be 70 empty cars today.
  5. We can transport 120.0 people today.
  6. We have 90 passengers to carpool today.
  7. We need to put about 3 in each car.
  8. $
复制代码


加分习题
当我刚开始写这个程序时我犯了个错误,Ruby 告诉我这样的错误信息:
  1. ex4.rb:8:in `<main>': undefined local variable or method `car_pool_capacity' for main:Object (NameError)
复制代码


用你自己的话解释一下这个错误信息,解释时记得使用行号,而且要说明原因。


更多的加分习题
  • 解释一下为什么程序里面用了 4.0 而不是 4。
  • 记住 4.0 是一个「浮点数」,自己研究一下这是什么意思。
  • 在每一个变量赋值的上一行加上一行注释。
  • 记住 = 的名称是等于(equal),它的作用是为东西取名。
  • 记住 _ 是下划线(underscore)。
  • 将 IRB 作为计算机跑起来,就跟以前一样,不过这一次在计算过程中使用变量名称来做计算,常见的变量名称有 i 、 x 、 j 等等。



使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
14#
 楼主| 发表于 2013-11-13 16:21 | 只看该作者
习题 5: 更多的变量和输出


我们现在要输入更多的变量并且将它们打印出来,这次我们将使用一个叫「格式化字符串(format string)」的东西,每一次你使用 " 将一些文字包起来,你就建立一个字符串。字符串是程序将信息展示给人的方式。你可以打印出他们,可以将它们写入文件,还可以将它们发给网站服务器等等。
字符串是很好用的东西,所以在这个练习中你将学会如何创造包含变量内容的字符串,使用专门的格式和语法将变量的内容放到字符串里,相当于来告诉 Ruby: “Hey 这是一个格式化字符串,把这些变量放到那几个位置上”
如常,即使你还不懂这些内容,只要一字不差的输入就可以了。


  1. my_name = 'Zed A. Shaw'
  2. my_age = 35 # not a lie
  3. my_height = 74 # inches
  4. my_weight = 180 # lbs
  5. my_eyes = 'Blue'
  6. my_teeth = 'White'
  7. my_hair = 'Brown'
  8. puts "Let's talk about %s." % my_name
  9. puts "He's %d inches tall." % my_height
  10. puts "He's %d pounds heavy." % my_weight
  11. puts "Actually that's not too heavy."
  12. puts "He's got %s eyes and %s hair." % [my_eyes, my_hair]
  13. puts "His teeth are usually %s depending on the coffee." % my_teeth
  14. # this line is tricky, try to get it exactly right
  15. puts "If I add %d, %d, and %d I get %d." % [my_age, my_height, my_weight, my_age + my_height + my_weight]
复制代码


你应该看到的结果


  1. $ ruby ex5.rb
  2. Let's talk about Zed A. Shaw.
  3. He's 74 inches tall.
  4. He's 180 pounds heavy.
  5. Actually that's not too heavy.
  6. He's got Blue eyes and Brown hair.
  7. His teeth are usually White depending on the coffee.
  8. If I add 35, 74, and 180 I get 289.
  9. $
复制代码




加分习题
  • 修改所有的变量名称,把它们前面的 my_ 去掉,确认将每一个地方的都改掉,不只是你使用 = 赋值过的地方。
  • 试着使用更多的格式化字符串。
  • 在网络上搜寻所有的 Ruby 格式化字符串。
  • 试着使用变量将英吋和磅转换成公分和公斤。不要直接输入答案,使用 Ruby 的数学计算来完成。



使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
15#
 楼主| 发表于 2013-11-14 15:41 | 只看该作者
习题 6: 字符串(string)和文字


虽然你已经在程序中写过字符串了,但你还没学过它们的用处。在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么东西。


字符串通常是指你想要展示给别人的,或者是你想要从程序里「导出」的一小段字符。Ruby 可以通过文字里的双引号 " 或者是单引号 ' 识别出字符串来。这在以前的 puts练习中你已经见过很多次了。如果你把单引号或者双引号括起来的文字放到 puts 后面,他们就会被 Ruby 打印出来。


字符串可以包含你目前学过的格式化字符串。你只要将格式化的变量放到字符串中,跟着一个百分比符号 % (percent),再紧跟着变量名称即可。唯一要注意的地方,是如果你想要在字符串中通过格式化字符串放入多个变量的结果,你需要将变量放到 [] 中括号(brackets) 中,而且变量之间用 , 逗号(comma)隔开。就像你逛商店时说「我要买牛奶、面包、鸡蛋、汤」一样,只不过程序员说的是”[milk, eggs, bread, soup]”。


另一种方式是使用字符串插值 (string interpolation) 这种技巧,将变量注入到你的字符串中。方法是使用 #{} 井号和大括号(pound and curly brace)。与其使用这种格式化字符串


  1. name1 = "Joe"
  2. name2 = "Mary"
  3. puts "Hello %s, where is %s?" % [name1, name2]
复制代码


我们可以键入:


  1. name1 = "Joe"
  2. name2 = "Mary"
  3. puts "Hello #{name1}, where is #{name2}?"
复制代码

我们将键入大量的字符串、变量和格式化字符串,并且将它们打印出来。我们还将练习使用简写的变量名称。程序员喜欢使用恼人的隐晦简写来节省打字时间,所以我们现在就将提早学会这件事,这样你就能读懂并写出这些东西了。


  1. x = "There are #{10} types of people."
  2. binary = "binary"
  3. do_not = "don't"
  4. y = "Those who know #{binary} and those who #{do_not}."

  5. puts x
  6. puts y

  7. puts "I said: #{x}."
  8. puts "I also said: '#{y}'."

  9. hilarious = false
  10. joke_evaluation = "Isn't that joke so funny?! #{hilarious}"

  11. puts joke_evaluation

  12. w = "This is the left side of..."
  13. e = "a string with a right side."

  14. puts w + e
复制代码


你应该看到的结果


  1. There are 10 types of people.
  2. Those who know binary and those who don't.
  3. I said: There are 10 types of people..
  4. I also said: 'Those who know binary and those who don't.'.
  5. Isn't that joke so funny?! false
  6. This is the left side of...a string with a right side.
复制代码


加分习题


遍历代码,在每一行的上面写一行注释,给自己解释这一行的作用。
找到所有的「字符串包含字符串」的位置,总共有四个位置。
你确定只有四个位置吗?你怎么知道的?说不定我在骗你呢。
解释一下为什么 w 和 e 用 + 连起来就可以生成一个更长的字符串。

使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
16#
 楼主| 发表于 2013-11-14 15:52 | 只看该作者
习题7: 更多输出


现在我们将做一批练习,在练习的过程中你需要输入代码,并且让它们运行起来,我不会解释太多,因为这节的内容都是以前熟悉的。这节练习的目的是巩固你学到的东西,我们几轮练习后再见。不要跳过这些习题,不要复制粘贴!


  1. puts "Mary had a little lamb."
  2. puts "Its fleece was white as %s." % 'snow'
  3. puts "And everywhere that Mary went."
  4. puts "." * 10  # what'd that do?

  5. end1 = "C"
  6. end2 = "h"
  7. end3 = "e"
  8. end4 = "e"
  9. end5 = "s"
  10. end6 = "e"
  11. end7 = "B"
  12. end8 = "u"
  13. end9 = "r"
  14. end10 = "g"
  15. end11 = "e"
  16. end12 = "r"

  17. # notice how we are using print instead of puts here. change it to puts
  18. # and see what happens.
  19. print end1 + end2 + end3 + end4 + end5 + end6
  20. print end7 + end8 + end9 + end10 + end11 + end12

  21. # this just is polite use of the terminal, try removing it
  22. puts
复制代码


你应该看到的結果


  1. $ ruby ex7.rb
  2. Mary had a little lamb.
  3. Its fleece was white as snow.
  4. And everywhere that Mary went.
  5. ..........
  6. CheeseBurger
  7. $
复制代码




加分习题


接下来几节的加分习题是一样的。
  • 逆向阅读,在每一行的上面加一行注释。
  • 倒着阅读出来,找出自己的错误。
  • 从现在开始,把你的错误记录下来,写在一张纸上。
  • 在开始下一节习题时,阅读一遍你记录下来的错误。并且尽量避免在下个练习中再犯相同的错误。
  • 记住,每个人都会犯错。程序员和魔术师一样,他们希望大家认为他们从不犯错,不过这只是表象而已,他们每时每刻都在犯错。



使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
17#
 楼主| 发表于 2013-11-14 16:00 | 只看该作者
习题 8: 输出,输出


  1. formatter = "%s %s %s %s"

  2. puts formatter % [1, 2, 3, 4]
  3. puts formatter % ["one", "two", "three", "four"]
  4. puts formatter % [true, false, false, true]
  5. puts formatter % [formatter, formatter, formatter, formatter]
  6. puts formatter % [
  7.     "I had this thing.",
  8.     "That you could type up right.",
  9.     "But it didn't sing.",
  10.     "So I said goodnight."
  11. ]
复制代码


你应该看到的结果
  1. $ ruby ex8.rb
  2. 1 2 3 4
  3. one two three four
  4. true false false true
  5. %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
  6. I had this thing. That you could type up right. But it didn't sing. So I said goodnight.
  7. $
复制代码


加分习题


自己检查结果,记录你犯过的错误,并且在下个练习中尽量不犯相同的错误。


使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
18#
 楼主| 发表于 2013-11-14 16:06 | 只看该作者
习题 9: 输出,输出,输出


  1. # Here's some new strange stuff, remember type it exactly.

  2. days = "Mon Tue Wed Thu Fri Sat Sun"
  3. months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"

  4. puts "Here are the days: ", days
  5. puts "Here are the months: ", months

  6. puts <<PARAGRAPH
  7. There's something going on here.
  8. With the three double-quotes.
  9. We'll be able to type as much as we like.
  10. Even 4 lines if we want, or 5, or 6.
  11. PARAGRAPH
复制代码


你应该看到的结果
  1. $ ruby ex9.rb
  2. Here are the days:  
  3. Mon Tue Wed Thu Fri Sat Sun
  4. Here are the months:
  5. Jan
  6. Feb
  7. Mar
  8. Apr
  9. May
  10. Jun
  11. Jul
  12. Aug
  13. There's something going on here.
  14. With the three double-quotes.
  15. We'll be able to type as much as we like.
  16. Even 4 lines if we want, or 5, or 6.
复制代码


加分习题


自己检查结果,记录你犯过的错误,并且在下个练习中尽量不犯相同的错误。


使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
19#
 楼主| 发表于 2013-11-14 16:59 | 只看该作者
习题 10: 那是什么?


在习题 9 中我丢给你了一些新东西。我让你看到两种让字符串扩展到多行的方法。第一种方法是在月份中间用 \n (back-slash n) 隔开。这两个字符的作用是在该位置上放入一个「新行(new line)」字符。


使用反斜线 \ (back-slash) 可以将难打印的字符放到字符串里。针对不同的符号有很多这样的所谓「跳脫序列(escape sequences)」,但有一個特殊的跳脫序列,就是 \ 双反斜线( double back-slash)。这两个字符组合会打印出一个反斜线来。接下来我们做几个练习,然后你就知道这些跳脱序列的意义了。


另外一种重要的跳脱序列是用来将单引号 ' 和双引号 " 跳脱。想象你有一个用双引号括起来的字符串,你想要在字符串里的内容里面在加入一组双引号进去,比如你想说" I "understand" joke." ,Ruby就认为 "understand" 前后的两个引号是字符串的边界,从而把字符串弄错。你需要一种方法告诉Ruby字符串里面的双引号不是真正的双引号。


要解决这个问题,你需要将双引号和单引号跳脱,让 Ruby 将引号也包含到字符串里面去。这里有一个例子:


  1. "I am 6'2\" tall."  # escape double-quote inside string
  2. 'I am 6\'2" tall.'  # escape single-quote inside string
复制代码


第二种方法是使用文件语法(document syntax),也就是 <<NAME ,你可以在输入 NAME 前放入\ 任意多行的文字。接下來你可以看到如何使用。


  1. tabby_cat = "\tI'm tabbed in."
  2. persian_cat = "I'm split\non a line."
  3. backslash_cat = "I'm \\ a \\ cat."

  4. fat_cat = <<MY_HEREDOC
  5. I'll do a list:
  6. \t* Cat food
  7. \t* Fishies
  8. \t* Catnip\n\t* Grass
  9. MY_HEREDOC

  10. puts tabby_cat
  11. puts persian_cat
  12. puts backslash_cat
  13. puts fat_cat
复制代码




你应该看到的结果
注意你打出來的 tab 字符,这节练习中的文字间隔符号对于答案的正确性是很重要的。


  1. $ ruby ex10.rb
  2.     I'm tabbed in.
  3. I'm split
  4. on a line.
  5. I'm \ a \ cat.
  6. I'll do a list:
  7.     * Cat food
  8.     * Fishies
  9.     * Catnip
  10.     * Grass

  11. $
复制代码


加分习题


  • 上网搜索一下还有哪些可用的跳脱字符。
  • 结合跳脱序列和格式化字符串,创造一种复杂的格式。



使用道具 举报

回复
论坛徽章:
1056
紫蜘蛛
日期:2015-09-22 15:53:22紫蜘蛛
日期:2015-10-15 13:48:52紫蜘蛛
日期:2015-10-15 14:45:48紫蜘蛛
日期:2015-10-15 14:47:47紫蜘蛛
日期:2015-10-15 14:48:45九尾狐狸
日期:2015-09-22 15:53:22九尾狐狸
日期:2015-10-15 13:50:37九尾狐狸
日期:2015-10-15 14:45:48九尾狐狸
日期:2015-10-15 14:47:47九尾狐狸
日期:2015-10-15 14:48:45
20#
 楼主| 发表于 2013-11-15 15:02 | 只看该作者
習題 11: 提問

我已經出過很多有關於印出的習題,讓你習慣寫出簡單的東西,但簡單的東西都有點無聊,我們現在要做的的事是把資料(data)讀到你的程式裡面去。這對你可能會有點難度,你可能一下子搞不明白,不過相信我,無論如何先把習題做了再說。只要做幾道練習你就明白了。

一般軟體做的事情主要就是下面幾件:
  • 接受人的輸入。
  • 改變輸入值。
  • 印出改變了的值。


到目前為止你只做了印出,但還不會接受或修改人的輸入。你還不知道「輸入(input)」是什麼意思。閒話少說,我們還是開始做點習題看你能不能明白,下一道習題裡面我們將會有更詳細的解釋。


  1. print "How old are you? "
  2. age = gets.chomp()
  3. print "How tall are you? "
  4. height = gets.chomp()
  5. print "How much do you weigh? "
  6. weight = gets.chomp()

  7. puts "So, you're #{age} old, #{height} tall and #{weight} heavy."
复制代码

Note: 注意到我們是使用 print 而非 puts 嗎? print 不會自動產生新行。這樣你的答案就可以跟問題在同一行了。換句話說,puts 會自動產生新行。

你應該看到的結果

  1. $ ruby ex11.rb How old are you? 35 How tall are you? 6’2” How much do you weigh? 180lbs So, you’re ‘35’ old, ‘6'2”’ tall and ‘180lbs’ heavy. $
复制代码

加分習題

  • 上網搜尋一下 Ruby 的 gets 和 chomp 的功能是什麼?
  • 你能找到 gets.chomp 別的用法嗎?測試一下你上網找到的例子。
  • 用類似的格式再寫一段,把問題改成你自己的問題。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表