代码之家  ›  专栏  ›  技术社区  ›  Viqtoh

需要帮助使用数组创建条件语句

  •  0
  • Viqtoh  · 技术社区  · 6 年前

    我想创建一个条件语句,说明从一行中获取数组元素后,数组元素是奇数还是偶数。代码如下:

    #! /usr/bin/perl
    use warnings;
    use strict;
    my $numbers='23 45 34 12 9 3 56';
    chomp $numbers;
    my @getnum= (split(/ /, $numbers));
    my $a;
    if($getnum[0]>10){
      $a=$getnum[0];
      }
    if($a%2==0){
      print $a, " is even";
      }
    else{
    print $a, " is odd";
    }
    

    现在的问题是我只为第一个元素做了这件事。是否有一种方法可以对所有元素执行此操作,而无需为每个元素创建条件语句?谢谢你的帮助!

    1 回复  |  直到 6 年前
        1
  •  3
  •   elcaro    6 年前

    您需要使用 for (或 foreach )循环。

    for my $n (@numbers) {    # Loops over @numbers, assigning each to $n
        if ( $n % 2 == 0 ) {
            print "$n is even"
        }
    }
    

    此外,这是相当不习惯的

    my $numbers='23 45 34 12 9 3 56';
    chomp $numbers;
    my @getnum= (split(/ /, $numbers));
    

    如果有一个字符串要在空格上拆分,那么在Perl中有一种特殊的方法可以做到这一点

    split( ' ', $string );
    

    这将在任意空格上拆分(并将去掉前导空格和尾随空格),例如。

    my @words = split( ' ', '   one two    three  ' );
    # @words is ('one', 'two', 'three')
    

    但如果您只是在脚本本身中硬编码数字,则可以绕过 split 并使用“quote words”语法

    my @numbers = qw( 23 45 34 12 9 3 56 );
    

    希望这有帮助。