smu*_*yiz 1 python email arguments class
当用户输入电子邮件地址时,程序会读取电子邮件并根据其标准(例如yeo.myy@edu.co)显示电子邮件,如标准:
username 是 yeo.myydomain 是 edu.co我知道它与它有关"@".
这是代码
class Email:
def __int__(self,emailAddr):
self.emailAddr = emailAddr
def domain(self):
index = 0
for i in range(len(emailAddr)):
if emailAddr[i] == "@":
index = i
return self.emailAddr[index+1:]
def username(self):
index = 0
for i in range(len(emailAddr)):
if emailAddr[i] == "@" :
index = i
return self.emailAddr[:index]
def main():
emailAddr = raw_input("Enter your email>>")
user = Email(emailAddr)
print "Username = ", user.username()
print "Domain = ", user.domain()
main()
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Traceback (most recent call last):
File "C:/Users/Owner/Desktop/sdsd", line 29, in <module>
main()
File "C:/Users/Owner/Desktop/sdsd", line 24, in main
user = Email(emailAddr)
TypeError: this constructor takes no arguments
Run Code Online (Sandbox Code Playgroud)
def __int__(self,emailAddr):
Run Code Online (Sandbox Code Playgroud)
你的意思是__init__?
def __init__(self,emailAddr):
Run Code Online (Sandbox Code Playgroud)
你的方法中也缺少一些self,你的returns缩进不正确.
def domain(self):
index = 0
for i in range(len(self.emailAddr)):
if self.emailAddr[i] == "@":
index = i
return self.emailAddr[index+1:]
def username(self):
index = 0
for i in range(len(self.emailAddr)):
if self.emailAddr[i] == "@" :
index = i
return self.emailAddr[:index]
Run Code Online (Sandbox Code Playgroud)
结果:
Username = yeo.myy
Domain = edu.co
Run Code Online (Sandbox Code Playgroud)
顺便提一下,我建议partition并rpartition在给定的分隔符上将字符串拆分为两个部分.当然可以手动跟踪指数.
def domain(self):
return self.emailAddr.rpartition("@")[2]
def username(self):
return self.emailAddr.rpartition("@")[0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6816 次 |
| 最近记录: |