Python while循环不是';我不想回到顶端

Python while循环不是';我不想回到顶端,python,Python,我试着这样做,当我插入我的名字时,它会检查里面是否有数字(成功),以及名字是否太长。一旦我再次输入名称,它会再次检查所有内容。它用于检查数字,但不用于检查是否过长。相反,它只是继续代码 print('Hi!你叫什么名字?')) def nome(): 全球庞托斯 def编号(nomezito): 返回any(nomezito中char的char.isdigit()) 打印(nome+‘有数字’) def longName(longevidade): 返回长度(nome)13 nome=input

我试着这样做,当我插入我的名字时,它会检查里面是否有数字(成功),以及名字是否太长。一旦我再次输入名称,它会再次检查所有内容。它用于检查数字,但不用于检查是否过长。相反,它只是继续代码

print('Hi!你叫什么名字?'))
def nome():
全球庞托斯
def编号(nomezito):
返回any(nomezito中char的char.isdigit())
打印(nome+‘有数字’)
def longName(longevidade):
返回长度(nome)<3或长度(nome)>13
nome=input().title()
编号=编号(nome)
long=longName(nome)
当number==True或long==True时:
如果number==True:
打印('名字不能有任何数字。请告诉我你的真实姓名')
nome=input().title()
编号=编号(nome)
持续
elif long==真:
打印('你的名字太长了,不能是真的。请告诉我你的真名。')
打印(长名称(nome))
nome=input().title()
long=longName(nome)
持续
附言:我把它从葡萄牙语翻译成了英语,这样你可以读得更好,但我可能犯了一些错误。 nome()

def longName(longevidade):
返回len(longevidade)<3或len(longevidade)>13
你没有把“longevidade”作为len()的论点

编辑:这是您的问题,您也没有更新number和long的值

print('Hi! Whats your name?')
def nome():
    global pontos
    def hasNumbers(nomezito):
        return any(char.isdigit() for char in nomezito)
        print(nome + 'has numbers')
    def longName(longevidade):
        return len(longevidade) < 3 or len(longevidade) > 13
    nome = input().title()
    number = hasNumbers(nome)
    long = longName(nome)
    while number == True or long == True:
        if number == True:
            print('A name cant have any numbers. Please tell me your real name')
            nome = input().title()
            number = hasNumbers(nome)
            long = longName(nome)
            continue
        elif long == True:
            print('Your name is too long to be real. Please tell me your real name.')
            print(longName(nome))
            nome = input().title()
            long = longName(nome)
            number = hasNumbers(nome)
            continue
nome()
print('Hi!你叫什么名字?'))
def nome():
全球庞托斯
def编号(nomezito):
返回any(nomezito中char的char.isdigit())
打印(nome+‘有数字’)
def longName(longevidade):
返回len(longevidade)<3或len(longevidade)>13
nome=input().title()
编号=编号(nome)
long=longName(nome)
当number==True或long==True时:
如果number==True:
打印('名字不能有任何数字。请告诉我你的真实姓名')
nome=input().title()
编号=编号(nome)
long=longName(nome)
持续
elif long==真:
打印('你的名字太长了,不能是真的。请告诉我你的真名。')
打印(长名称(nome))
nome=input().title()
long=longName(nome)
编号=编号(nome)
持续
nome()
def longName(longevidade):
返回len(longevidade)<3或len(longevidade)>13
你没有把“longevidade”作为len()的论点

编辑:这是您的问题,您也没有更新number和long的值

print('Hi! Whats your name?')
def nome():
    global pontos
    def hasNumbers(nomezito):
        return any(char.isdigit() for char in nomezito)
        print(nome + 'has numbers')
    def longName(longevidade):
        return len(longevidade) < 3 or len(longevidade) > 13
    nome = input().title()
    number = hasNumbers(nome)
    long = longName(nome)
    while number == True or long == True:
        if number == True:
            print('A name cant have any numbers. Please tell me your real name')
            nome = input().title()
            number = hasNumbers(nome)
            long = longName(nome)
            continue
        elif long == True:
            print('Your name is too long to be real. Please tell me your real name.')
            print(longName(nome))
            nome = input().title()
            long = longName(nome)
            number = hasNumbers(nome)
            continue
nome()
print('Hi!你叫什么名字?'))
def nome():
全球庞托斯
def编号(nomezito):
返回any(nomezito中char的char.isdigit())
打印(nome+‘有数字’)
def longName(longevidade):
返回len(longevidade)<3或len(longevidade)>13
nome=input().title()
编号=编号(nome)
long=longName(nome)
当number==True或long==True时:
如果number==True:
打印('名字不能有任何数字。请告诉我你的真实姓名')
nome=input().title()
编号=编号(nome)
long=longName(nome)
持续
elif long==真:
打印('你的名字太长了,不能是真的。请告诉我你的真名。')
打印(长名称(nome))
nome=input().title()
long=longName(nome)
编号=编号(nome)
持续
nome()

