Ich erhalte einen Syntaxfehler bei der Wortvermietung und habe einfach keine Ahnung, was ich falsch gemacht habe. Das ist wie mein 6. Programm. Alle Vorschläge sind hilfreich.

#Computes Cable Bill

print("Welcome to cable customer billing calculator")
acct = int(input("Enter an account number"))
cust_type = input("Enter customer type: (R) Residential or (B) Business: ")

def residential():
    processing = 4.50
    basic_service = 20.50
    daily_rental = 2.99
    prem_channel_fee = 7.50
    prem_channels = int(input("Enter the number of premium channels used: ")
    rental = int(input("Were movies rented (Y or N): ")
        if rental == Y or y:
            rental_days = int(input("Enter the total number of rental days (one day for each movie, each day): ")
        else:
            rental_days = 0
    bill_amt = processing + basic_service + (rental_days * daily_rental) + (prem_channels * prem_channel_fee)
    return (bill_amt)

def business():
    processing = 15
    basic_service = 75
    prem_channel_fee = 50
    connections = int(input("Enter the number of basic service connections: ")
    prem_channels = int(input("Enter the number of premium channels used: ")
        if (connections <= 10):
            bill_amt = processing + basic_service + (prem_channel * prem_channel_fee)
        else:
            bill_amt = processing + basic_service + ((connections - 10) * 5) + (prem_channel * prem_channel_fee)
    return (bill_amt)

if (cust_type == "R" or "r"):
    bill_total = residential()
else:
    bill_total = business()

print("Account number: ", acct)
print("Amount due: ",bill_total)
0
WClark97 25 Nov. 2013 im 12:39

3 Antworten

Beste Antwort

Sie müssen schließende Klammern hinzufügen, wie im folgenden Snippet dargestellt, und sicherstellen, dass die erste Zeile Ihrer Bedingungen mit der vorherigen Zeile übereinstimmt. Ziehen Sie auch in Betracht, den Wert von rental mit einer Liste gültiger Antworten abzugleichen. Dies ist eine pythonischere Art, die von Ihnen vorgeschlagene Logik zu schreiben:

prem_channels = int(input("Enter the number of premium channels used: "))
rental = int(input("Were movies rented (Y or N): "))
if rental in ['Y', 'y']:
    rental_days = input("Enter the total number of rental days (one day for each movie, each day): ")

Ebenso müssen die folgenden Zeilen in Klammern geschlossen werden:

connections = int(input("Enter the number of basic service connections: "))
prem_channels = int(input("Enter the number of premium channels used: "))

Ersetzen Sie die Logik Ihrer endgültigen Bedingung wie oben:

if (cust_type in ["R", "r"]):

Oder alternativ (aber weniger pythonisch):

if (cust_type == "R" or cust_type == "r"):

Beachten Sie schließlich, dass input("Were movies rented (Y or N): ") eine Zeichenfolge zurückgibt und daher nicht in eine Ganzzahl umgewandelt werden sollte. Wenn Sie es mit int() umwandeln, erhalten Sie einen Tippfehler und if rental in ['Y', 'y']: wird niemals zu true ausgewertet.

2
zeantsoi 25 Nov. 2013 im 09:27

Folgendes sollte Ihnen helfen.

rental = str(input("Were movies rented (Y or N): "))
if rental == "Y" or rental == "y":

Von zeantsoi gesammelte Punkte sind ebenfalls gültig. Bitte berücksichtigen Sie sie auch.

1
Community 23 Mai 2017 im 11:56
if rental == 'Y' or rental == 'y':

Sollte das lösen

1
pynovice 25 Nov. 2013 im 08:41