在Python中使用boolean和Sentenial逻辑

在Python中使用boolean和Sentenial逻辑,python,boolean,Python,Boolean,试着想出一个代码,用名字和字母数相加,直到你输入“N”或“N”使它停止。 以下是我所拥有的: def main(): namelength = 0 name = input("Enter a name or N to stop: ") while name!="N": name = len(name) namelength = namelength + name name = inpu

试着想出一个代码,用名字和字母数相加,直到你输入“N”或“N”使它停止。 以下是我所拥有的:

def main():
    namelength = 0
    name = input("Enter a name or N to stop: ")                   

    while name!="N":
        name = len(name)
        namelength = namelength + name
        name = input("Enter a name or N to stop: ")

        N = False
        if name == "n" or "N":
            N = True    
            if N == True:
                    print(namelength)

main()

它使用N和N,但它会打印每个条目的名称长度。无法修复它。有人知道我哪里出错了吗?提前谢谢

如果不希望在每次迭代中打印,则需要将
print(namelength)
移动到循环外部,如注释中所述,
print
前面的两行是多余的,请删除它们。还请注意以下几点:

状况

if name == "n" or "N" 
将始终感到满意,因为它相当于

if (name == "n") or ("N")
因为
bool('N')
True
,所以您总是会得到
True


换成

if name == "n" or name == "N"
或者更好

if name in ['n', 'N']
甚至

if name.lower() == 'n'

if name==“n”或“n”
的计算结果为
if(name==“n”)或(“n”)
。当str转换为bool时,它被转换为True,这就是它总是被打印的原因。如果name==“n”或“n”,条件
将检查
name
是否为
n
或“n”,其中该条件将始终为True。因为在python中,falsy值是“”{}、[]、False、0。其中“N”是真实值。删除最后两行并
print(namelength)
outside while loopnamelength=0 name=input(“输入名称或N停止:”)如果name==“N”或“N”,则N=False:N=True while name=“N”和名字=“n”:name=len(name)namelength=namelength+name name=input(“输入名称或n停止:”)如果n==True:print(namelength)namesDan=False如果name在['Dan']:namesDan=True如果namesDan==True:print(“哇,有一个Dan”)其他:打印(“没有丹的:(”)