我正在撰寫一個簡單的 perl 腳本,它根據用戶給出的小時數計算付款,并且該程式不得允許超過 500 小時的付款,但必須允許女性最多 600 小時,我正在使用除非函式,但它不起作用它允許女性超過 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!");
}
}
uj5u.com熱心網友回復:
把它分解。
它允許女性超過 600 小時。
讓我們嘗試一些測驗資料。
$gender = "f";
$hours = 750;
將其輸入到您的測驗中:
unless($gender ne "f" && $hours>=600){
用值替換變數
unless("f" ne "f" && 750>=600){
將測驗轉換為布林值
unless(false && true){
決議邏輯運算子
unless(false);
這意味著它運行運算式。
你用雙重否定把自己弄糊涂了。
嘗試通過將邏輯分開并避免否定來簡化邏輯。
my $allowedHours = 500;
if ($gender eq "f") {
$allowedHours = 600;
}
if ($hours <= $allowedHours) {
# report
} else {
# error
}
uj5u.com熱心網友回復:
我總是喜歡在資料結構中預先陳述我的假設。
my %allowable_hours = (
m => 500, # I'm assuming that's your other gender :-)
f => 600,
);
unless (exists $allowable_hours{$gender}) {
die "$gender is an unknown gender\n";
}
if ($hours <= $allowable_hours{$gender}) {
# report
} else {
# error
}
更容易編輯允許的時間和添加新的性別(如果有必要的話)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425550.html
