Advertisement
banovski

Chapter 3 (optimization)

Nov 24th, 2021
1,099
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.14 KB | None | 0 0
  1. #! /usr/bin/env python3
  2.  
  3. # Задачи на оптимизацию кода.
  4.  
  5. # Исходная версия программы (задача -- определить индекс числа,
  6. # являющегося двойкой, возведенной в степень, показатель которой
  7. # хранится в переменной X):
  8.  
  9. L = [1, 2, 4, 8, 16, 32, 64]
  10. X = 5
  11. found = False
  12. i = 0
  13.  
  14. while not found and i < len(L):
  15.     if 2 ** X == L[i]:
  16.         found = 1
  17.     else:
  18.         i = i + 1
  19.  
  20. if found:
  21.     print("It's at index", i)
  22. else:
  23.     print(X, "not found.")
  24.  
  25. # Задачи на оптимизацию.
  26.  
  27. # Задача №1: оптимизировать вычисление степени
  28.  
  29. L = [1, 2, 4, 8, 16, 32, 64]
  30. X = 5
  31. P = 2 ** X
  32. i = 0
  33.  
  34. while i < len(L):
  35.     if P == L[i]:
  36.         print("It's at index", i)
  37.         break
  38.     else:
  39.         i = i + 1
  40. else:
  41.     print(X, "not found.")
  42.  
  43. # Задача №2: избавиться от литерала списка
  44.  
  45. L = [2 ** i for i in range(7)]
  46. X = 5
  47. found = False
  48. i = 0
  49.  
  50. while not found and i < len(L):
  51.     if 2 ** X == L[i]:
  52.         found = 1
  53.     else:
  54.         i = i + 1
  55.  
  56. if found:
  57.     print("It's at index", i)
  58. else:
  59.     print(X, "not found.")
  60.  
  61. # Задача №3: избавиться от флага found.
  62.  
  63. L = [1, 2, 4, 8, 16, 32, 64]
  64. X = 5
  65. i = 0
  66.  
  67. while i < len(L):
  68.     if 2 ** X == L[i]:
  69.         print("It's at index", i)
  70.         break
  71.     else:
  72.         i = i + 1
  73. else:
  74.     print(X, "not found.")
  75.  
  76. # Задача №4: решить при помощи цикла for.
  77.  
  78. L = [1, 2, 4, 8, 16, 32, 64]
  79. X = 5
  80. i = 0
  81.  
  82. for i in L:
  83.     if 2 ** X == i:
  84.         print("It's at index", L.index(i))
  85.         break
  86. else:
  87.     print(X, "not found.")
  88.  
  89. # Задача №5: решить без циклов.
  90.  
  91. # Решение №1:
  92.  
  93. L = [1, 2, 4, 8, 16, 32, 64]
  94. X = 5
  95.  
  96. if (2 ** X) in L:
  97.     print("It's at index", L.index(2 ** X))
  98. else:
  99.     print(X, "not found.")
  100.  
  101. # Решение №2
  102.  
  103. L = [1, 2, 4, 8, 16, 32, 64]
  104. X = 5
  105.  
  106. try:
  107.     print("It's at index", L.index(2 ** X))
  108. except:
  109.     print(X, "not found.")
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement