Perl 中的倒金字塔设计

Reversed Pyramid Design in Perl

我需要输入多行和一个字符以用于反向 pyramid.The 输出必须如下所示:

Maximum number of characters in a line : 6
Enter Echo Character : $

$$$$$$
$$$$$
$$$$ 
$$$ 
$$
$

这是我目前拥有的:

print "Maximum number of characters in a line : ";
$size = <>;
print "Enter Echo Character : ";
$character = <>;
chomp($size);

Loop: for $row (1 .. $size)
{
    for $column (1 .. ($size+1))
    {
        if ($column < $row)
        {
            print "\n";
            next Loop;
        }
        print $character;
    }
}

但我肯定做错了什么,因为在尝试了几个小时后我无法获得我需要的输出。我是 Perl 的新手,非常感谢我能得到的任何帮助。

KMBP:Assignment 13 mypc$ perl pyramidtest.pl 
Maximum number of characters in a line : 6
Enter Echo Character : $
$
$
$
$
$
$
$





KMBP:Assignment 13 mypc$

如果你想要一个 reverse 金字塔,你为什么要从 1 .. $size 设置 $row

为什么要将 $column 的范围末尾设置为 $size + 1 而不是 $row

为什么你有某种奇怪的逻辑来确定何时打印换行符?

use strict;
use warnings;

print "Maximum number of characters in a line : ";
chomp(my $size = <>);

print "Enter Echo Character : ";
chomp(my $character = <>);

while ($size) {
    for (1 .. $size) {
        print $character;
    }

    print "\n";
    $size--;
}

注意:您可能想要验证 $size 是一个正整数,否则您可能会得到某些输入的意外结果!

x 运算符对此也很有用。

use feature qw(say);

print 'character? ';
chomp(my $char = <STDIN>);
print 'length? ';
chomp(my $length = <STDIN>);

while ($length) {
    say $char x $length;
    $length--;
}