04_str.py 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. assert 'testing' == 'test' + 'ing'
  2. assert 'testing' != 'test' + 'ing2'
  3. assert 'testing' < 'test' + 'ing2'
  4. assert 'testing' <= 'test' + 'ing2'
  5. assert 'testing5' > 'test' + 'ing1'
  6. assert 'testing5' >= 'test' + 'ing1'
  7. # test + *=
  8. assert 'abc' + 'def' == 'abcdef'
  9. assert 'abc' * 3 == 'abcabcabc'
  10. assert repr('\\\n\t\'\r\b\x48') == r"'\\\n\t\'\r\bH'"
  11. a = ''
  12. b = 'test'
  13. c ='test'
  14. assert len(a) == 0
  15. assert len(b) == 4
  16. assert b == c
  17. # upper and lower does not work for utf-8
  18. assert ''.lower() == '' and ''.upper() == ''
  19. assert 'already+lower '.lower() == 'already+lower '
  20. assert 'ALREADY+UPPER '.upper() == 'ALREADY+UPPER '
  21. assert 'tEST+InG'.lower() == 'test+ing'
  22. assert 'tEST+InG'.upper() == 'TEST+ING'
  23. s = "football"
  24. q = "abcd"
  25. r = "zoo"
  26. t = "this is string example....wow!!!"
  27. assert s[0] == 'f'
  28. assert s[1:4] == 'oot'
  29. assert s[:-1] == 'footbal'
  30. assert s[:10] == 'football'
  31. assert s[-3] == 'a'
  32. assert t[-5:] == 'ow!!!'
  33. assert t[3:-3] == 's is string example....wow'
  34. assert s > q;assert s < r
  35. assert s.replace("o","") == "ftball"
  36. assert s.replace("o","O",1) == "fOotball"
  37. assert s.replace("foo","ball",1) == "balltball"
  38. assert s.startswith('f') == True;assert s.endswith('o') == False
  39. assert t.startswith('this') == True;
  40. assert t.split('w') == ['this is string example....', 'o', '!!!']
  41. assert "a,b,c".split(',') == ['a', 'b', 'c']
  42. assert 'a,'.split(',') == ['a']
  43. assert 'foo!!bar!!baz'.split('!!') == ['foo', 'bar', 'baz']
  44. assert ' 4 3 '.split() == ['4', '3']
  45. assert ' 4 3 '.split(' ') == ['4', '3']
  46. x = 'aa bb cccc'
  47. assert x.split('cc') == ['aa bb ']
  48. assert '111'.count('1') == 3
  49. assert '111'.count('11') == 1
  50. assert '1111'.count('11') == 2
  51. assert '11'.count('') == 3
  52. assert ''.count('1') == 0
  53. assert ''.count('') == 1
  54. t = "*****this is **string** example....wow!!!*****"
  55. s = "123abcrunoob321"
  56. assert t.strip( '*' ) == "this is **string** example....wow!!!"
  57. assert s.strip( '12' ) == "3abcrunoob3"
  58. assert t.strip( '*' ) == "this is **string** example....wow!!!"
  59. assert s.strip( '12' ) == "3abcrunoob3"
  60. assert '测试123'.strip('测试') == '123'
  61. assert '测试123测试'.strip('测试') == '123'
  62. assert '123测试'.strip('2') == '123测试'
  63. assert '测试123'.strip('测') == '试123'
  64. assert '测试123'.strip('试') == '测试123'
  65. assert '测试123测试'.lstrip('测试') == '123测试'
  66. assert '测试123测试'.rstrip('测试') == '测试123'
  67. assert 'abc'.lstrip('a') == 'bc'
  68. assert 'abc'.lstrip('b') == 'abc'
  69. assert 'abc'.lstrip('c') == 'abc'
  70. assert 'abc'.rstrip('a') == 'abc'
  71. assert 'abc'.rstrip('b') == 'abc'
  72. assert 'abc'.rstrip('c') == 'ab'
  73. assert 'abc'.lstrip('abc') == ''
  74. assert 'abc'.rstrip('abc') == ''
  75. assert 'abc'.strip('abc') == ''
  76. s = ' asd\n asd \n'
  77. assert s.strip() == 'asd\n asd'
  78. s1 = "-"
  79. s2 = ""
  80. seq = ["r","u","n","o","o","b"]
  81. assert s1.join( seq ) == "r-u-n-o-o-b"
  82. assert s2.join( seq ) == "runoob"
  83. assert 'x'.zfill(5) == '0000x'
  84. assert '568'.zfill(1) == '568'
  85. def test(*seq):
  86. return s1.join(seq)
  87. assert test("r", "u", "n", "o", "o", "b") == "r-u-n-o-o-b"
  88. def f():
  89. for i in range(5):
  90. yield str(i)
  91. assert '|'.join(f()) == '0|1|2|3|4'
  92. num = 6
  93. assert str(num) == '6'
  94. # test Lo group names
  95. 测试 = "test"
  96. assert 测试 == "test"
  97. assert "Hello, {}!".format("World") == "Hello, World!"
  98. assert "{} {} {}".format("I", "love", "Python") == "I love Python"
  99. assert "{0} {1} {2}".format("I", "love", "Python") == "I love Python"
  100. assert "{2} {1} {0}".format("I", "love", "Python") == "Python love I"
  101. assert "{0}{1}{0}".format("abra", "cad") == "abracadabra"
  102. assert "{k}={v}".format(k="key", v="value") == "key=value"
  103. assert "{k}={k}".format(k="key") == "key=key"
  104. assert "{0}={1}".format('{0}', '{1}') == "{0}={1}"
  105. assert "{{{0}}}".format(1) == "{1}"
  106. assert "{0}{1}{1}".format(1, 2, 3) == "122"
  107. try:
  108. "{0}={1}}".format(1, 2)
  109. exit(1)
  110. except ValueError:
  111. pass
  112. assert "{{{}xxx{}x}}".format(1, 2) == "{1xxx2x}"
  113. assert "{{abc}}".format() == "{abc}"
  114. # 3rd slice
  115. a = "Hello, World!"
  116. assert a[::-1] == "!dlroW ,olleH"
  117. assert a[::2] == "Hlo ol!"
  118. assert a[2:5:2] == "lo"
  119. assert a[5:2:-1] == ",ol"
  120. assert a[5:2:-2] == ",l"
  121. b = list(a)
  122. assert b == ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']
  123. assert b[::-1] == ['!', 'd', 'l', 'r', 'o', 'W', ' ', ',', 'o', 'l', 'l', 'e', 'H']
  124. assert b[::2] == ['H', 'l', 'o', ' ', 'o', 'l', '!']
  125. assert b[2:5:2] == ['l', 'o']
  126. assert b[5:2:-1] == [',', 'o', 'l']
  127. assert b[5:2:-2] == [',', 'l']
  128. a = '123'
  129. assert a.rjust(5) == ' 123'
  130. assert a.rjust(5, '0') == '00123'
  131. assert a.ljust(5) == '123 '
  132. assert a.ljust(5, '0') == '12300'
  133. assert '\x30\x31\x32' == '012'
  134. a = 'abcd'
  135. assert list(a) == ['a', 'b', 'c', 'd']
  136. a = '测试'
  137. assert list(a) == ['测', '试']
  138. a = 'a测b试c'
  139. assert list(a) == ['a', '测', 'b', '试', 'c']
  140. a = 'a测b试'
  141. assert list(a) == ['a', '测', 'b', '试']
  142. a = '测b试c'
  143. assert list(a) == ['测', 'b', '试', 'c']
  144. a = '测b'
  145. assert list(a) == ['测', 'b']
  146. a = 'b'
  147. assert list(a) == ['b']
  148. a = '测'
  149. assert list(a) == ['测']
  150. assert '\b\b\b' == '\x08\x08\x08'
  151. stack=[1,2,3,4]; assert f"{stack[2:]}" == '[3, 4]'
  152. assert repr('\x1f\x1e\x1f') == '\'\\x1f\\x1e\\x1f\''
  153. assert hex(-42) == '-0x2a'
  154. assert hex(42) == '0x2a'
  155. assert hex(0) == '0x0'
  156. assert hex(1) == '0x1'
  157. assert hex(15) == '0xf'
  158. assert hex(16) == '0x10'
  159. assert hex(255) == '0xff'
  160. assert hex(256) == '0x100'
  161. assert hex(257) == '0x101'
  162. assert hex(17) == '0x11'
  163. import c
  164. assert repr(c.NULL) == '<void* at 0x0>'
  165. assert repr(c.void_p(1)) == '<void* at 0x1>'
  166. assert repr(c.void_p(15)) == '<void* at 0xf>'
  167. assert repr(c.void_p(16)) == '<void* at 0x10>'
  168. assert repr(c.void_p(255)) == '<void* at 0xff>'
  169. assert repr(c.void_p(256)) == '<void* at 0x100>'
  170. assert repr(c.void_p(257)) == '<void* at 0x101>'
  171. assert repr(c.void_p(17)) == '<void* at 0x11>'
  172. # random hex test
  173. import random
  174. def test(__min, __max):
  175. for _ in range(100):
  176. num = random.randint(__min, __max)
  177. hex_num = hex(num)
  178. assert eval(hex_num) == num
  179. if num >= 0:
  180. assert repr(c.void_p(num)) == f'<void* at 0x{hex_num[2:]}>'
  181. test(0, 100)
  182. test(0, 100000)
  183. test(-100, 100)
  184. test(-100000, 100000)
  185. test(-2**30, 2**30)
  186. a = '123'
  187. assert a.index('2') == 1
  188. assert a.index('1') == 0
  189. assert a.index('3') == 2
  190. assert a.index('2', 1) == 1
  191. assert a.index('1', 0) == 0
  192. try:
  193. a.index('1', 1)
  194. exit(1)
  195. except ValueError:
  196. pass
  197. assert a.find('1') == 0
  198. assert a.find('1', 1) == -1