如果用户输入带有数字的名称,则代码将进入
如果number==True:
块。然后,当用户输入另一个名称时,您计算
number=hasNumbers(nome)
,但不再运行
nameLongo
。因此,
long
仍在引用前一个名称是否太长。您需要在两个分支中调用
nameLongo
,在两个分支中调用
hasNumbers

print('Name:')
def nome():
    global pontos
    def temNumeros(nomezito):
        return any(char.isdigit() for char in nomezito)
        print(nome + 'tem numeros')
    def nomeLongo(longevidade):
        return len(nome) < 3 or len(nome) > 13
    nome = input().title()
    number = temNumeros(nome)
    long = nomeLongo(nome)
    while number == True or long == True:
        if number == True:
            print('digits.')
            nome = input().title()
            number = temNumeros(nome)
            long = nomeLongo(nome)
            continue
        elif long == True:
            print('Too long.')
            print(nomeLongo(nome))
            nome = input().title()
            number = temNumeros(nome)
            long = nomeLongo(nome)
            continue

nome()

。。。但最终我认为在循环中只调用一次
input
,比在条件语句的每个分支中调用一次要容易得多

def contains_digits(name):
    return any(char.isdigit() for char in name)

def is_wrong_length(name):
    return len(name) < 3 or len(name) > 13

while True:
    name = input("Name: ")
    if contains_digits(name):
        print("Name can't contain digits.")
    elif is_wrong_length(name):
        print("Name must be between 3 and 13 characters.")
    else:
        #name is valid, so exit the loop
        break

print("Welcome,", name)

如果用户输入带有数字的名称,代码将进入
If number==True:
块。然后,当用户输入另一个名称时,您计算
number=hasNumbers(nome)
,但不再运行
nameLongo
。因此,
long
仍在引用前一个名称是否太长。您需要在两个分支中调用
nameLongo
,在两个分支中调用
hasNumbers

print('Name:')
def nome():
    global pontos
    def temNumeros(nomezito):
        return any(char.isdigit() for char in nomezito)
        print(nome + 'tem numeros')
    def nomeLongo(longevidade):
        return len(nome) < 3 or len(nome) > 13
    nome = input().title()
    number = temNumeros(nome)
    long = nomeLongo(nome)
    while number == True or long == True:
        if number == True:
            print('digits.')
            nome = input().title()
            number = temNumeros(nome)
            long = nomeLongo(nome)
            continue
        elif long == True:
            print('Too long.')
            print(nomeLongo(nome))
            nome = input().title()
            number = temNumeros(nome)
            long = nomeLongo(nome)
            continue

nome()

。。。但最终我认为在循环中只调用一次
input
,比在条件语句的每个分支中调用一次要容易得多

def contains_digits(name):
    return any(char.isdigit() for char in name)

def is_wrong_length(name):
    return len(name) < 3 or len(name) > 13

while True:
    name = input("Name: ")
    if contains_digits(name):
        print("Name can't contain digits.")
    elif is_wrong_length(name):
        print("Name must be between 3 and 13 characters.")
    else:
        #name is valid, so exit the loop
        break

print("Welcome,", name)

如果while循环没有再次播放,则表示您为其提供的语句不正确

你的陈述是正确的

while number == True or long == True:
所以它只运行了一次,因为第二次在循环所有语句之后运行

number == True 
这句话呢

long == True
它不起作用。我建议您单独运行每个语句,看看哪一个是这样工作的,您可以解决这个问题

或者为每个类似的对象创建函数

def number():
    if number == True:
        print('A name cant have any numbers. Please tell me your real name')
        nome = input().title()
        number = hasNumbers(nome)
    else:
       pass

def long():
    if long == True:
        print('Your name is too long to be real. Please tell me your real name.')
        print(longName(nome))
        nome = input().title()
        long = longName(nome)
    else:
        pass

while True:
    number()
    long()

如果while循环没有再次播放,则表示您为其提供的语句不正确

你的陈述是正确的

while number == True or long == True:
所以它只运行了一次,因为第二次在循环所有语句之后运行

number == True 
这句话呢

long == True
它不起作用。我建议您单独运行每个语句,看看哪一个是这样工作的,您可以解决这个问题

或者为每个类似的对象创建函数

def number():
    if number == True:
        print('A name cant have any numbers. Please tell me your real name')
        nome = input().title()
        number = hasNumbers(nome)
    else:
       pass

def long():
    if long == True:
        print('Your name is too long to be real. Please tell me your real name.')
        print(longName(nome))
        nome = input().title()
        long = longName(nome)
    else:
        pass

while True:
    number()
    long()

nomeLongo
中的return语句是否应该引用
longevidade
局部变量?我认为是这样。此外,如果长度小于3或大于13,此函数将返回
True
。这种逻辑似乎是倒退的。与你的问题无关,但不要写