Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2015 12:58:59

Fizik
Зарегистрирован: 2015-01-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

Здравствуйте, программисты! Пожалуйста, помогите перевести решение с Паскаля на Пайтон
Условие задачи: преобразовать строку так, чтобы буквы каждого слова в ней были отсортированы по алфавиту.
Решение на Паскале:
Program ABC;
uses crt;
const
razd:set of char=;
var
st,buf:string;
function sort(st:string):string;
var i,j:integer;
b:char;
begin
for i:=length(st) downto 1 do for j:=1 to i-1 do if st > st then
begin
b:=st;
st:=st;
st:=b;
end;
begin
clrscr;
readln(st);
repeat
if (st in razd) or (length(st)=0) then while st in razd do delete(st,1,1)
else
begin
while (not (st in razd)) and (length(st)>0) do
begin
buf:=buf+st;
delete(st,1,1);
end;
write(sort(buf),' ‘);
buf:=’';
end;
until (length(st)=0) and (length(buf)=0);
readln;
end.

Офлайн

#2 Янв. 27, 2015 13:04:37

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

>>> a = 'hello world'
>>> b = sorted(a)
>>> b
[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
>>> ''.join(b)
dehllloorw



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Янв. 27, 2015 13:05:02)

Офлайн

#3 Янв. 27, 2015 13:25:43

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

Fizik
Пожалуйста, помогите перевести решение с Паскаля на Пайтон
А переводить нужда какая? Может лучше по-новой написать?

Офлайн

#4 Янв. 28, 2015 00:07:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

Fizik
преобразовать строку так, чтобы буквы каждого слова в ней были отсортированы по алфавиту
>>> import re
>>> 
>>> s = 'abcabc defdef ghighi'
>>> 
>>> out = re.sub(
...     r'\w+',
...     lambda mo: ''.join(sorted(mo.group())),
...     s
... )
>>> 
>>> out
'aabbcc ddeeff gghhii'
>>>



Офлайн

#5 Янв. 28, 2015 09:16:23

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

код на паскалея не смог запустить, а разбираться нету времени
лучше, следующий раз, еще и несколько примеров вставляйте
py.user.next

>>> import re
>>> 
>>> s = 'hello_world'
>>> 
>>> out = re.sub(
...     r'\w+',
...     lambda mo: ''.join(sorted(mo.group())),
...     s
... )
>>> 
>>> out
'_dehllloorw'
не знаю как у автора, но мне кажется что символ нижнего подчеркивания говорит о новом слове



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Янв. 29, 2015 03:34:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

terabayt
символ нижнего подчеркивания говорит о новом слове
А где гарантия, что это всё не одно слово?



Офлайн

#7 Янв. 29, 2015 06:56:53

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

py.user.next
А где гарантия, что это всё не одно слово?
1. а где гарантия что через дефис это все не одно слово?
2. украинский знаете? слово “ п'ять ” тоже два слова?



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Янв. 29, 2015 14:08:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Пожалуйста, переведите с Паскаля на Пайтон

terabayt
1. а где гарантия что через дефис это все не одно слово?
В простейшем случае есть слова, состоящие из букв. Чем они разделены? Конечно же пробелами. :)
А вообще, слово должно быть определено точно. Можно вообще написать h_e_l_l_o__w_o_r_l_d - те же два слова.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version