Bulk rename/move files to '8' directories
Perform a bulk rename/move of many files and folders: paths previously prefixed with '01', '02', '03', '04', etc. were relocated to equivalent paths prefixed with '8'. Changes are path-only (R100 renames) and do not modify file contents; this reorganizes the repository structure.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
3.12
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
3.13
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
|
||||
# %%
|
||||
|
||||
# %%
|
||||
|
||||
|
||||
# %%
|
||||
|
||||
# %%
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 54 KiB |
@@ -0,0 +1,10 @@
|
||||
[project]
|
||||
name = "lab3"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.13"
|
||||
dependencies = [
|
||||
"jupyterlab>=4.5.6",
|
||||
"matplotlib>=3.10.8",
|
||||
]
|
||||
Generated
+1742
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,6 @@
|
||||
def main():
|
||||
print("Hello from rias-mephi!")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
[project]
|
||||
name = "rias-mephi"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"jupyterlab>=4.5.6",
|
||||
"matplotlib>=3.10.9",
|
||||
"mplfinance>=0.12.10b0",
|
||||
"pandas>=3.0.2",
|
||||
]
|
||||
Generated
+1955
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,114 @@
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
/* отключить стандартные отступы браузера */
|
||||
font-family: Arial, sans-serif;
|
||||
line-height: 1.5;
|
||||
color: #1f2933;
|
||||
background: #f5f7fa;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 900px;
|
||||
margin: 0;
|
||||
/* внешний отступ */
|
||||
padding: 0 16px;
|
||||
/* внутренний отступ */
|
||||
}
|
||||
|
||||
header {
|
||||
background: #2b6a8a;
|
||||
color: #fff;
|
||||
padding: 16px 0;
|
||||
}
|
||||
|
||||
main {
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
section,
|
||||
.article-block {
|
||||
background: #fff;
|
||||
border: 1px solid #d6dee6;
|
||||
border-radius: 8px;
|
||||
padding: 14px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.nav-list {
|
||||
list-style: none;
|
||||
/* убрать маркеры */
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
/* флексбокс для горизонтального расположения */
|
||||
flex-wrap: wrap;
|
||||
|
||||
gap: 8px;
|
||||
/* расстояние между элементами */
|
||||
}
|
||||
|
||||
.nav-list a,
|
||||
a.inline-link {
|
||||
color: #0b5f8a;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.nav-list a:hover,
|
||||
a.inline-link:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.city-image {
|
||||
width: 100%;
|
||||
max-width: 460px;
|
||||
display: block;
|
||||
margin: 10px 0;
|
||||
border: 1px solid #ccd6e0;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
/* объединение границ таблицы */
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
border: 1px solid #c9d3de;
|
||||
padding: 8px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #eaf1f7;
|
||||
}
|
||||
|
||||
.positive {
|
||||
color: #0d7a3a;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.negative {
|
||||
color: #b02a2a;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 12px 0 20px;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.nav-list {
|
||||
flex-direction: column;
|
||||
/* вертикальное расположение */
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.3 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.1 MiB |
@@ -0,0 +1,77 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Мурманск - главная</title>
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<h1>Мурманск</h1>
|
||||
<p>Красивейший город за Полярным кругом</p>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
<section>
|
||||
<h2>Навигация</h2>
|
||||
<nav aria-label="Навигация по страницам">
|
||||
<!-- метка для скринридеров -->
|
||||
<ul class="nav-list">
|
||||
<!-- маркированный список -->
|
||||
<li><a href="index.html">Главная</a></li>
|
||||
<li><a href="pages/page1.html">История</a></li>
|
||||
<li><a href="pages/page2.html">Климат</a></li>
|
||||
<li><a href="pages/page3.html">Население</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Кратко о городе</h2>
|
||||
<p>Мурманск основан в 1916 году. Это крупнейший город мира за Полярным кругом и важный незамерзающий порт
|
||||
России.</p>
|
||||
<img class="city-image" src="img/murmansk.png" alt="Мурманск, порт и северный город">
|
||||
<img class="city-image" src="img/murmansk2.png" alt="Мурманск, монумент Защитникам Советского Заполярья">
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Основные сведения</h2>
|
||||
<table>
|
||||
<thead>
|
||||
<!-- заголовок таблицы -->
|
||||
<tr>
|
||||
<th>Параметр</th>
|
||||
<th>Значение</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Год основания</td>
|
||||
<td>1916</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Регион</td>
|
||||
<td>Мурманская область</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Население (2025)</td>
|
||||
<td>264 339 человек</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p>Антипенко Д.А. С22-712</p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,47 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Мурманск - история</title>
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<h1>Мурманск: история</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
<section>
|
||||
<h2>Навигация</h2>
|
||||
<nav aria-label="Навигация">
|
||||
<ul class="nav-list">
|
||||
<li><a href="../index.html">Главная</a></li>
|
||||
<li><a href="page1.html">История</a></li>
|
||||
<li><a href="page2.html">Климат</a></li>
|
||||
<li><a href="page3.html">Население</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
<section class="article-block">
|
||||
<h2>История города</h2>
|
||||
<p>Мурманск основан в 1916 году как порт Романов-на-Мурмане. В 1917 году получил современное название.</p>
|
||||
<p>Город быстро вырос благодаря незамерзающему порту. В годы Великой Отечественной войны Мурманск стал
|
||||
важным центром приема северных конвоев.</p>
|
||||
<img class="city-image" src="../img/murmansk.png" alt="Мурманск, морской порт">
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p><a class="inline-link" href="../index.html">Вернуться на главную</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,116 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Мурманск - климат</title>
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<h1>Мурманск: климат</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
<section>
|
||||
<h2>Навигация</h2>
|
||||
<nav aria-label="Навигация">
|
||||
<ul class="nav-list">
|
||||
<li><a href="../index.html">Главная</a></li>
|
||||
<li><a href="page1.html">История</a></li>
|
||||
<li><a href="page2.html">Климат</a></li>
|
||||
<li><a href="page3.html">Население</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
<section class="article-block">
|
||||
<h2>Климат города</h2>
|
||||
<p>Климат Мурманска субарктический морской: зима долгая, лето короткое и прохладное.</p>
|
||||
<img class="city-image" src="../img/murmansk2.png" alt="Мурманск, монумент Защитникам Советского Заполярья">
|
||||
<table>
|
||||
<caption>Климат Мурманска за последние 10 лет (2015-2024 гг)</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Показатель</th>
|
||||
<th>Янв.</th>
|
||||
<th>Февр.</th>
|
||||
<th>Март</th>
|
||||
<th>Апр.</th>
|
||||
<th>Май</th>
|
||||
<th>Июнь</th>
|
||||
<th>Июль</th>
|
||||
<th>Авг.</th>
|
||||
<th>Сент.</th>
|
||||
<th>Окт.</th>
|
||||
<th>Нояб.</th>
|
||||
<th>Дек.</th>
|
||||
<th>Год</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Макс., °C</td>
|
||||
<td>-8,3</td>
|
||||
<td>-6,2</td>
|
||||
<td>-1,4</td>
|
||||
<td>2,9</td>
|
||||
<td>9,3</td>
|
||||
<td>14,4</td>
|
||||
<td>18,4</td>
|
||||
<td>16,4</td>
|
||||
<td>11,7</td>
|
||||
<td>3,6</td>
|
||||
<td>-1,9</td>
|
||||
<td>-5,3</td>
|
||||
<td>4,5</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Средн., °C</td>
|
||||
<td>-10,2</td>
|
||||
<td>-8,1</td>
|
||||
<td>-4</td>
|
||||
<td>0,2</td>
|
||||
<td>5,9</td>
|
||||
<td>10,6</td>
|
||||
<td>14,5</td>
|
||||
<td>13,0</td>
|
||||
<td>9,0</td>
|
||||
<td>2,1</td>
|
||||
<td>-3,3</td>
|
||||
<td>-7</td>
|
||||
<td>1,9</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Мин., °C</td>
|
||||
<td>-12,1</td>
|
||||
<td>-10,1</td>
|
||||
<td>-6,7</td>
|
||||
<td>-2,5</td>
|
||||
<td>2,5</td>
|
||||
<td>6,8</td>
|
||||
<td>10,6</td>
|
||||
<td>9,6</td>
|
||||
<td>6,4</td>
|
||||
<td>0,7</td>
|
||||
<td>-4,6</td>
|
||||
<td>-8,6</td>
|
||||
<td>-0,7</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p><a class="inline-link" href="../index.html">Вернуться на главную</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,151 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Мурманск - население</title>
|
||||
<link rel="stylesheet" href="../css/style.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header>
|
||||
<div class="container">
|
||||
<h1>Мурманск: население</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
<section>
|
||||
<h2>Навигация</h2>
|
||||
<nav aria-label="Навигация">
|
||||
<ul class="nav-list">
|
||||
<li><a href="../index.html">Главная</a></li>
|
||||
<li><a href="page1.html">История</a></li>
|
||||
<li><a href="page2.html">Климат</a></li>
|
||||
<li><a href="page3.html">Население</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</section>
|
||||
|
||||
<section class="article-block">
|
||||
<h2>Динамика населения по актуальным данным</h2>
|
||||
<p>По данным из таблицы видно общее снижение численности населения с отдельными годами роста.</p>
|
||||
<table>
|
||||
<caption>Население Мурманска: 2006-2025</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Год</th>
|
||||
<th>Количество жителей</th>
|
||||
<th>Изменение</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>2006</td>
|
||||
<td>321 000</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2007</td>
|
||||
<td>317 500</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2008</td>
|
||||
<td>314 800</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2009</td>
|
||||
<td>311 209</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2010</td>
|
||||
<td>307 257</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2011</td>
|
||||
<td>307 310</td>
|
||||
<td class="positive">выросло</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2012</td>
|
||||
<td>305 034</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2013</td>
|
||||
<td>302 468</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2014</td>
|
||||
<td>299 148</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2015</td>
|
||||
<td>305 236</td>
|
||||
<td class="positive">выросло</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2016</td>
|
||||
<td>301 572</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2017</td>
|
||||
<td>298 096</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2018</td>
|
||||
<td>295 374</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2019</td>
|
||||
<td>292 465</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2020</td>
|
||||
<td>287 847</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2021</td>
|
||||
<td>270 384</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2023</td>
|
||||
<td>267 422</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024</td>
|
||||
<td>266 681</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2025</td>
|
||||
<td>264 339</td>
|
||||
<td class="negative">уменьшилось</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<div class="container">
|
||||
<p><a class="inline-link" href="../index.html">Вернуться на главную</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,389 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100..900;1,100..900&display=swap');
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
|
||||
body {
|
||||
/* font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; */
|
||||
font-family: 'Roboto', 'Arimo', sans-serif;
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
/* Навигация */
|
||||
.navbar {
|
||||
background-color: #2c3e50;
|
||||
color: white;
|
||||
padding: 1rem 2rem;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.logo {
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
}
|
||||
|
||||
.nav-links a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.nav-links a:hover {
|
||||
color: #3498db;
|
||||
}
|
||||
|
||||
/* Главная секция */
|
||||
.hero {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
padding: 5rem 2rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hero-content h1 {
|
||||
font-size: 3rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.hero-content p {
|
||||
font-size: 1.2rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
/* Кнопки */
|
||||
.btn {
|
||||
padding: 0.75rem 1.5rem;
|
||||
border: none;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
font-size: 1rem;
|
||||
transition: all 0.3s;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background-color: #2980b9;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background-color: #95a5a6;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
background-color: #7f8c8d;
|
||||
}
|
||||
|
||||
.btn-success {
|
||||
background-color: #27ae60;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-success:hover {
|
||||
background-color: #229954;
|
||||
}
|
||||
|
||||
/* О нас */
|
||||
.about {
|
||||
background-color: white;
|
||||
padding: 4rem 2rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.about h2 {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 3rem;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.about-content {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.about-card {
|
||||
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
flex: 0 1 300px;
|
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.about-card:hover {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
.about-card h3 {
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
/* Возможности */
|
||||
.features {
|
||||
background-color: #ecf0f1;
|
||||
padding: 4rem 2rem;
|
||||
}
|
||||
|
||||
.features h2 {
|
||||
font-size: 2.5rem;
|
||||
text-align: center;
|
||||
margin-bottom: 3rem;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.features h3 {
|
||||
font-size: 1.8rem;
|
||||
margin: 2rem 0 1rem 0;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
/* Списки */
|
||||
.list-container {
|
||||
display: flex;
|
||||
gap: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.list-column {
|
||||
background: white;
|
||||
padding: 1.5rem;
|
||||
border-radius: 5px;
|
||||
flex: 0 1 250px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.list-column h4 {
|
||||
margin-bottom: 1rem;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.list-column ul,
|
||||
.list-column ol {
|
||||
margin-left: 1.5rem;
|
||||
}
|
||||
|
||||
.list-column li {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
/* Таблица */
|
||||
.data-table {
|
||||
width: 100%;
|
||||
max-width: 600px;
|
||||
margin: 1.5rem auto;
|
||||
border-collapse: collapse;
|
||||
background: white;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.data-table thead {
|
||||
background-color: #3498db;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.data-table th,
|
||||
.data-table td {
|
||||
padding: 1rem;
|
||||
text-align: left;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.data-table tbody tr:nth-child(even) {
|
||||
background-color: #f9f9f9;
|
||||
}
|
||||
|
||||
.data-table tbody tr:hover {
|
||||
background-color: #ecf0f1;
|
||||
}
|
||||
|
||||
/* Цветовая палитра */
|
||||
.color-palette {
|
||||
display: flex;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
|
||||
.color-box {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
|
||||
.color-box:hover {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
.color-box.primary {
|
||||
background-color: #3498db;
|
||||
}
|
||||
|
||||
.color-box.secondary {
|
||||
background-color: #2c3e50;
|
||||
}
|
||||
|
||||
.color-box.success {
|
||||
background-color: #27ae60;
|
||||
}
|
||||
|
||||
.color-box.warning {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
|
||||
.color-box.danger {
|
||||
background-color: #e74c3c;
|
||||
}
|
||||
|
||||
/* Форма */
|
||||
.contact {
|
||||
background-color: white;
|
||||
padding: 4rem 2rem;
|
||||
}
|
||||
|
||||
.contact h2 {
|
||||
font-size: 2.5rem;
|
||||
text-align: center;
|
||||
margin-bottom: 2rem;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.form {
|
||||
max-width: 500px;
|
||||
margin: 0 auto;
|
||||
background-color: #f9f9f9;
|
||||
padding: 2rem;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: bold;
|
||||
color: #2c3e50;
|
||||
}
|
||||
|
||||
.form-group input[type="text"],
|
||||
.form-group input[type="email"],
|
||||
.form-group textarea,
|
||||
.form-group select {
|
||||
padding: 0.75rem;
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
font-size: 1rem;
|
||||
font-family: inherit;
|
||||
transition: border-color 0.3s;
|
||||
}
|
||||
|
||||
.form-group input[type="text"]:focus,
|
||||
.form-group input[type="email"]:focus,
|
||||
.form-group textarea:focus,
|
||||
.form-group select:focus {
|
||||
outline: none;
|
||||
border-color: #3498db;
|
||||
box-shadow: 0 0 5px rgba(52, 152, 219, 0.3);
|
||||
}
|
||||
|
||||
.form-group.checkbox {
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.form-group.checkbox input[type="checkbox"] {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.form-group.checkbox label {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form .btn {
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
/* Подвал */
|
||||
.footer {
|
||||
background-color: #2c3e50;
|
||||
color: white;
|
||||
text-align: center;
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
/* Адаптивность */
|
||||
@media (max-width: 768px) {
|
||||
.navbar {
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
}
|
||||
|
||||
.hero-content h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
.about-content {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.list-container {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.color-palette {
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.color-box {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Демонстрация HTML и CSS</title>
|
||||
<link rel="stylesheet" href="css/main.css">
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400..700;1,400..700&display=swap');
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Навигация -->
|
||||
<nav class="navbar">
|
||||
<h1 class="logo">MyWebsite</h1>
|
||||
<ul class="nav-links">
|
||||
<li><a href="#home">Главная</a></li>
|
||||
<li><a href="#about">О нас</a></li>
|
||||
<li><a href="#features">Возможности</a></li>
|
||||
<li><a href="#contact">Контакт</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Главная секция -->
|
||||
<section id="home" class="hero">
|
||||
<div class="hero-content">
|
||||
<h1>Добро пожаловать!</h1>
|
||||
<p>Это демонстрация различных HTML элементов и CSS свойств</p>
|
||||
<button class="btn btn-primary">Узнать больше</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- О нас -->
|
||||
<section id="about" class="about">
|
||||
<h2>О сайте</h2>
|
||||
<div class="about-content">
|
||||
<div class="about-card">
|
||||
<h3>📝 Текст</h3>
|
||||
<p>Это обычный параграф демонстрирует стиль текста с использованием CSS свойств как color, font-size и
|
||||
line-height.</p>
|
||||
</div>
|
||||
<div class="about-card">
|
||||
<h3>🎨 Дизайн</h3>
|
||||
<p>Рассказывает о использовании цветов, отступов, границ и других стилей для создания интересного
|
||||
визуального оформления.</p>
|
||||
</div>
|
||||
<div class="about-card">
|
||||
<h3>📦 Макет</h3>
|
||||
<p>Демонстрирует Flexbox layout для создания гибкого и адаптивного дизайна страницы на различных
|
||||
экранах.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Возможности -->
|
||||
<section id="features" class="features">
|
||||
<h2>Возможности</h2>
|
||||
|
||||
<h3>Типы списков</h3>
|
||||
<div class="list-container">
|
||||
<div class="list-column">
|
||||
<h4>Неупорядоченный список:</h4>
|
||||
<ul>
|
||||
<li>Первый элемент</li>
|
||||
<li>Второй элемент</li>
|
||||
<li>Третий элемент</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="list-column">
|
||||
<h4>Упорядоченный список:</h4>
|
||||
<ol>
|
||||
<li>Шаг первый</li>
|
||||
<li>Шаг второй</li>
|
||||
<li>Шаг третий</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Таблица -->
|
||||
<h3>Таблица данных</h3>
|
||||
<table class="data-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Имя</th>
|
||||
<th>Возраст</th>
|
||||
<th>Город</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Иван</td>
|
||||
<td>25</td>
|
||||
<td>Москва</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Мария</td>
|
||||
<td>30</td>
|
||||
<td>Санкт-Петербург</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Петр</td>
|
||||
<td>28</td>
|
||||
<td>Казань</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- Цветовая палитра -->
|
||||
<h3>Цветовая палитра</h3>
|
||||
<div class="color-palette">
|
||||
<div class="color-box primary"></div>
|
||||
<div class="color-box secondary"></div>
|
||||
<div class="color-box success"></div>
|
||||
<div class="color-box warning"></div>
|
||||
<div class="color-box danger"></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Форма -->
|
||||
<section id="contact" class="contact">
|
||||
<h2>Контактная форма</h2>
|
||||
<form class="form">
|
||||
<div class="form-group">
|
||||
<label for="name">Имя:</label>
|
||||
<input type="text" id="name" name="name" placeholder="Введите ваше имя" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="email">Email:</label>
|
||||
<input type="email" id="email" name="email" placeholder="Введите вашу почту" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="message">Сообщение:</label>
|
||||
<textarea id="message" name="message" rows="5" placeholder="Напишите ваше сообщение"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="country">Страна:</label>
|
||||
<select id="country" name="country">
|
||||
<option>Россия</option>
|
||||
<option>Беларусь</option>
|
||||
<option>Казахстан</option>
|
||||
<option>Украина</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group checkbox">
|
||||
<input type="checkbox" id="agree" name="agree">
|
||||
<label for="agree">Я согласен с условиями</label>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-success">Отправить</button>
|
||||
<button type="reset" class="btn btn-secondary">Очистить</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<!-- Подвал -->
|
||||
<footer class="footer">
|
||||
<p>© 2026 MyWebsite. Все права защищены.</p>
|
||||
</footer>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1 @@
|
||||
3.12
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
"""Django's command-line utility for administrative tasks."""
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
"""Run administrative tasks."""
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mephi_app.settings')
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
except ImportError as exc:
|
||||
raise ImportError(
|
||||
"Couldn't import Django. Are you sure it's installed and "
|
||||
"available on your PYTHONPATH environment variable? Did you "
|
||||
"forget to activate a virtual environment?"
|
||||
) from exc
|
||||
execute_from_command_line(sys.argv)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
ASGI config for mephi_app project.
|
||||
|
||||
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/6.0/howto/deployment/asgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.asgi import get_asgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mephi_app.settings')
|
||||
|
||||
application = get_asgi_application()
|
||||
@@ -0,0 +1,107 @@
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'django-insecure-#pk6j+5iy8gxi!4o2ll&aci==cbj4e)kxx7f%7u8!#s^o2qb61'
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = []
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'polls.apps.PollsConfig',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'mephi_app.urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'mephi_app.wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/6.0/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': BASE_DIR / 'db.sqlite3',
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/6.0/ref/settings/#auth-password-validators
|
||||
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/6.0/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'ru-ru'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/6.0/howto/static-files/
|
||||
|
||||
STATIC_URL = 'static/'
|
||||
@@ -0,0 +1,22 @@
|
||||
"""
|
||||
URL configuration for mephi_app project.
|
||||
|
||||
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||
https://docs.djangoproject.com/en/6.0/topics/http/urls/
|
||||
Examples:
|
||||
Function views
|
||||
1. Add an import: from my_app import views
|
||||
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||
Class-based views
|
||||
1. Add an import: from other_app.views import Home
|
||||
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||
Including another URLconf
|
||||
1. Import the include() function: from django.urls import include, path
|
||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from django.urls import path
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
]
|
||||
@@ -0,0 +1,7 @@
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mephi_app.settings')
|
||||
|
||||
application = get_wsgi_application()
|
||||
@@ -0,0 +1,20 @@
|
||||
from django.contrib import admin
|
||||
|
||||
class ChoiceInline(admin.TabularInline):
|
||||
model = Choice
|
||||
extra = 2
|
||||
|
||||
admin.site.register(Choice)
|
||||
# Register your models here.
|
||||
class QuestionAdmin(admin.ModelAdmin):
|
||||
list_display = ('question_text', 'pub_date')
|
||||
list_display_links = ('question_text', 'pub_date')
|
||||
search_fields = ('question_text',)
|
||||
|
||||
admin.site.register(Question, QuestionAdmin)
|
||||
|
||||
class ChoiceAdmin(admin.ModelAdmin):
|
||||
list_display = ('choice_text', 'question', 'votes')
|
||||
list_display_links = ('choice_text', 'question')
|
||||
search_fields = ('choice_text',)
|
||||
admin.site.register(Choice, ChoiceAdmin)
|
||||
@@ -0,0 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class PollsConfig(AppConfig):
|
||||
name = 'polls'
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 6.0.4 on 2026-04-08 10:39
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Question',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('question_text', models.CharField(max_length=200, verbose_name='Вопрос')),
|
||||
('pub_date', models.DateTimeField(verbose_name='Дата публикации')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 6.0.4 on 2026-04-08 10:43
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('polls', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Choice',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('choice_text', models.CharField(max_length=200, verbose_name='Ответ')),
|
||||
('votes', models.IntegerField(default=0, verbose_name='Количество голосов')),
|
||||
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='polls.question')),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,12 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
class Question(models.Model):
|
||||
question_text = models.CharField(verbose_name='Вопрос', max_length=200)
|
||||
pub_date = models.DateTimeField(verbose_name='Дата публикации')
|
||||
|
||||
class Choice(models.Model):
|
||||
question = models.ForeignKey(Question, on_delete=models.CASCADE)
|
||||
choice_text = models.CharField(verbose_name='Ответ', max_length=200)
|
||||
votes = models.IntegerField(verbose_name='Количество голосов', default=0)
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
@@ -0,0 +1,8 @@
|
||||
from djano.urls import path
|
||||
|
||||
urlpatterns = [
|
||||
# path('', views.index, name='index'),
|
||||
# path('<int:question_id>/', views.detail, name='detail'),
|
||||
# path('<int:question_id>/results/', views.results, name='results'),
|
||||
# path('<int:question_id>/vote/', views.vote, name='vote'),
|
||||
]
|
||||
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
@@ -0,0 +1,9 @@
|
||||
[project]
|
||||
name = "web-django"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"django>=6.0.4",
|
||||
]
|
||||
Generated
+55
@@ -0,0 +1,55 @@
|
||||
version = 1
|
||||
revision = 3
|
||||
requires-python = ">=3.12"
|
||||
|
||||
[[package]]
|
||||
name = "asgiref"
|
||||
version = "3.11.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/63/40/f03da1264ae8f7cfdbf9146542e5e7e8100a4c66ab48e791df9a03d3f6c0/asgiref-3.11.1.tar.gz", hash = "sha256:5f184dc43b7e763efe848065441eac62229c9f7b0475f41f80e207a114eda4ce", size = 38550, upload-time = "2026-02-03T13:30:14.33Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/5c/0a/a72d10ed65068e115044937873362e6e32fab1b7dce0046aeb224682c989/asgiref-3.11.1-py3-none-any.whl", hash = "sha256:e8667a091e69529631969fd45dc268fa79b99c92c5fcdda727757e52146ec133", size = 24345, upload-time = "2026-02-03T13:30:13.039Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "6.0.4"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
dependencies = [
|
||||
{ name = "asgiref" },
|
||||
{ name = "sqlparse" },
|
||||
{ name = "tzdata", marker = "sys_platform == 'win32'" },
|
||||
]
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/60/b9/4155091ad1788b38563bd77a7258c0834e8c12a7f56f6975deaf54f8b61d/django-6.0.4.tar.gz", hash = "sha256:8cfa2572b3f2768b2e84983cf3c4811877a01edb64e817986ec5d60751c113ac", size = 10907407, upload-time = "2026-04-07T13:55:44.961Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/e9/47/3d61d611609764aa71a37f7037b870e7bfb22937366974c4fd46cada7bab/django-6.0.4-py3-none-any.whl", hash = "sha256:14359c809fc16e8f81fd2b59d7d348e4d2d799da6840b10522b6edf7b8afc1da", size = 8368342, upload-time = "2026-04-07T13:55:37.999Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlparse"
|
||||
version = "0.5.5"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/90/76/437d71068094df0726366574cf3432a4ed754217b436eb7429415cf2d480/sqlparse-0.5.5.tar.gz", hash = "sha256:e20d4a9b0b8585fdf63b10d30066c7c94c5d7a7ec47c889a2d83a3caa93ff28e", size = 120815, upload-time = "2025-12-19T07:17:45.073Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/49/4b/359f28a903c13438ef59ebeee215fb25da53066db67b305c125f1c6d2a25/sqlparse-0.5.5-py3-none-any.whl", hash = "sha256:12a08b3bf3eec877c519589833aed092e2444e68240a3577e8e26148acc7b1ba", size = 46138, upload-time = "2025-12-19T07:17:46.573Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tzdata"
|
||||
version = "2026.1"
|
||||
source = { registry = "https://pypi.org/simple" }
|
||||
sdist = { url = "https://files.pythonhosted.org/packages/19/f5/cd531b2d15a671a40c0f66cf06bc3570a12cd56eef98960068ebbad1bf5a/tzdata-2026.1.tar.gz", hash = "sha256:67658a1903c75917309e753fdc349ac0efd8c27db7a0cb406a25be4840f87f98", size = 197639, upload-time = "2026-04-03T11:25:22.002Z" }
|
||||
wheels = [
|
||||
{ url = "https://files.pythonhosted.org/packages/b0/70/d460bd685a170790ec89317e9bd33047988e4bce507b831f5db771e142de/tzdata-2026.1-py2.py3-none-any.whl", hash = "sha256:4b1d2be7ac37ceafd7327b961aa3a54e467efbdb563a23655fbfe0d39cfc42a9", size = 348952, upload-time = "2026-04-03T11:25:20.313Z" },
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-django"
|
||||
version = "0.1.0"
|
||||
source = { virtual = "." }
|
||||
dependencies = [
|
||||
{ name = "django" },
|
||||
]
|
||||
|
||||
[package.metadata]
|
||||
requires-dist = [{ name = "django", specifier = ">=6.0.4" }]
|
||||
@@ -0,0 +1,277 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "5ffc18fc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Генераторы массивов"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "17f0549b",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]\n",
|
||||
"{0, 1, 2}\n",
|
||||
"(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"\n",
|
||||
"n = 20\n",
|
||||
"a = [i for i in range(n)]\n",
|
||||
"b = {i%3 for i in range(n)}\n",
|
||||
"c = tuple(i for i in range(n))\n",
|
||||
"print(a)\n",
|
||||
"print(b)\n",
|
||||
"print(c)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f64d6b65",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[62, 64, 58, 6, 28, 8, 3, 4, 8, 2, 94, 65, 4, 23, 26, 38, 67, 4, 72, 82]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Модуль random\n",
|
||||
"import random as rd\n",
|
||||
"a = [rd.randint(0, 100) for i in range(n)]\n",
|
||||
"print(a)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"id": "a03afa9b",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Генерация словаря\n",
|
||||
"d = {i: i**2 for i in range(n)}\n",
|
||||
"print(d)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "1523bfb5",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Сортировка"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "0e5b7a6e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[-98, -96, -92, -60, -49, -42, -32, -18, -10, -10, 42, 53, 55, 64, 73, 75, 78, 81, 81, 98]\n",
|
||||
"[98, 81, 81, 78, 75, 73, 64, 55, 53, 42, -10, -10, -18, -32, -42, -49, -60, -92, -96, -98]\n",
|
||||
"[-10, -10, -18, -32, 42, -42, -49, 53, 55, -60, 64, 73, 75, 78, 81, 81, -92, -96, -98, 98]\n",
|
||||
"[-98, -96, -92, -60, -49, -42, -32, -18, -10, -10, 42, 53, 55, 64, 73, 75, 78, 81, 81, 98]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# sort и sorted\n",
|
||||
"\n",
|
||||
"a = [rd.randint(-100, 100) for i in range(n)]\n",
|
||||
"\n",
|
||||
"b = sorted(a) # Возвращает новый отсортированный список\n",
|
||||
"print(b)\n",
|
||||
"\n",
|
||||
"c = sorted(a, reverse=True) # Сортирует в обратном порядке\n",
|
||||
"print(c)\n",
|
||||
"\n",
|
||||
"e = sorted(a, key=lambda x: abs(x)) # Сортирует по ключу, в данном случае по абсолютному значению\n",
|
||||
"print(e)\n",
|
||||
"\n",
|
||||
"a.sort() # Сортирует список на месте, ничего не возвращает\n",
|
||||
"print(a)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9b186915",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[-98, -96, -92, -60, -42, -32, -18, -10, -10, 42, 64, 78, 98]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# метод filter\n",
|
||||
"\n",
|
||||
"f = filter(lambda x: x % 2 == 0, a) # Фильтрует элементы, оставляя только четные\n",
|
||||
"print(list(f))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "8966f584",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Операции со строками"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"id": "886e6200",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"['fefef', '', '', '', '', 'egege', 'wpdwpfwof', '', '', '', 'eijoifwmfkwmfl', '', '', '', 'dwpdwpekwp']\n",
|
||||
"['fefef', 'egege', 'wpdwpfwof', 'eijoifwmfkwmfl', 'dwpdwpekwp']\n",
|
||||
"['Fefef', 'Egege', 'Wpdwpfwof', 'Eijoifwmfkwmfl', 'Dwpdwpekwp']\n",
|
||||
"Fefef Egege Wpdwpfwof Eijoifwmfkwmfl Dwpdwpekwp\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"s = \"fefef egege wpdwpfwof eijoifwmfkwmfl dwpdwpekwp\"\n",
|
||||
"s1 = s.split(' ') # Разделяет строку по пробелам и преовращает в список слов\n",
|
||||
"print(s1)\n",
|
||||
"\n",
|
||||
"s2 = list(filter(lambda x: x, s1))\n",
|
||||
"print(s2)\n",
|
||||
"\n",
|
||||
"s3 = [x.capitalize() for x in s2] # Преобразует каждое слово в строку с заглавной первой буквой\n",
|
||||
"print(s3)\n",
|
||||
"\n",
|
||||
"s4 = ' '.join(s3) # Соединяет элементы списка в строку, используя ' ' в качестве разделителя\n",
|
||||
"print(s4)\n",
|
||||
"# print(' '.join(['a', 'b', 'c'])) # Соединяет элементы списка в строку, используя пробел в качестве разделителя"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 26,
|
||||
"id": "41ab72cf",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Hello, World!\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"st = ' Hello, World! '\n",
|
||||
"print(st.strip()) # Удаляет пробелы в начале и конце строки"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "7ff78577",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Распаковка и запаковка"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 34,
|
||||
"id": "d39d6026",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"3.0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"def average(*nums):\n",
|
||||
" return sum(nums) / len(nums) if nums else None\n",
|
||||
"\n",
|
||||
"print(average(1, 2, 3, 4, 5)) # Вывод: 3.0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e3997fbd",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"<a href=\"https://ada-dev.ru\" target=\"_blank\"></a>\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"# Функция, которая принимает первым аргументом тег, а затем именованные параметры, и возвращает строку в виде HTML-тега с этими параметрами\n",
|
||||
"def create_html(tag, **attributes):\n",
|
||||
" attr_str = ' '.join(f'{key}=\"{value}\"' for key, value in attributes.items())\n",
|
||||
" return f'<{tag} {attr_str}></{tag}>'\n",
|
||||
"\n",
|
||||
"print(create_html('a', href='https://ada-dev.ru', target='_blank'))"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": ".venv",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython",
|
||||
"version": 3
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.14.3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
# print('Test')
|
||||
|
||||
# Генераторы массивов
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user