Helpex - Trao đổi & giúp đỡ Đăng nhập
3

Tôi là một lập trình viên mới bắt đầu viết bằng Python 3.5 cho lớp Khái niệm máy tính III của mình. Tuần này, chúng tôi đang làm việc về xác thực dữ liệu bằng cách sử dụng khối thử / ngoại trừ và cờ Boolean, sửa đổi một chương trình mà chúng tôi đã thực hiện vào tuần trước. Tôi gần như đã hoàn thành nhiệm vụ hàng tuần của mình ngoại trừ một điều. Tôi không thể tìm ra lý do tại sao tôi bị mắc kẹt trong một vòng lặp trong khi. Đây là vòng lặp được đề cập:

while not valid_data:
    cont = input("Would you like to order another? (y/n) ")
    if cont.lower not in yorn:
        valid_data = False
    else:
        valid_data = True

yorn["y", "n"]

Đây là toàn bộ chương trình cho ngữ cảnh:

# Program       Lesson 6 Order
# Programmer    Wiley J
# Date          2016.02.13
# Purpose       The purpose of this program is to take an order for cookies.


# Import Class/Format Currency
import locale
locale.setlocale(locale.LC_ALL, '')

# Define Variables
boxes = 0
cost = 3.50
qty = 0
items = 0
yorn = ["y", "n"]

# Banner
print("Welcome to The Cookie Portal")

# Input
valid_data = False

while not valid_data:
    name = input("Please enter your name: ")
    if len(name) > 20:
        print()
        print("Not a valid name")
        valid_data = False
    elif len(name) == 0:
        print("You need to enter a name")
        valid_data = False
    else:
        print("Hello", name)
        valid_data = True

cont = input("Would you like to place an order? (y/n) ")

# Process
while cont.lower() not in yorn:
    cont = input("Would you like to place an order? (y/n) ")

while cont.lower() == "y":

    valid_data = False

    while not valid_data:
        print("Please choose a flavor:")
        print("1. Savannahs")
        print("2. Thin Mints")
        print("3. Tagalongs")
        try:
            flavor = int(input("> "))
            if flavor in range (1, 4):
                items += 1
                valid_data = True
            else:
                valid_data = False
        except Exception as detail:
            print("Error", detail)

    valid_data = False

    while not valid_data:
        try:
            boxes = int(input("How many boxes? (1-10) "))
            if boxes not in range (1, 11):
                print("Please choose a number between 1 and 10")
                valid_data = False
            else:
                qty += boxes
                valid_data = True
        except Exception as detail:
            print("Error", detail)
            print()
            print("Please enter a number")

    valid_data = False

    while not valid_data:
        cont = input("Would you like to order another? (y/n) ")
        if cont.lower not in yorn:
            valid_data = False
        else:
            valid_data = True



# Output
if cont.lower() == "n":
    cost *= qty      
    print()
    print("Order for", name)
    print("-------------------")
    print("Total Items = {}".format(items))
    print("Total Boxes = {}".format(qty))
    print("Total Cost = {}".format(locale.currency(cost)))
    print()
    print("Thank you for your order.")

Tôi sẽ không ngạc nhiên nếu có những vấn đề khác với mã này nhưng chúng rất có thể là do thiết kế theo yêu cầu của nhiệm vụ. Mọi phản hồi bổ sung đều được hoan nghênh.

3 hữu ích 4 bình luận 1.0k xem chia sẻ
3

Có vẻ như bạn đang thiếu hàm-paranthesis ở cuối "thấp hơn", như vậy:

if cont.lower() not in yorn:
3 hữu ích 0 bình luận chia sẻ
2

Vấn đề của bạn là ở đây:

if cont.lower not in yorn:

thấp hơn là một phương pháp, nó phải là:

if cont.lower() not in yorn:
2 hữu ích 0 bình luận chia sẻ
2

Trong mã của bạn, bạn đang làm cont.lower not in yorn. [some string].lowerlà một hàm, không phải một thuộc tính, vì vậy bạn phải gọi nó bằng cách đặt dấu ngoặc đơn sau nó.

cont = input("Would you like to order another? (y/n) ")
if cont.lower() not in yorn:
    valid_data = False
else:
    valid_data = True
2 hữu ích 4 bình luận chia sẻ
1

Bạn thiếu dấu ngoặc đơn sau .lower:

if cont.lower() not in yorn:
1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python python-3.x , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading