在Python中使用boolean和Sentenial逻辑
试着想出一个代码,用名字和字母数相加,直到你输入“N”或“N”使它停止。 以下是我所拥有的:在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
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”)其他:打印(“没有丹的:(”)