我的 vip 变量不将 False 作为值,并且始终默认为 True

My vip variable does not take False as a value and always defaults to True

下面是return无论是VIP客户还是普通客户的代码,该列表不会将vip作为False值,始终取True。

Class DonutQueue():
    def arrive(self,name,VIP):

        self.name = name
        self.vip = VIP
        if self.vip==True:
            self.queue2.append(self.name)
            return self.queue2
        else:
            self.queue.append(self.name)
            return self.queue


    def next_customer(self):

        while not self.queue2== []:
            if not self.queue2==[]:
                return self.queue
            else:
                return self.queue2

def main():

    n = int(input("Enter the number of customers you want to add"))
    for i in range(0,n):
        name = input("Enter their name")
        vip= bool(input("Are they a VIP"))
        DonutQueue.arrive(name,VIP)
    print (DonutQueue().next_customer())

下面是输出:

Enter the number of customers you want to add2
Enter their name John
Are they a VIP False
Enter their name Wick
Are they a VIP True
None

为什么我得到 None 作为输出,而当我输入 False 时我的值总是为 True。

以下是调试器值:

i:0
n:2
name: John
vip: True

Python 中的变量区分大小写。因此,当您将输入分配给 vip 时,它永远不会被使用,而是使用 VIP

vip= bool(input("Are they a VIP"))
DonutQueue.arrive(name, vip) #instead of VIP

Python input() 方法读取用户输入并return将其作为字符串。

Python bool() 将始终 return 非空字符串的 True 值和 False 仅当字符串为空.

为了将 vip 的值更正为 bool,您必须手动检查输入字符串

vipString = input("Are they a VIP")
vip = True if vipString == 'yes' else False