Форум сайта python.su
0
Здравствуйте, уважаемые программисты
Учусь в 11 классе, раньше проходила С++, сейчас новый учитель переучивает на Python. Решить данную задачу я на Python не смогла.. Помогите, пожалуйста!
Условие:![]()
Решение на С++
#include<iostream>
class Mail{
private:
std::string box, server;
public:
Mail(std::string s){
SetMail(s);
}
void SetMail(std::string s){
std::string::size_type ind=s.find('@');
box.assign(&s, &s);
server.assign(&s, &s);
}
std::string GetMail()const{
return box+“@”+server;
}
void SetBox(std::string s){
box=s;
}
void SetServer(std::string s){
server=s;
}
};
int main(){
Mail a(“mybox@mail.ru”);
std::cout<<a.GetMail()<<“\n”;
a.SetBox(“myotherbox”);
std::cout<<a.GetMail()<<“\n”;
a.SetServer(“yandex.ru”);
std::cout<<a.GetMail()<<“\n”;
}
Офлайн
49
#!/usr/bin/env python # -*- coding: utf-8 -*- class Mail: def __init__(self, email): self.email = email self.set_mail() def set_mail(self): self.box = self.email.split('@')[0] self.server = self.email.split('@')[1] def get_mail(self): return self.box + '@' + self.server def set_box(self, box): self.box = box def set_server(self, server): self.server = server if __name__ == '__main__': a = Mail('mybox@mail.ru') print(a.get_mail()) a.set_box('myotherbox') print(a.get_mail()) a.set_server("yandex.ru") print(a.get_mail())
Офлайн
857
AlenНадо передавать аргумент, иначе метод бесполезен.def set_mail(self):
#!/usr/bin/env python3 # создаёт объект для хранения почтового адреса class Mail: def __init__(self, s): self.set_mail(s) def set_mail(self, s): self.box, self.server = s.split('@') def get_mail(self): return self.box + '@' + self.server def set_box(self, s): self.box = s def set_server(self, s): self.server = s def main(): a = Mail('mybox@mail.ru') print(a.get_mail()) a.set_box('myotherbox') print(a.get_mail()) a.set_server('yandex.ru') print(a.get_mail()) if __name__ == '__main__': main()
[guest@localhost py]$ ./mailbox.py
mybox@mail.ru
myotherbox@mail.ru
myotherbox@yandex.ru
[guest@localhost py]$
Отредактировано py.user.next (Фев. 16, 2015 07:34:44)
Офлайн
49
py.user.next
Надо передавать аргумент, иначе метод бесполезен.
Офлайн
857
box = Mail('x@x') print(box.get_mail()) box.set_mail('y@y') print(box.get_mail())
Офлайн
72
py.user.nextget_mail, set_mail это у вас осталось в с++
Перевёл cpp'шный код
Офлайн
857
PooH
get_mail
[guest@localhost ~]$ python3 -mtimeit -s 'box = "box"; server = "server"' 'box + "@" + server'
1000000 loops, best of 3: 0.264 usec per loop
[guest@localhost ~]$ python3 -mtimeit -s 'box = "box"; server = "server"' '"@".join((box, server))'
1000000 loops, best of 3: 0.284 usec per loop
[guest@localhost ~]$
Офлайн
72
py.user.nextЭто к чему? Я имел ввиду, что get_ set_ чисто плюсовый стиль, за неимением property
$ python3 -mtimeit -s ‘box = “box”; server = “server”’ ‘box + “@” + server’
1000000 loops, best of 3: 0.264 usec per loop
$ python3 -mtimeit -s ‘box = “box”; server = “server”’ ‘“@”.join((box, server))’
1000000 loops, best of 3: 0.284 usec per loop
$
Офлайн
857
PooHДа property рано ещё для школы, она же школьница (ну, по легенде).
get_ set_ чисто плюсовый стиль, за неимением property
PooHНу, я и подумал, что не то в get_mail и set_mail, если я их в точности перевёл, минуя лишний момент с индексом.
Это к чему?
s.split('@', 1)
Отредактировано py.user.next (Фев. 17, 2015 06:01:06)
Офлайн