Python 使用字符串和字符循环

Python 使用字符串和字符循环,python,loops,Python,Loops,嘿,伙计们,有人能帮我做点什么吗。我想构建一个循环,其中用户输入应该只包含1个字符“@”,并继续循环,直到用户的输入在其邮件中只包含一个@为止。这有助于构建循环吗? 这是我的最后一个方法,我尝试了很多方法,我删除了,但这是最后一个 mail = input("enter email address: ") count = {} for character in mail: count.setdefault(character, 0) count[charac

嘿,伙计们,有人能帮我做点什么吗。我想构建一个循环,其中用户输入应该只包含1个字符“@”,并继续循环,直到用户的输入在其邮件中只包含一个@为止。这有助于构建循环吗? 这是我的最后一个方法,我尝试了很多方法,我删除了,但这是最后一个

mail = input("enter email address: ")
count = {}

for character in mail:
    count.setdefault(character, 0)
    count[character] = count[character] + 1
x = int(count['@'])
while x != 1:
    print("Invalid mail !! (error in '@')")
    mail = input("Enter valid mail: ")
    print(count)

您需要使用infinte循环并使用if条件中断。您可以这样做:

while True:
    mail = input("enter email address: ")
    count = {}

    for character in mail:
        count.setdefault(character, 0)
        count[character] = count[character] + 1
    x = int(count['@'])

    if not x == 1:
        print("Invalid mail !! (error in '@')")
        continue
    else:
        break

在这里,我使用无限循环和if条件一次又一次地向用户请求新电子邮件,并在它正确后将其中断。

我使用了
count
变量,而不是
字典

count = 0
mail = input('enter email address: ')

while True:
    for character in mail:
        if character == '@':
            count += 1

    if count != 1:
        count = 0
        print('Invalid mail !! (error in \'@\')')
        mail = input('Enter valid mail: ')
    else:
        break

python
中有一个计算字符数的函数。 使用
count
功能,您的代码可以减少为以下内容:

while True:
    mail = input("enter email address: ")
    if mail.count('@') != 1:
        print("Invalid mail !! (error in '@')")
    else:
        break
结果是:

>>> python test.py
enter email address: myemail
Invalid mail !! (error in '@')

enter email address: myemail@provider@com
Invalid mail !! (error in '@')

enter email address: myemail@provider.com

请添加到目前为止您编写的脚本。这段代码有什么问题?您的while循环不会重新评估新输入。