Форум сайта python.su
0
Здравствуйте!
Знаю, что вопрос глупый, но в гугле не удалось найти ответ. Есть код, который преобразует введенный текст и выдает результат. Только результат выдается по букве, в столбец.
i=raw_input('Enter secret text:') al1='ABCDEFGHIJKLMNOPQRSTUWXYZ' al2='abcdefghijklmnopqrstuwxyz' list=list(i) while ' ' in list: list.remove(' ') key=int(raw_input('Enter desired key:')) for letter in list: if letter in al1: print al1[int(al1.find(letter))+key] elif letter in al2: print al2[int(al2.find(letter))+key]
Офлайн
103
никогда так не делайте!
list=list(i)
Aspergoесть, но код будет некрасив
Есть ли какой-то метод?
i=raw_input('Enter secret text:') al1='ABCDEFGHIJKLMNOPQRSTUWXYZ' al2='abcdefghijklmnopqrstuwxyz' list=list(i) while ' ' in list: list.remove(' ') key=int(raw_input('Enter desired key:')) s = '' for letter in list: if letter in al1: s += al1[int(al1.find(letter))+key] elif letter in al2: s += al2[int(al2.find(letter))+key] print s
i=raw_input('Enter secret text:') key=int(raw_input('Enter desired key:')) al1='ABCDEFGHIJKLMNOPQRSTUWXYZ' al2='abcdefghijklmnopqrstuwxyz' f = lambda al, j: al[(al.index(j) + key) % len(al)] print ''.join(f((al1, al2)[j.islower()], j) for j in i)
Отредактировано terabayt (Март 11, 2015 05:07:02)
Офлайн
568
import string alphabet = string.ascii_lowercase in_text = raw_input('Enter text') key = input("Enter key") mapper = zip(alphabet, alphabet[key:] + alphabet[:key]) mapper = mapper + [(k.upper(), v.upper()) for k, v in mapper] mapper = dict(mapper) out_text = "".join(mapper.get(x, x) for x in in_text) print out_text
Офлайн
7
Автор, вот то что Вам нужно:
import sys i=raw_input('Enter secret text:') al1='ABCDEFGHIJKLMNOPQRSTUWXYZ':) al2='abcdefghijklmnopqrstuwxyz' list=list(i) while ' ' in list: list.remove(' ') key=int(raw_input('Enter desired key:')) for letter in list: if letter in al1: sys.stdout.write(al1[int(al1.find(letter))+key]) elif letter in al2: sys.stdout.write(al2[int(al2.find(letter))+key])

list=list(i) while ' ' in list: list.remove(' ')
i = raw_input('Enter secret text:').replace(' ', '')
for letter in i: ...
import sys i = raw_input('Enter secret text:').replace(' ', '') al1 = 'ABCDEFGHIJKLMNOPQRSTUWXYZ':) al2 = 'abcdefghijklmnopqrstuwxyz' key = int(raw_input('Enter desired key:')) for letter in i: if letter in al1: sys.stdout.write(al1[int(al1.find(letter))+key]) elif letter in al2: sys.stdout.write(al2[int(al2.find(letter))+key])
Отредактировано john123 (Март 11, 2015 10:36:45)
Офлайн
568
john123,
не нужно ему это! За такой говнокод надо линейкой по рукам лупить.
Офлайн
7
FishHookДумаю, если человек постит свои вопросы (особенно такие) в раздел “Python для новичков”, это означает что он действительно новичок
john123,не нужно ему это! За такой говнокод надо линейкой по рукам лупить.

Отредактировано john123 (Март 11, 2015 10:20:21)
Офлайн
568
john123,
Если хочешь помочь человеку, то укажи ему на ошибки. Он же думает, что вот это вот
list=list(i) while ' ' in list: list.remove(' ')
Офлайн
7
FishHookЯ только потом заметил проблему с list(i) и уже исправил сообщение.
Пускай “действительно новичку” это позволено, но ты то зачем это копипастишь? Я уже не говорю, что сам по себе совет менять принт на sys.stdout.write несколько странный.
На американском форуме задаёшь вопрос, тебе дают ответ.Поэтому как сказал кот Леопольд: “Ребята, давайте жить дружно”
На израильском форуме задаёшь вопрос, тебе задают встречный вопрос.
На русском форуме задаёшь вопрос, тебе долго рассказывают, какой ты мудак.
Отредактировано john123 (Март 11, 2015 10:39:46)
Офлайн
568
1.
оператор print автоматически добавляет символ переноса строкичтобы этого избежать достаточно завершить оператор запятой
print i,
int(al1.find(letter))
index = al1.find(letter) if index > -1: print ....
Офлайн
7
FishHookДело в том, что такой вариант будет оставлять пробелы между буквами, что на мой взгляд, не очень подходит к указанному автором варианту.
чтобы этого избежать достаточно завершить оператор запятой
print i,
s = 'abcd' for c in s: print c,
a b c d
Отредактировано john123 (Март 11, 2015 11:12:47)
Офлайн