python类中的while循环
我试图在我的类中加入一个用户输入的正则表达式检查。我想要一个场景,用户在输入有效的电子邮件地址之前不能继续输入自己的姓名。我当前的代码没有按预期工作 我想这里应该有一个while循环,但在这个类中我很难实现它。非常感谢您的帮助python类中的while循环,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我试图在我的类中加入一个用户输入的正则表达式检查。我想要一个场景,用户在输入有效的电子邮件地址之前不能继续输入自己的姓名。我当前的代码没有按预期工作 我想这里应该有一个while循环,但在这个类中我很难实现它。非常感谢您的帮助 class test: def __init__(self): self.email = input("Enter your email: ") email_check = re.search(r'[\w.-]+@[\w.-]+.\w+',
class test:
def __init__(self):
self.email = input("Enter your email: ")
email_check = re.search(r'[\w.-]+@[\w.-]+.\w+', self.email)
if email_check:
print ('email valid')
else:
print ('email not valid')
self.email = input("Enter your email: ")
sys.exit(0)
self.name = input("Enter your name: ")
首先-您不应该在
\uuuuu init\uuuuu
方法中实现任何此类活动,因为其中一个活动首先用于对象字段初始化。考虑专用的“检查电子邮件”方法,或者任何名称都适用。
现在,关于你的情况:
class test:
def __init(self):
# whatever initialization applies
pass
def init_emails():
emails = []
proceed = True
# if you really in need of do/while loop
while proceed:
email = self.input_email()
# your logic for input
if email is not None:
emails.append(email)
# invalid input or cancel
else:
proceed = False
return input
def input_email(self):
value = input('Enter your email:')
# TODO: validate/check input
return proper_value
你可以这样做
while True:
self.email = input ("Enter email:")
if valid_email:
break
用您验证电子邮件地址的方式替代有效的电子邮件
class test:
def __init__(self):
self.email = self.get_name()
def get_name(self) :
while True:
x = input("Enter your email: ")
if (re.search(r'[\w.-]+@[\w.-]+.\w+', x)) :
return x
您可能还对验证电子邮件地址的方法感兴趣。此脚本的功能如所述,最后打印名称和电子邮件。如果需要使用python2.7,请使用
raw\u input
而不是input
。我对范围内的I使用了,而不是,而为True
,以避免无休止的循环
class test:
def __init__(self):
self.email = self.get_name()
def get_name(self) :
while True:
x = input("Enter your email: ")
if (re.search(r'[\w.-]+@[\w.-]+.\w+', x)) :
return x
#!/usr/bin/env python3
import re
import sys
class Test(object):
def __init__(self):
self.email = None
self.name = None
def get_email(self):
for i in range(3):
email = input('Enter your email: ')
if re.search('[\w.-]+@[\w.-]+.\w+', email):
return email
print('Too many failed attempts!')
sys.exit(1)
def get_name(self):
for i in range(3):
name = input('Enter your name: ')
if name:
return name
print('Too many failed attempts!')
sys.exit(1)
def initialize(self):
self.email = self.get_email()
self.name = self.get_name()
print('"{}" <{}>'.format(self.name, self.email))
if __name__ == '__main__':
t = Test()
t.initialize()
#/usr/bin/env蟒蛇3
进口稀土
导入系统
类别测试(对象):
定义初始化(自):
self.email=无
self.name=None
def get_电子邮件(自我):
对于范围(3)中的i:
电子邮件=输入('输入您的电子邮件:')
如果重新搜索('[\w.-]+@[\w.-]+.\w+',电子邮件):
返回电子邮件
打印('尝试失败次数太多!')
系统出口(1)
def get_名称(自身):
对于范围(3)中的i:
name=input('输入您的姓名:')
如果名称:
返回名称
打印('尝试失败次数太多!')
系统出口(1)
def初始化(自):
self.email=self.get_email()
self.name=self.get_name()
打印(“{}”格式(self.name,self.email))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
t=测试()
t、 初始化()
尝试使用原始输入代替输入。像这样:
self.email = raw_input("Enter your email:")
不会再有错误了。
希望这有帮助。谢谢。这正是我要找的。我支持这样的评论,即这不属于\uuuu init\uuuu
,甚至可能根本不属于类。用户交互可能发生在类之外,除非它是实现用户交互的特定类。如果类发现自己填充了无效数据,则可能会引发一个错误。在Python3中,“input”相当于Python2的原始输入(请参阅)。根据原始代码中print函数(而不是语句)的用法,我假设OP使用的是python3。