• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

寒假【perl语言学习脚本】15.1 15.2 15.3 15.4 15.5

原作者: [db:作者] 来自: [db:来源] 收藏 邀请


#!/usr/bin/perl -w
use experimental ‘smartmatch’;
use 5.010;
my verbose=verbose=ENV{VERBOSE} // 1;
my $secret=int( 1 + rand 100);
print “don’t tell anyone, but the secret number is $secret.\n” if $verbose;
LOOP:{
print “please enter a guess from 1 to 100:”;
chomp(my $guess=);
my foundit=0;given(found_it=0; given(guess){
when(!/\A\d+\Z/){say “not a number!”}
when(>_>secret){say “too high!”}
when(<_<secret){say “too low!”}
default {say “just right!”;$found_it++}
}
last LOOP if KaTeX parse error: Expected 'EOF', got '}' at position 25: … redo LOOP; }̲ #在第一个when中,我们先…ENV{PATH});
#在Perl 5.10中引入了“定义或”操作符//,在发现左边已定义的值时进行短路,无论作弊的值是真是假。
#这些定义或(defined-or)操作符会跟那些逻辑或操作符一样,只是它们测试的是否已经定义,而不是布尔值。
#通过使用//操作符,我们在KaTeX parse error: Expected 'EOF', got '#' at position 25: …SE}未定义的时候设置它为1 #̲windows跑strawbe…found_it++这个必须得有,否则无法终止循环
#循环退出条件,$found_it为1的时候
#转一圈 没猜对 found_it就还是0 就继续循环


#!/usr/bin/perl -w
use experimental ‘smartmatch’;
use 5.010;
given($ARGV[0]){
when(not $_ % 3){say ‘Fizz’;continue}
when(not $_ % 5){say ‘Bin’;continue}
when(not $_ % 7){say ‘sausage’}
}

#given-when结构,根据输入的数字,如果它能被3整除,就打印“Fizz”
#如果它能被5整除,就打印"Bin"
#如果它能被7整除,就打印出"Sausage"
#比如输入数字15,程序应该打印"Fizz"和“Bin"


#!/usr/bin/perl -w
use 5.010;
my $SourcePath = ARGV[0];opendirMYDIR,ARGV[0]; opendir MYDIR,SourcePath or die “can’t open SourcePath:SourcePath :!”;
chdir $SourcePath;
foreach (readdir MYDIR){
say “========================================”;
when(-x KaTeX parse error: Expected '}', got 'EOF' at end of input: _){say "SourcePath/$_ executable!";continue}
when(-r KaTeX parse error: Expected '}', got 'EOF' at end of input: _){say "SourcePath/$_ readable !";continue}
when(-w KaTeX parse error: Expected '}', got 'EOF' at end of input: _){say "SourcePath/KaTeX parse error: Expected 'EOF', got '}' at position 16: _ writable ! "}̲ } closedir MYD…ARGV[0]>";
given(KaTeX parse error: Expected '}', got '\A' at position 19: …V[0]){ when (!/\̲A̲\d+\Z/){ say "n…);
my @empty;
when (@[email protected]){say “number is prime”}
default{say "$
is divisible by @divisors"}
}
sub divisors{
my $number=shift;
my @divisors=();
foreach my divisor(2..divisor(2..number/2){
push @divisors,$divisor unless $number % $divisor;
}
return @divisors;
}

#使用given和智能匹配,从命令行得到一个数字,打印出这个数字除了1和它本身以外的因数
#比如输入99,应该报告3,9,11和33这4个数
#如果输入的数字就是一个质数,程序要报告说明这是质数
#如果输入的不是数字,也应该报告说明输入有误,不会继续计算
#首先汇报正在处理的数字,用尖括号来区分KaTeX parse error: Expected 'EOF', got '#' at position 18: …GV[0]和字符串的其余部分 #̲在given中,我们写了两个w…_,每个when条件都尝试用智能匹配对KaTeX parse error: Expected 'EOF', got '#' at position 7: _进行测试 #̲Perl 5.10 版本中的智…ARGV[0]>";
my favorite=42;given(favorite =42; given(ARGV[0]){
when (!/\A\d+\Z/){ say “not a number!”}
my @divisors =divisors($ARGV[0]);
print “@divisors\n”;

when ((say"_%2 eq 0)){ say "_ is even";
continue;
}
when(!(say"_%2 eq 0)){ say "_ is odd";
continue;
}
foreach(@divisors){
if(favorite==favorite==){
say "KaTeX parse error: Expected 'EOF', got '}' at position 41: …rite number"; }̲ } when(favorite){#  _~~favorite
say "$
is my favorite number";
continue;
}

my @empty;
when (@[email protected]){say "number is prime"}
default{say "$_ is divisible by @divisors"}
}

sub divisors{
my $number=shift;
my @divisors=();
foreach my divisor(2..(divisor(2..(ARGV[0]/2+1)){
push @divisors,$divisor unless $number % $divisor;
}

return @divisors;
}

#odd number意思是奇数。 even number意思是偶数
#even匹配所有索引值为偶数的元素,从 0 开始计数
#odd匹配所有索引值为奇数的元素,从 0 开始计数
#报告数字的奇偶情况,是否是质数(除了1和本身外没有其他课整数的数)
#是否可以被某个你最喜欢的数字整除
#一旦获得@divisors数组,就可以用智能匹配来检查其中内容
#如果2在@divisors里面,就可以断定这是偶数
#智能匹配操作符(~~)会根据需要选择恰当的方式比较两端的操作数。它只用于判断操作数是否相同,在比较大小时就不能用了,


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【做题】sgu189 Perl-like Substr——dark模拟发布时间:2022-07-22
下一篇:
perl脚本去除文件中重复数据发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap