Advertisement
mikhail_dvorkin

Питон для физиков, 1-й семестр

Sep 22nd, 2016
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.09 KB | None | 0 0
  1. 0)
  2.  
  3. Вам предлагается познакомиться с гипотезой Коллатца (https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%9A%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0), а именно -- написать описанный в википедии алгоритм и для любых чисел проверить, что в итоге получается 1.
  4. Это задание на неделю (дедлайн 08.10.2015, 23.59), его стоимость 5 баллов. Поскольку вы пока что не распределены по преподавателям, вы можете присылать скрипт любому из нас (Евгений Служаев evgentu@gmail.com, Семен Прошев s-proshev@ya.ru).
  5.  
  6. Не стесняйтесь задавать вопросы, на предстоящей паре обсудим сложности, если таковые возникли.
  7.  
  8.  
  9. 1)
  10.  
  11. Новое домашнее задание связано с умножением матриц: https://ru.wikipedia.org/wiki/Умножение_матриц.
  12.  
  13. Программе на вход даются два файла: a.txt и b.txt.
  14. В каждом из них строки из целых чисел, каждая строка соответствует строке матрицы, числа разделены пробелом.
  15.  
  16. Нужно:
  17. - прочитать файлы;
  18. - проверить, что это действительно матрицы, т.е. во всех строках одинаковое количество чисел;
  19. - проверить, что их действительно можно перемножить, т.е. количество столбцов в одной равно количеству строк в другой;
  20. - выполнить умножение;
  21. - записать результат в файл c.txt в том же формате, что в исходных файлах.
  22.  
  23. Стоимость задания: 10 баллов, дедлайн: 19.10.2015, 23:59.
  24.  
  25. Бонус:
  26. Проверить соответствие входных файлов описанному формату, т.е. что каждая строка является именно последовательностью целых чисел, разделенных пробелом.
  27.  
  28. Стоимость: 5 баллов.
  29.  
  30. PS. Моя группа: формулировка задания в письме имеет больший приоритет, напоминаю про тему письма вида "PP, Фамилия Имя".
  31.  
  32. 2)
  33.  
  34. В текстовом файле chat.txt записан лог чата между 3-мя пользователями: Alice, Bob и Carol.
  35. Каждое сообщение записано на отдельной строке в формате: “User: message”, где User - это одно из имен пользователей, состоящее из цифр и букв латинского алфавита, message - сообщение пользователя.
  36. Необходимо написать программу, которая запишет в файл alice.txt все сообщения пользователя Alice (в том же порядке, что и в исходном файле, каждое на отдельной строке), и аналогично в файлы bob.txt и carol.txt сообщения пользователей Bob и Carol.
  37.  
  38. Например, файл chat.txt выглядит как:
  39. Alice: Hello!
  40. Bob: Hello, Alice!
  41. Carol: Hello, Alice and Bob!
  42. Alice: =)
  43.  
  44. Тогда после выполнения программы выходные файлы должны выглядеть следующим образом:
  45.  
  46. alice.txt:
  47. Hello!
  48. =)
  49.  
  50. bob.txt:
  51. Hello, Alice!
  52.  
  53. carol.txt:
  54. Hello, Alice and Bob!
  55.  
  56. Стоимость: 10 баллов
  57.  
  58. Бонус: решить ту же задачу с произвольным, неизвестным заранее списком пользователей.
  59.  
  60. Стоимость: 5 баллов
  61.  
  62. Дедлайн: 31.10.2015, 23.59
  63.  
  64. 3)
  65.  
  66. Требуется написать программу, которая считывает текст из входного файла text.txt, считает количество вхождений для каждого из слов, присутствующих в тексте, и выводит результат в файл stat.txt в порядке от наиболее часто встречающихся слов к наименее в формате:
  67.  
  68. word_1 count_1
  69. word_2 count_2
  70. word_n count_n
  71.  
  72. В текстовом файле могут присутствовать большие и маленькие буквы латинского алфавита, а также знаки препинания (‘,’, ‘.’, ‘;’, ‘:’, ‘-‘), скобки (‘(‘, ‘)’), кавычки (‘“‘), апострофы (‘’’), пробелы, табулирование и переносы строк. Учтите, что программа должна слова “Word” и “word” считать одинаковыми, и конечно знаки препинания не должны входить в слова.
  73.  
  74. Бонус: если у двух слов одинаковое количество вхождений, нужно выводить их в лексикографическом порядке.
  75.  
  76. Стоимость такая же, 10 и 5 баллов, дедлайн 16.11.2015, 23:59.
  77.  
  78. 4)
  79.  
  80. Требуется реализовать гравитационное поле в двумерном пространстве с тремя планетами, а именно дописать недостающую функциональность в следующий класс:
  81.  
  82. class GravField:
  83. __def __init__(self, p1, p2, p3):
  84. ____# p1, p2, p3 - экземпляры класса Planet (см. ниже)
  85. ____...
  86. __def run(self, start_values, steps)
  87. ____# start_values - словарь вида: имя планеты -> список из начальных x, y, vx, vy;
  88. ____# steps - количество шагов моделирования, шаг времени выбираете сами
  89. ____...
  90.  
  91. После вызова метода run должно начинаться моделирование гравитационного взаимодействия и вывод координат и скоростей планет на каждом шаге в следующем виде:
  92.  
  93. step <номер шага>
  94. <название планеты> <vx> <vy> <x> <y>
  95. ...
  96.  
  97. Пример:
  98. step 100
  99. earth 100.5 200.5 5.5 6.9
  100. mars 5.7 6.1 3.1 20.6
  101.  
  102. Моделирование должно происходить примерно следующим образом: рассматриваем планеты попарно, считаем для каждой пары силу притяжения, обновляем координаты и скорости планет, переходим к следующей паре.
  103.  
  104. class Planet:
  105. __def __init__(self, name, m):
  106. ____# name - имя, m - масса планеты
  107. ____...
  108.  
  109. Координаты вводятся в астрономических единицах, масса в 10^24 кг, скорость в км/с.
  110.  
  111. Бонус: Визуализация. Рекомендуется встроенная библиотека turtle.
  112.  
  113. Стоимости обычные, срок - 30.11.2015, 23.59.
  114.  
  115. 5)
  116.  
  117. В последнем домашнем задании необходимо реализовать программу с GUI, которая бы отображала график введеного полинома.
  118.  
  119. Полином имеет вид a ± b * x ^ 1 ± c * x ^ 2 ± d * x ^ 3 + .... и вводится в текстовое поле вашего приложения, все коэффициенты - целые числа.
  120.  
  121. Дедлайн - 20.12.2015, 23.59. Стоимость - 10 баллов.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement