Решения могуть быть совсем разными. Вот некоторые варианты:
Примеры ответов
1
2
Зная, что описание % для строк где-то есть, я тыкал так и нашёл про %e: docs.python.org -> Library reference -> Sequence types: ... str ... -> String methods -> String formatting operations. Так как интересен только порядок, то "floating point exponential format" – это то, что нужно.
3
1 >>> figures = "RNBQKBNR" + "\n"
2 >>> pawns = "p" * 8 + "\n"
3 >>> line1 = " ++" * 4 + "\n"
4 >>> line2 = "++ " * 4 + "\n"
5 >>> white = " ".join(pawns) + line1 + " ".join(figures) + line2
6 >>> black = "#".join(figures) + line1 + "#".join(pawns) + line2
7 >>> print(black + (line1 * 2 + line2 * 2) * 2 + white)
8 R#N#B#Q#K#B#N#R#
9 ++ ++ ++ ++
10 p#p#p#p#p#p#p#p#
11 ++ ++ ++ ++
12 ++ ++ ++ ++
13 ++ ++ ++ ++
14 ++ ++ ++ ++
15 ++ ++ ++ ++
16 ++ ++ ++ ++
17 ++ ++ ++ ++
18 ++ ++ ++ ++
19 ++ ++ ++ ++
20 p p p p p p p p
21 ++ ++ ++ ++
22 R N B Q K B N R
23 ++ ++ ++ ++
Тут я использовал хитрую штуку .join, которую некоторые могли случайно заметить в help(str).
Т.е. "разделитель".join("что-нибудь") сделает строку, в которой между каждыми двумя буквами в "что-нибудь" стоит "разделитель". В некоторых случаях это очень полезная штука.
Некоторые поступали так:
Ещё один подход был в том, чтобы различать чёрных и белых регистром букв:
До метода upper можно дотянуться разными путями. Как я показал тут: "строка".upper() даёт "СТРОКА". Догадываясь о существовании такого метода, но не зная, где его искать, можно было посмотреть в документацию по подулю string и найти такое:
Конечно, можно было бы обойтись и попросту одним вызовом print и ничего не выдумывать.
4
1 >>> "Pbatengf! Unir lbh thrffrq gung lbh pna qrpbqr vg yvxr k.qrpbqr('ebg13')? Gur qbpf ner urer: uggc://qbpf.clguba.bet/yvoenel/fgqglcrf.ugzy#fge.rapbqr naq frr Fgnaqneq Rapbqvatf gurer.".decode("rot13")
2 u"Congrats! Have you guessed that you can decode it like x.decode('rot13')? The docs are here: http://docs.python.org/library/stdtypes.html#str.encode and see Standard Encodings there."
Основная подсказка (которую я озвучивал тем, кто при мне дошёл до этой задачи) состояла в том, что питон прямо сразу умеет расшифровывать код Цезаря. Первая попытка поиска: docs.python.org -> Library Reference -> Sequence types ... str ... -> String methods -> ищем слово decode или encode -> Standard encodings -> ищем слово caesar. А дальше вопрос в том, чтобы разобраться, как же этим пользоваться
Альтернативный метод:
1 >>> import string
2 >>> a = "abcdefghijklm"
3 >>> A = a.upper()
4 >>> b = "nopqrstuvwxyz"
5 >>> B = b.upper()
6 >>> caesar = string.maketrans(a + A + b + B, b + B + a + A)
7 >>> cipher = "Pbatengf! Unir lbh thrffrq gung lbh pna qrpbqr vg yvxrk.qrpbqr('ebg13')? Gur qbpf ner urer: uggc://qbpf.clguba.bet/yvoenel/fgqglcrf.ugzy#fge.rapbqr naq frr Fgnaqneq Rapbqvatf gurer."
8 >>> print(cipher.translate(caesar))
9 Congrats! Have you guessed that you can decode it likex.decode('rot13')? The docs are here: http://docs.python.org/library/stdtypes.html#str.encode and see Standard Encodings there.
5
1 >>> print("Abj sbe gur ynfg gnfx. Ortva jvgu >>> cqo_pbqr = '1z5k' (gurer znl or bgure fgevat). Cevag bhg 2-aq naq 3-eq fgevatf bs CQO fgehpgher vqragvsvrq ol guvf pbqr. Fgehpherf znl or qbjaybnqrq sebz: sgc://sgc.jjcqo.bet/cho/cqo/qngn/fgehpgherf/nyy/cqo/cqo{cqo_pbqr}.rag.tm (Uvag: frr qbpf sbe zbqhyrf heyyvo2 naq tmvc).".decode('rot13'))
2 Now for the last task. Begin with >>> pdb_code = '1m5x' (there may be other string). Print out 2-nd and 3-rd strings of PDB structure identified by this code. Strucures may be downloaded from: ftp://ftp.wwpdb.org/pub/pdb/data/structures/all/pdb/pdb{pdb_code}.ent.gz (Hint: see docs for modules urllib2 and gzip).
Первым делом читаем документацию по urllib2 и gzip. Проще на сайте, но можно и так:
Получается (всё равно совершенно нетривиально):
1 >>> pdb_code = '1m5x'
2 >>> import urllib2
3 >>> import gzip
4 >>> import StringIO
5 >>> url = "ftp://ftp.wwpdb.org/pub/pdb/data/structures/all/pdb/pdb%s.ent.gz" % pdb_code
6 >>> gzipped = urllib2.urlopen(url).read()
7 >>> pdb = gzip.GzipFile(fileobj=StringIO.StringIO(gzipped)).read()
8 >>> lines = pdb.split("\n")[1:3]
9 >>> print("\n".join(lines))
10 TITLE CRYSTAL STRUCTURE OF THE HOMING ENDONUCLEASE I-MSOI BOUND
11 TITLE 2 TO ITS DNA SUBSTRATE