为什么python在我运行我的程序时会出现“expected a indented block”错误?

2024-10-02 02:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让我的程序限制用户可以输入的内容。它一直从我下面的代码返回一个“预期的缩进块”错误。在

deliverydetails = input("Is your order for delivery?\n Press 1 for delivery. Press 2 for pickup")

if deliverydetails == "1":

##    def delivery ():

    print ("Order for Delivery")
    customerfirstname = " "
    while len(customerfirstname) <3 or len(customerfirstname)>30 or customerfirstname.isalpha() != True:
    customerfirstname = input("Customer First Name: ** must be 4 characters long  + " ")                         
    while len(customersurname) < 3 or len(customersurname) > 30 or     customerfirstname.isalpha() != True:                        
    customersurname = input("Customer Surname:" + " ")
    customerstreet = input("Street name:" + " ")
    customerstreetnumber = input("Street number:" + " ")
    customercity = input("City:" + " ")
    customersuburb = input("Suburb (If none, leave blank):" + " ")
    latestOrder.append(customerfirstname)
    latestOrder.append(customersurname)
    latestOrder.append(customerstreet)
    latestOrder.append(customerstreetnumber)
    latestOrder.append(customercity)
    latestOrder.append(customersuburb)

Tags: ortrueforinputlencustomerpressdelivery
3条回答

确保将作为循环一部分的行缩进。这是Python知道要循环哪个部分的唯一方法。在

delivery_details = input("Is your order for delivery?\n Press 1 for delivery. Press 2 for pickup")

if delivery_details == "1":
    print "Order for Delivery"

    customer_first_name = ""
    while len(customer_first_name) < 3 or len(customer_first_name) > 30 or not customer_first_name.isalpha():
        customer_first_name = input("First name (must be 4 characters long): ")

    customer_surname       = input("Surname: ")
    customer_street        = input("Street name: ")
    customer_street_number = input("Street number: ")
    customer_city          = input("City: ")
    customer_suburb        = input("Suburb (If none, leave blank): ")

    latest_order.append(customer_first_name)
    latest_order.append(customer_surname)
    latest_order.append(customer_street)
    latest_order.append(customer_street_number)
    latest_order.append(customer_city)
    latest_order.append(customer_suburb)

为了便于阅读,我做了一些风格上的修改。变量名中的一些额外的空格、空行和下划线使一切看起来更容易一些。在

Python使用意向而不是{}begin/end,因此例如这一行

while len(customerfirstname) <3 or len(customerfirstname)>30 or customerfirstname.isalpha() != True:

后面应该跟一个缩进的块。缩进的块可以像单行一样短,通常应该比while多缩进4个空格

旁白:把这句话写成

^{pr2}$

Python使用缩进来分组代码块。在while语句之后,您需要缩进它下面应该在while循环中执行的行。在

以下是一些其他可能有用的提示: -使用pylint检查语法。它将发现许多错误,否则只能在运行时发现这些错误。 -使用空格缩进。不要使用制表符。这是一个pep8风格的推荐

以下是您的代码的更正版本:

deliverydetails = input("Is your order for delivery?\n Press 1 for delivery. Press 2 for pickup")

if deliverydetails == "1":
##    def delivery ():
    print ("Order for Delivery")
    customerfirstname = " "
    customersurname = " "

    while len(customerfirstname) <3 or len(customerfirstname)>30 or customerfirstname.isalpha() != True:
        customerfirstname = input("Customer First Name: ** must be 4 characters long  + " ")                         

    while len(customersurname) < 3 or len(customersurname) > 30 or     customerfirstname.isalpha() != True:                        
        customersurname = input("Customer Surname:" + " ")

    customerstreet = input("Street name:" + " ")
    customerstreetnumber = input("Street number:" + " ")
    customercity = input("City:" + " ")
    customersuburb = input("Suburb (If none, leave blank):" + " ")
    latestOrder.append(customerfirstname)
    latestOrder.append(customersurname)
    latestOrder.append(customerstreet)
    latestOrder.append(customerstreetnumber)
    latestOrder.append(customercity)
    latestOrder.append(customersuburb)

相关问题 更多 >

    热门问题