During each iteration of the loop in
lines
16–17,
the variable
c
contains a string of one character.
For example,
during the first iteration of the loop,
c
contains
"A"
.
During the second iteration of the loop,
c
contains
"P"
.
We can loop through the
str
ing
s
in
line
16
because a
str
ing
is
iterable.
A P O L L O A P O L L O
The above
for
loop prints only the characters, not the index numbers.
If you need the indices too,
s = "APOLLO" for i in range(len(s)): print(i, s[i]) print() for i, c in enumerate(s): print(i, c)
0 A 1 P 2 O 3 L 4 L 5 O 0 A 1 P 2 O 3 L 4 L 5 O
s = "APOLLO" for i, c in enumerate(s): print(i + 1, c) print() for i, c in enumerate(s, start = 1): print(i, c)
1 A 2 P 3 O 4 L 5 L 6 O 1 A 2 P 3 O 4 L 5 L 6 O
""" Print the code number and catagory of each printable ASCII character. """ import sys #A string of 95 characters. #Within a double-quoted string, need backslash in front of " and \ s = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" #Another way to create the same s: #start = ord(" ") #stop = ord("~") + 1 #listOfCharacters = [chr(code) for code in range(start, stop)] #s = "".join(listOfCharacters) #Also include the exotic whitespace characters 9 ("\t"), 10 ("\n"), 11 ("\v"), 12 ("\f"). #s = sorted(string.printable) #import string for c in s: if c.isupper(): category = "upper" elif c.islower(): category = "lower" elif c.isdigit(): category = "digit" elif c.isspace(): category = "space" else: category = "miscellaneous" print(f"{ord(c):3} {c} {category}") #ord stands for "ordinal". sys.exit(0)
32 space 33 ! miscellaneous 34 " miscellaneous 35 # miscellaneous 36 $ miscellaneous 37 % miscellaneous 38 & miscellaneous 39 ' miscellaneous 40 ( miscellaneous 41 ) miscellaneous 42 * miscellaneous 43 + miscellaneous 44 , miscellaneous 45 - miscellaneous 46 . miscellaneous 47 / miscellaneous 48 0 digit 49 1 digit 50 2 digit 51 3 digit 52 4 digit 53 5 digit 54 6 digit 55 7 digit 56 8 digit 57 9 digit 58 : miscellaneous 59 ; miscellaneous 60 < miscellaneous 61 = miscellaneous 62 > miscellaneous 63 ? miscellaneous 64 @ miscellaneous 65 A upper 66 B upper 67 C upper 68 D upper 69 E upper 70 F upper 71 G upper 72 H upper 73 I upper 74 J upper 75 K upper 76 L upper 77 M upper 78 N upper 79 O upper 80 P upper 81 Q upper 82 R upper 83 S upper 84 T upper 85 U upper 86 V upper 87 W upper 88 X upper 89 Y upper 90 Z upper 91 [ miscellaneous 92 \ miscellaneous 93 ] miscellaneous 94 ^ miscellaneous 95 _ miscellaneous 96 ` miscellaneous 97 a lower 98 b lower 99 c lower 100 d lower 101 e lower 102 f lower 103 g lower 104 h lower 105 i lower 106 j lower 107 k lower 108 l lower 109 m lower 110 n lower 111 o lower 112 p lower 113 q lower 114 r lower 115 s lower 116 t lower 117 u lower 118 v lower 119 w lower 120 x lower 121 y lower 122 z lower 123 { miscellaneous 124 | miscellaneous 125 } miscellaneous 126 ~ miscellaneous
Don’t write a line longer than 80 characters. Backslashes can join lines explicitly.
#A string of 95 characters. #Within a double-quoted string, need backslash in front of " and \ s = \ " !\"#$%&'()*+,-./0123456789:;<=>?@" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "[\\]^_`" \ + "abcdefghijklmnopqrstuvwxyz" \ + "{|}~"
A pair of parentheses can join lines implicitly:
#A string of 95 characters. #Within a double-quoted string, need backslash in front of " and \ s = ( " !\"#$%&'()*+,-./0123456789:;<=>?@" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_`" + "abcdefghijklmnopqrstuvwxyz" + "{|}~" )
Make a
list
of four categories.
The
attributes
of an object
(in this case,
the object
c
)
include the
methods
of the object.
categories = [ ["isupper", "upper"], ["islower", "lower"], ["isdigit", "digit"], ["isspace", "space"] ] for c in s: for category in categories: f = getattr(c, category[0]) #f is a method belonging to c, e.g., c.isupper or c.islower if f(): #f() is True or False name = category[1] break else: name = "miscellaneous" print(f"{ord(c):3} {c} {name}")
See the Wikipedia article.
""" Output the lyrics to "Swingin' the Alphabet". """ import sys consonants = "BCDFGHJKLM" #A string of 7 lines, each ending with a newline character. #The string contains 18 pockets. verse = """\ {} a {}a {} e {}e {} i {}ikky {}i {} o {}o {}ikky {}i {}o {} u {}u {}ikky {}i {}o {}u. """ for c in consonants: print(verse.format(c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c)) sys.exit(0)
print
statement from
print(verse.format(c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c))to the following. For the second asterisk, see Unpacking Argument Lists.
#args is a list of 18 strings. args = 18 * [c] #Means the same thing as args = [c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c] print(verse.format(*args))