1. ホーム
  2. python

[解決済み] 私のコードに「無効なエントリ」と言うことができず、常にintでエラーになります。

2022-02-07 22:57:43

質問

それで、これは私の課題で苦労していることなのですが...。

無効な入力を考慮する必要があります。ドライバーは16歳以上105歳以下でなければなりません。交通違反の回数は0回以下であってはならない。いずれの場合も「無効な入力」というメッセージのみを表示せよ"

年齢の部分はうまくいくのですが、違反の数がどうしてもうまくいきません...どなたかお手伝いいただけないでしょうか?

基本的に私が必要とするものは、私は必要です。

def Invalid_Entry():
    if Violation == float or Violation == str and Violation == int:
    print("Invalid Entry")

が動作しない...これが私の問題です。残りのコードは、必要なものについては正確に動作します。しかし、ユーザーが違反の回数を入力するとき、整数と数値項目のみで、"terms"は入力できないようにする必要があります(意味がわかるでしょうか?

Name = input("What is the customers name? ")

Age = int(input("What is the age of the customer? "))

Violations = int(input("How many violations does the customer have? "))



def main():
    Violation = Number_Violations(Violations)
    Price =  Premium()
    Invalid = Invalid_Entry()

    if Age < 16 or Age >= 106:
        print("Invalid Entry")
    else:
        print(Name, "as a ", Violation, "risk driver, your insurance will cost 
     ", Price)


def Number_Violations(Violations):
    if Violations >= 4:
        return "High"
    elif Violations == 0:
        return "None"
    elif Violations == 1:
        return "Low"
    elif Violations == 2 or 3:
        return "Moderate"
    else:
        Violations != 0
        return "invalid Entry"
    return Violations

def Premium():

    if Violations >= 4 and Age >= 25:
        return "$410.00"
    elif Violations >= 4 and Age < 25:
        return "480.00"
    elif Violations == 3 and Age >= 25:
        return "390.00"
    elif Violations == 3 and Age < 25:
        return "450.00"
    elif Violations == 2 and Age >= 25:
        return "365.00"
    elif Violations == 2 and Age < 25:
        return "405.00"
    elif Violations == 1 and Age >= 25:
        return "315.00"
    elif Violations == 1 and Age < 25: 
        return "$380.00"
    elif Violations == 0 and Age >= 25:
        return "275.00"
    else:
        return "$325"

def Invalid_Entry():
    if Violation == float or Violation == str and Violation == int:
        print("Invalid Entry")


main()

解決方法は?

プログラムの最初に年齢と交通違反の回数の両方をチェックし、条件を満たさない場合は終了するようにすればよい。

if (Age < 16 or Age >= 106 or Violations<0):
    print("Invalid Entry")
    exit()

その解決策としては、exit関数を実行する前にインポートする必要があります。

from sys import exit

*編集 私たちのコメントに従って、以下は動作するはずのコードです。

from sys import exit

Name = input("What is the customers name? ")

# enter age and violations number and check type and value
try:
    Age = int(input("What is the age of the customer? "))
    Violations = int((input("How many violations does the customer have? ")))
except ValueError:
    exit('invalid entry')
if (Violations<0 or Age not in range(16,107)):
    exit('invalid entry')


def main(name, age,violations):
    driver_risk = Number_violations(violations)
    price =  Premium(violations,age)
    print("{} as a {} risk driver, your insurance will cost {}".format(name, driver_risk, price))


def Number_violations(violations):
    if violations == 0:
        return "None"
    elif violations == 1:
        return "Low"
    elif violations in [2,3]:
        return "Moderate"
    else:
        return "High"


def Premium(violations,age):
    if violations >= 4 and age >= 25:
        return "$410.00"
    elif violations >= 4 and age < 25:
        return "480.00"
    elif violations == 3 and age >= 25:
        return "390.00"
    elif violations == 3 and age < 25:
        return "450.00"
    elif violations == 2 and age >= 25:
        return "365.00"
    elif violations == 2 and age < 25:
        return "405.00"
    elif violations == 1 and age >= 25:
        return "315.00"
    elif violations == 1 and age < 25: 
        return "$380.00"
    elif violations == 0 and age >= 25:
        return "275.00"
    else:
        return "$325"


main(Name,Age,Violations)