我正在编写一个简单的 Perl 脚本,该脚本根据用户给出的小时数计算付款,该程序不得允许超过 500 小时的付款,但必须允许女性最多 600 小时,我正在使用 except 函数,但它不起作用女性的工作时间可以超过600小时。
这是我使用的代码
print("Enter your working hours");
$hours=<stdin>;
print("Enter your gender");
$gender=<stdin>;
chomp($gender);
unless($gender ne "f" && $hours>=600){
print("Your have earned ",$hours*10," Birr \n");
}
else{
unless($hours>=500){
print("Your have earned ",$hours*10," Birr \n");
}
else{
print("You have worked beyond the payable hrs!");
}
}
Run Code Online (Sandbox Code Playgroud)
分解它。
女性的工作时间可以超过600小时。
让我们尝试一些测试数据。
$gender = "f";
$hours = 750;
Run Code Online (Sandbox Code Playgroud)
将其输入到您的测试中:
unless($gender ne "f" && $hours>=600){
Run Code Online (Sandbox Code Playgroud)
将变量替换为值
unless("f" ne "f" && 750>=600){
Run Code Online (Sandbox Code Playgroud)
将测试转换为布尔值
unless(false && true){
Run Code Online (Sandbox Code Playgroud)
解决逻辑运算符
unless(false);
Run Code Online (Sandbox Code Playgroud)
这意味着它运行表达式。
你把自己与双重否定搞混了。
尝试通过拆分逻辑并避免否定来简化逻辑。
my $allowedHours = 500;
if ($gender eq "f") {
$allowedHours = 600;
}
if ($hours <= $allowedHours) {
# report
} else {
# error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |