这里没有软件测试的泛泛理论,只有博主的最佳实践。 博主的研究方向为静态分析和性能测试,致力于各种测试工具的引入、评估和开发。 本博的测试文章均为作者原创,转载请务必注明出处。

小骆驼书作业十:其他控制结构

上一篇 / 下一篇  2008-07-15 16:36:06 / 个人分类:Perl

写一支程序,让用户不断猜测范围从1到100的秘密数字,直到猜中为止。当用户猜错时,程序应该响应“too hight”或"too low"。如果用户键入quit或者exit等字样,或是键入一个空白行,程序就应该中止。当然,如果用户猜对了,程序也应该中止!

#!/usr/bin/perl -w
$target = int(1 + rand 100);
$guess = 0;
print "Start to guess, please input your answer(1-100):\n";
#until($guess == $target)
while(1)
{
 chomp($guess = <STDIN>);
 #if(($guess eq "quit") || ($guess eq "exit"))
 if($guess =~ /^quit$|exit|^\s*$/i) #输入abcexitabc也会导致程序退出,但只有输入quit程序
 {                                  #才会中止,归功于所用的正则表达式不同
  last;
 }
 if($guess > $target)
 {
  print "Too hight.\n"
 }
 elsif($guess < $target)
 {
  print "Too low.\n"
 }
 else
 {
  print "ok. It was $target. You got it. congraulations. \n";
  last;
 }
}

print "Good bye!\n";

题目本身没什么可多说得,没什么难度。这一章相对于正则表达式来讲,属于非常简单的,只需要翻一下书了解即可。

复习笔记

  1. unless控制结构,和if正好相反,虽然unless也可以带else,但基本上很少用
  2. until结构,和while相反
  3. 表达式修饰符 print "$n is a negative num.\n" if $n<0; 即便这样写,if仍然是先执行,这样写的好处在于少打几个括号{}和(),使用这种“倒装句”的写法,可以把重点部分放到前面.
  4. if除了对应else,还可以配对elsif
  5. perl中for控制结构和foreach秘密关联,二者完全可以互换。
  6. last对应C的break,用来退出整个循环;next对应c的continue,用来退出本次循环
  7. redo会跳回当前循环块的顶端,继续本次循环
  8. 逻辑操作符&& ||,以及三目操作符?:和C中一样,不多说
  9. and or也可以表示&& ||,只不过他们的优先级被降到最低,最常见的写法如 open CHAPTER, $filename or die "can not open '$filename':$!";

TAG: Perl

 

评分:0

我来说两句

Open Toolbar