Perl与Python编程实践技巧合集

48、编写代码实现:有一个包含名字的数组 @names = qw/ fred betty barney dino wilma pebbles bamm - bamm /,提示用户输入 1 到 7 的数字,每行一个,按 Ctrl - D 结束,根据用户输入的数字输出对应名字。

以下是实现该功能的 Perl 代码:

#!/usr/bin/perl
use strict;
use warnings;

# 定义名字数组
my @names = qw/ fred betty barney dino wilma pebbles bamm-bamm /;

# 提示用户输入
print "请输入 1 到 7 的数字,每行一个,按 Ctrl-D 结束:\n";

while (my $input = <STDIN>) {
    chomp $input;
    if ($input =~ /^[1-7]$/) {
        my $index = $input - 1;
        print $names[$index], "\n";
    } else {
        print "输入无效,请输入 1 到 7 的数字。\n";
    }
}

上述代码首先定义了名字数组 @names ,然后提示用户输入 1 到 7 的数字。在循环中,读取用户输入,去除换行符,检查输入是否为 1 到 7 的数字。如果是,则输出对应名字;否则,提示输入无效。按 Ctrl-D 结束输入。

49、编写代码实现:对用户输入的行进行排序并输出,分别实现输出在一行和分行输出两种情况。

以下是使用Python语言实现的代码示例:

# 获取用户输入的行
lines = []
while True:
    line = input('请输入行内容(输入空行结束):')
    if not line:
        break
    lines.append(line)

# 对输入的行进行排序
sorted_lines = sorted(lines)

# 输出在一行
print('一行输出:', ' '.join(sorted_lines))

# 分行输出
print('分行输出:')
for line in sorted_lines:
    print(line)

上述代码首先通过循环获取用户输入的行,直到用户输入空行结束。接着对输入的行进行排序,然后分别实现了将排序后的行输出在一行和分行输出的功能。

50、编写一个名为 total 的子例程,用于计算传入参数的总和。

以下是编写名为 total 的子例程的代码:

sub total {
    my $sum = 0;
    foreach my $num (@_) {
        $sum += $num;
    }
    return $sum;
}

此子例程接收一个数字列表作为参数,通过遍历该列表将每个数字累加到变量 $sum 中,最后返回总和。

51、使用子程序计算1到1000的数字总和并打印结果。

可以使用 List::Util 模块中的 sum 函数来计算 1 到 1000 的数字总和,示例代码如下:

use List::Util qw(sum);
my $total = sum( 1..1000 );
print $total; # 输出 500500

52、编写子程序average来计算参数列表的平均值,编写子程序above_average来返回参数列表中大于平均值的所有元素。

以下是实现这两个子程序的Perl代码示例:

sub average {
    my $total = 0;
    foreach my $num (@_) {
        $total += $num;
    }
    return $total / scalar @_;
}

sub above_average {
    my $avg = average(@_);
    my @result;
    foreach my $num (@_) {
        if ($num > $avg) {
            push @result, $num;
        }
    }
    return @result;
}

在上述代码中, average 子程序通过遍历传入的参数列表,累加所有元素的值,然后除以元素的数量得到平均值。 above_average 子程序先调用 average 子程序计算平均值,然后遍历参数列表,将大于平均值的元素添加到结果数组中并返回。

53、编写一个子程序greet,使用状态变量记住最后一个打招呼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值