commit ef77f101fac25a2033cd10e336ea526ad0a98629 Author: ip-ram Date: Sat Apr 18 14:42:00 2026 +0500 last lab diff --git a/labLinux/Final_practical_assignment/final_practical.odt b/labLinux/Final_practical_assignment/final_practical.odt new file mode 100755 index 0000000..bd098fb Binary files /dev/null and b/labLinux/Final_practical_assignment/final_practical.odt differ diff --git a/labLinux/lab2/create.sh b/labLinux/lab2/create.sh new file mode 100755 index 0000000..e40e0f1 --- /dev/null +++ b/labLinux/lab2/create.sh @@ -0,0 +1,6 @@ +#!/bin/sh +touch my_file #создание файла +date>my_file #запись даты +pwd>>my_file #путь к файлу +who >>my_file #имя пользователя +uname -sr>>my_file #версия OC diff --git a/labLinux/lab2/create2.sh b/labLinux/lab2/create2.sh new file mode 100755 index 0000000..e67a2a8 --- /dev/null +++ b/labLinux/lab2/create2.sh @@ -0,0 +1,11 @@ +#!/bin/sh +touch my_file +id >> my_file +groups >> my_file +w >> my_file +last >> my_file +ls ~/ >>my_file +chage -l $USER >> my_file +whoami >> my_file +cat /etc/passwd >> my_file +getent passwd $USER >> my_file diff --git a/labLinux/lab2/delete.sh b/labLinux/lab2/delete.sh new file mode 100755 index 0000000..a8a2ea0 --- /dev/null +++ b/labLinux/lab2/delete.sh @@ -0,0 +1,3 @@ +#!/bin/sh +rm ./my_file && echo 'файл успешно удалён' +echo $? diff --git a/labLinux/lab2/delete2.sh b/labLinux/lab2/delete2.sh new file mode 100755 index 0000000..a8a2ea0 --- /dev/null +++ b/labLinux/lab2/delete2.sh @@ -0,0 +1,3 @@ +#!/bin/sh +rm ./my_file && echo 'файл успешно удалён' +echo $? diff --git a/labLinux/lab2/my_file b/labLinux/lab2/my_file new file mode 100755 index 0000000..111f1ed --- /dev/null +++ b/labLinux/lab2/my_file @@ -0,0 +1,271 @@ +uid=1000(ivanbaran) gid=1000(ivanbaran) группы=1000(ivanbaran),998(wheel) +ivanbaran wheel + 08:35:42 up 15 min, 1 user, load average: 0,45, 0,64, 0,44 +USER TTY LOGIN@ IDLE JCPU PCPU WHAT +ivanbara tty1 08:20 15:15 0.07s ? waitpid -e 747 +ivanbar* tty1 Mon Oct 6 08:20 still logged in +reboot system boot 6.16.10-arch1-1 Mon Oct 6 08:20 still running +ivanbar* tty1 Sun Oct 5 01:16 - down (00:15) +reboot system boot 6.16.10-arch1-1 Sun Oct 5 01:15 - 01:31 (00:15) +ivanbar* tty1 Sat Oct 4 19:09 - down (00:39) +reboot system boot 6.16.10-arch1-1 Sat Oct 4 19:09 - 19:48 (00:39) +ivanbar* tty1 Sat Oct 4 16:01 - down (00:03) +reboot system boot 6.16.10-arch1-1 Sat Oct 4 16:01 - 16:05 (00:03) +ivanbar* tty1 Sat Oct 4 13:42 - down (00:47) +reboot system boot 6.16.10-arch1-1 Sat Oct 4 13:42 - 14:30 (00:47) +ivanbar* tty1 Sat Oct 4 13:37 - down (00:05) +reboot system boot 6.16.8-arch3-1 Sat Oct 4 13:36 - 13:42 (00:05) +ivanbar* tty1 Sat Oct 4 11:51 - down (00:50) +reboot system boot 6.16.8-arch3-1 Sat Oct 4 11:50 - 12:41 (00:50) +ivanbar* tty1 Sat Oct 4 10:04 - down (01:45) +reboot system boot 6.16.8-arch3-1 Sat Oct 4 10:04 - 11:50 (01:46) +ivanbar* tty1 Sat Oct 4 00:37 - down (02:04) +reboot system boot 6.16.8-arch3-1 Sat Oct 4 00:37 - 02:41 (02:04) +ivanbar* tty1 Fri Oct 3 20:14 - down (01:25) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 20:14 - 21:40 (01:25) +ivanbar* tty1 Fri Oct 3 19:16 - down (00:44) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 19:16 - 20:01 (00:44) +ivanbar* tty1 Fri Oct 3 15:51 - down (03:24) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 15:51 - 19:16 (03:25) +ivanbar* tty1 Fri Oct 3 12:25 - down (00:40) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 12:25 - 13:05 (00:40) +ivanbar* tty1 Fri Oct 3 11:42 - down (00:41) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 11:42 - 12:24 (00:42) +ivanbar* tty1 Fri Oct 3 00:05 - down (02:46) +reboot system boot 6.16.8-arch3-1 Fri Oct 3 00:04 - 02:51 (02:47) +ivanbar* tty1 Thu Oct 2 17:07 - down (02:12) +reboot system boot 6.16.8-arch3-1 Thu Oct 2 17:07 - 19:19 (02:12) +ivanbar* pts/0 wayland-1 Thu Oct 2 16:51 - 16:58 (00:07) +ivanbar* tty1 Thu Oct 2 16:51 - down (00:15) +ivanbar* pts/0 wayland-1 Thu Oct 2 16:48 - 16:51 (00:02) +ivanbar* tty1 Thu Oct 2 16:46 - 16:51 (00:04) +reboot system boot 6.16.8-arch3-1 Thu Oct 2 16:46 - 17:06 (00:20) +ivanbar* pts/1 wayland-1 Thu Oct 2 16:46 - down (00:00) +ivanbar* tty1 Thu Oct 2 15:54 - down (00:51) +reboot system boot 6.16.8-arch3-1 Thu Oct 2 15:54 - 16:46 (00:51) +ivanbar* pts/2 wayland-1 Thu Oct 2 14:28 - 15:34 (01:05) +ivanbar* pts/1 wayland-1 Thu Oct 2 13:55 - 13:55 (00:00) +ivanbar* tty1 Thu Oct 2 13:27 - down (02:06) +reboot system boot 6.16.8-arch3-1 Thu Oct 2 13:27 - 15:34 (02:06) +ivanbar* tty1 Wed Oct 1 23:28 - down (02:15) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 23:25 - 01:44 (02:18) +ivanbar* tty1 Wed Oct 1 22:21 - down (00:02) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 22:21 - 22:24 (00:03) +ivanbar* tty1 Wed Oct 1 19:32 - down (00:24) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 19:32 - 19:56 (00:24) +ivanbar* pts/0 wayland-1 Wed Oct 1 17:02 - 18:49 (01:47) +ivanbar* pts/0 wayland-1 Wed Oct 1 16:52 - 16:59 (00:06) +ivanbar* tty1 Wed Oct 1 15:47 - down (03:02) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 15:47 - 18:49 (03:02) +ivanbar* pts/0 wayland-1 Wed Oct 1 15:21 - down (00:24) +ivanbar* pts/0 wayland-1 Wed Oct 1 15:12 - 15:21 (00:08) +ivanbar* tty1 Wed Oct 1 15:01 - down (00:45) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 15:01 - 15:46 (00:45) +ivanbar* pts/0 wayland-1 Wed Oct 1 12:27 - 12:27 (00:00) +ivanbar* tty1 Wed Oct 1 11:53 - down (00:33) +reboot system boot 6.16.8-arch3-1 Wed Oct 1 11:53 - 12:27 (00:33) +ivanbar* tty1 Tue Sep 30 21:02 - down (01:40) +reboot system boot 6.16.8-arch3-1 Tue Sep 30 21:02 - 22:43 (01:40) +ivanbar* pts/1 wayland-1 Tue Sep 30 15:25 - 15:25 (00:00) +ivanbar* pts/0 wayland-1 Tue Sep 30 15:22 - 15:52 (00:30) +ivanbar* pts/0 wayland-1 Tue Sep 30 14:37 - 15:15 (00:37) +ivanbar* pts/0 wayland-1 Tue Sep 30 14:23 - 14:23 (00:00) +ivanbar* tty1 Tue Sep 30 14:19 - down (01:33) +reboot system boot 6.16.8-arch3-1 Tue Sep 30 14:16 - 15:52 (01:36) +ivanbar* tty1 Tue Sep 30 13:52 - down (00:02) +reboot system boot 6.16.8-arch3-1 Tue Sep 30 13:52 - 13:55 (00:02) +ivanbar* pts/1 wayland-1 Tue Sep 30 12:49 - 12:49 (00:00) +ivanbar* pts/0 wayland-1 Tue Sep 30 12:11 - 13:08 (00:57) +ivanbar* pts/1 wayland-1 Tue Sep 30 11:05 - 11:19 (00:13) +ivanbar* pts/1 wayland-1 Tue Sep 30 11:05 - 11:05 (00:00) +ivanbar* pts/1 wayland-1 Tue Sep 30 11:05 - 11:05 (00:00) +ivanbar* pts/0 wayland-1 Tue Sep 30 10:59 - 12:06 (01:07) +ivanbar* pts/0 wayland-1 Tue Sep 30 10:58 - 10:58 (00:00) +ivanbar* tty1 Tue Sep 30 10:47 - down (02:21) +reboot system boot 6.16.8-arch3-1 Tue Sep 30 10:46 - 13:08 (02:22) +ivanbar* pts/0 wayland-1 Mon Sep 29 19:34 - 19:34 (00:00) +ivanbar* pts/7 wayland-1 Mon Sep 29 19:08 - 19:25 (00:16) +ivanbar* pts/7 wayland-1 Mon Sep 29 18:56 - 18:58 (00:02) +ivanbar* pts/6 wayland-1 Mon Sep 29 18:42 - 19:21 (00:38) +ivanbar* tty1 Mon Sep 29 17:14 - down (02:19) +reboot system boot 6.16.8-arch3-1 Mon Sep 29 17:11 - 19:34 (02:22) +ivanbar* pts/0 wayland-1 Mon Sep 29 17:01 - 17:01 (00:00) +ivanbar* tty1 Mon Sep 29 16:55 - down (00:06) +reboot system boot 6.16.8-arch3-1 Mon Sep 29 16:54 - 17:01 (00:06) +ivanbar* pts/6 wayland-1 Mon Sep 29 15:42 - 15:42 (00:00) +ivanbar* tty1 Mon Sep 29 12:20 - down (03:21) +reboot system boot 6.16.8-arch3-1 Mon Sep 29 12:20 - 15:42 (03:22) +ivanbar* pts/0 wayland-1 Mon Sep 29 11:39 - 12:19 (00:40) +ivanbar* tty1 Mon Sep 29 11:15 - down (01:04) +reboot system boot 6.16.8-arch3-1 Mon Sep 29 11:15 - 12:19 (01:04) +ivanbar* pts/2 wayland-1 Mon Sep 29 09:08 - 09:29 (00:21) +ivanbar* pts/1 wayland-1 Mon Sep 29 08:53 - 09:09 (00:15) +ivanbar* pts/0 wayland-1 Mon Sep 29 08:43 - 09:09 (00:25) +ivanbar* pts/0 wayland-1 Mon Sep 29 08:43 - 08:43 (00:00) +ivanbar* pts/1 wayland-1 Mon Sep 29 08:43 - 08:43 (00:00) +ivanbar* pts/1 wayland-1 Mon Sep 29 08:40 - 08:42 (00:02) +ivanbar* pts/0 wayland-1 Mon Sep 29 08:16 - 08:43 (00:26) +ivanbar* pts/0 wayland-1 Mon Sep 29 08:16 - 08:16 (00:00) +ivanbar* pts/1 wayland-1 Mon Sep 29 08:16 - 08:16 (00:00) +ivanbar* pts/0 wayland-1 Mon Sep 29 08:15 - 08:16 (00:00) +ivanbar* tty1 Mon Sep 29 08:12 - down (01:16) +reboot system boot 6.16.8-arch3-1 Mon Sep 29 08:12 - 09:29 (01:17) +ivanbar* pts/4 wayland-1 Sun Sep 28 12:03 - 12:03 (00:00) +ivanbar* tty1 Sun Sep 28 10:47 - down (01:15) +reboot system boot 6.16.8-arch3-1 Sun Sep 28 10:47 - 12:03 (01:15) +ivanbar* pts/2 wayland-1 Sun Sep 28 10:20 - 10:47 (00:26) +ivanbar* tty1 Sun Sep 28 09:27 - down (01:19) +reboot system boot 6.16.8-arch3-1 Sun Sep 28 09:27 - 10:47 (01:19) +ivanbar* pts/3 wayland-1 Sat Sep 27 23:24 - 23:24 (00:00) +ivanbar* pts/2 wayland-1 Sat Sep 27 23:22 - 00:04 (00:41) +ivanbar* pts/2 wayland-1 Sat Sep 27 23:22 - 23:22 (00:00) +ivanbar* tty1 Sat Sep 27 22:51 - down (01:12) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 22:51 - 00:04 (01:12) +ivanbar* pts/2 wayland-1 Sat Sep 27 22:22 - 22:33 (00:10) +ivanbar* tty1 Sat Sep 27 22:08 - down (00:24) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 22:08 - 22:33 (00:24) +ivanbar* pts/1 wayland-1 Sat Sep 27 20:29 - 20:58 (00:29) +ivanbar* tty1 Sat Sep 27 20:28 - down (00:30) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 20:28 - 20:58 (00:30) +ivanbar* pts/3 tmux(7000).%0 Sat Sep 27 13:59 - 14:00 (00:01) +ivanbar* tty1 Sat Sep 27 13:34 - down (00:28) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 13:34 - 14:03 (00:28) +ivanbar* tty1 Sat Sep 27 13:14 - down (00:19) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 13:14 - 13:34 (00:19) +ivanbar* tty1 Sat Sep 27 12:26 - down (00:48) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 12:26 - 13:14 (00:48) +ivanbar* tty1 Sat Sep 27 12:18 - down (00:04) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 12:18 - 12:22 (00:04) +ivanbar* tty1 Sat Sep 27 12:07 - down (00:10) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 12:07 - 12:17 (00:10) +ivanbar* tty1 Sat Sep 27 11:35 - down (00:21) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:35 - 11:57 (00:21) +ivanbar* tty4 Sat Sep 27 11:34 - 11:34 (00:00) +ivanbar* tty1 Sat Sep 27 11:26 - down (00:08) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:26 - 11:35 (00:08) +ivanbar* tty3 Sat Sep 27 11:26 - 11:26 (00:00) +ivanbar* tty1 Sat Sep 27 11:25 - down (00:00) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:25 - 11:26 (00:00) +ivanbar* tty1 Sat Sep 27 11:24 - down (00:00) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:24 - 11:25 (00:00) +ivanbar* tty1 Sat Sep 27 11:22 - down (00:01) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:22 - 11:24 (00:02) +ivanbar* tty1 Sat Sep 27 11:13 - down (00:08) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:12 - 11:21 (00:08) +ivanbar* tty1 Sat Sep 27 11:03 - down (00:00) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 11:02 - 11:03 (00:01) +ivanbar* tty1 Sat Sep 27 09:04 - down (01:57) +reboot system boot 6.16.8-arch3-1 Sat Sep 27 09:04 - 11:02 (01:57) +ivanbar* tty1 Fri Sep 26 13:55 - down (00:04) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 13:55 - 14:00 (00:04) +ivanbar* tty1 Fri Sep 26 13:47 - down (00:07) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 13:47 - 13:55 (00:07) +ivanbar* tty1 Fri Sep 26 13:00 - down (00:00) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 12:59 - 13:00 (00:00) +ivanbar* tty1 Fri Sep 26 12:32 - down (00:27) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 12:32 - 12:59 (00:27) +ivanbar* tty1 Fri Sep 26 11:24 - down (01:07) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 11:23 - 12:31 (01:07) +ivanbar* tty1 Fri Sep 26 10:08 - down (00:01) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 10:08 - 10:09 (00:01) +ivanbar* tty1 Fri Sep 26 10:07 - down (00:00) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 10:06 - 10:07 (00:00) +ivanbar* tty1 Fri Sep 26 10:00 - down (00:06) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 09:59 - 10:06 (00:06) +ivanbar* tty1 Fri Sep 26 09:32 - down (00:26) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 09:32 - 09:59 (00:27) +ivanbar* tty1 Fri Sep 26 09:17 - down (00:14) +reboot system boot 6.16.8-arch3-1 Fri Sep 26 09:17 - 09:32 (00:15) +ivanbar* tty1 Thu Sep 25 21:03 - down (00:47) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 21:03 - 21:51 (00:47) +ivanbar* tty1 Thu Sep 25 20:59 - down (00:03) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 20:59 - 21:03 (00:04) +ivanbar* tty1 Thu Sep 25 20:39 - down (00:19) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 20:39 - 20:58 (00:19) +ivanbar* tty1 Thu Sep 25 20:00 - down (00:37) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 20:00 - 20:38 (00:38) +ivanbar* tty1 Thu Sep 25 15:15 - down (00:37) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 15:15 - 15:53 (00:38) +ivanbar* tty1 Thu Sep 25 14:39 - down (00:07) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 14:39 - 14:46 (00:07) +ivanbar* tty1 Thu Sep 25 14:37 - down (00:02) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 14:37 - 14:39 (00:02) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 13:03 - 13:03 (00:00) +ivanbar* tty1 Thu Sep 25 12:23 - down (00:40) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 12:23 - 13:03 (00:40) +ivanbar* tty1 Thu Sep 25 12:16 - down (00:06) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 12:16 - 12:22 (00:06) +ivanbar* tty1 Thu Sep 25 11:19 - down (00:56) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 11:19 - 12:16 (00:56) +ivanbar* tty1 Thu Sep 25 09:54 - down (01:18) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 09:54 - 11:12 (01:18) +ivanbar* tty1 Thu Sep 25 01:48 - down (00:53) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 01:48 - 02:42 (00:53) +ivanbar* tty1 Thu Sep 25 01:25 - down (00:23) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 01:24 - 01:48 (00:23) +ivanbar* tty1 Thu Sep 25 00:51 - down (00:33) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 00:51 - 01:24 (00:33) +ivanbar* tty1 Thu Sep 25 00:49 - down (00:01) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 00:49 - 00:50 (00:01) +ivanbar* tty1 Thu Sep 25 00:44 - down (00:04) +reboot system boot 6.16.8-arch3-1 Thu Sep 25 00:44 - 00:49 (00:04) +ivanbar* tty1 Wed Sep 24 22:54 - down (01:48) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 22:54 - 00:43 (01:49) +ivanbar* tty1 Wed Sep 24 21:40 - down (00:10) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 21:40 - 21:50 (00:10) +ivanbar* tty1 Wed Sep 24 20:28 - down (00:18) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 20:28 - 20:47 (00:18) +ivanbar* tty1 Wed Sep 24 20:26 - down (00:01) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 20:26 - 20:28 (00:01) +ivanbar* tty4 Wed Sep 24 20:18 - 20:26 (00:07) +ivanbar* tty1 Wed Sep 24 20:17 - down (00:08) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 20:17 - 20:26 (00:09) +ivanbar* tty4 Wed Sep 24 20:14 - 20:17 (00:02) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 20:14 - 20:17 (00:02) +ivanbar* tty4 Wed Sep 24 20:08 - 20:14 (00:05) +ivanbar* tty1 Wed Sep 24 20:07 - down (00:06) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 20:07 - 20:14 (00:06) +ivanbar* tty1 Wed Sep 24 19:56 - down (00:11) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 19:56 - 20:07 (00:11) +ivanbar* tty1 Wed Sep 24 19:32 - down (00:23) +reboot system boot 6.16.8-arch3-1 Wed Sep 24 19:32 - 19:56 (00:23) +reboot system boot 6.15.4-arch2-1 Wed Sep 24 18:28 - 18:28 (00:00) + +wtmp begins Wed Sep 24 18:28:45 2025 +Downloads +Pictures +Programs +Projects +Videos +Последний раз пароль был изменён : сен 24, 2025 +Срок действия пароля истекает : никогда +Пароль будет деактивирован через : никогда +Срок действия учётной записи истекает : никогда +Минимальное количество дней между сменой пароля : 0 +Максимальное количество дней между сменой пароля : 99999 +Количество дней с предупреждением перед деактивацией пароля : 7 +ivanbaran +root:x:0:0::/root:/usr/bin/bash +bin:x:1:1::/:/usr/bin/nologin +daemon:x:2:2::/:/usr/bin/nologin +mail:x:8:12::/var/spool/mail:/usr/bin/nologin +ftp:x:14:11::/srv/ftp:/usr/bin/nologin +http:x:33:33::/srv/http:/usr/bin/nologin +nobody:x:65534:65534:Kernel Overflow User:/:/usr/bin/nologin +dbus:x:81:81:System Message Bus:/:/usr/bin/nologin +systemd-coredump:x:979:979:systemd Core Dumper:/:/usr/bin/nologin +systemd-network:x:978:978:systemd Network Management:/:/usr/bin/nologin +systemd-oom:x:977:977:systemd Userspace OOM Killer:/:/usr/bin/nologin +systemd-journal-remote:x:976:976:systemd Journal Remote:/:/usr/bin/nologin +systemd-resolve:x:975:975:systemd Resolver:/:/usr/bin/nologin +systemd-timesync:x:974:974:systemd Time Synchronization:/:/usr/bin/nologin +tss:x:973:973:tss user for tpm2:/:/usr/bin/nologin +uuidd:x:972:972:UUID generator helper daemon:/var/lib/libuuid:/usr/bin/nologin +alpm:x:971:971:Arch Linux Package Management:/:/usr/bin/nologin +polkitd:x:102:102:User for polkitd:/:/usr/bin/nologin +avahi:x:970:970:Avahi mDNS/DNS-SD daemon:/:/usr/bin/nologin +ivanbaran:x:1000:1000::/home/ivanbaran:/usr/bin/fish +git:x:969:969:git daemon user:/:/usr/bin/git-shell +rtkit:x:133:133:RealtimeKit:/proc:/usr/bin/nologin +sddm:x:967:967:SDDM Greeter Account:/var/lib/sddm:/usr/bin/nologin +ivanbaran:x:1000:1000::/home/ivanbaran:/usr/bin/fish diff --git a/labLinux/lab2/test.sh b/labLinux/lab2/test.sh new file mode 100755 index 0000000..ca8b21f --- /dev/null +++ b/labLinux/lab2/test.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cat ./my_file +echo $? diff --git a/labLinux/lab2/test2.sh b/labLinux/lab2/test2.sh new file mode 100755 index 0000000..ca8b21f --- /dev/null +++ b/labLinux/lab2/test2.sh @@ -0,0 +1,3 @@ +#!/bin/sh +cat ./my_file +echo $? diff --git a/labLinux/lab3/FizzBuzz.sh b/labLinux/lab3/FizzBuzz.sh new file mode 100755 index 0000000..e85c7fb --- /dev/null +++ b/labLinux/lab3/FizzBuzz.sh @@ -0,0 +1,17 @@ +#!/bin/bash +num=$((RANDOM % 101 + 100)) +echo "Случайное число: $num" + +for (( i=1; i<=$num; i++ )); do + echo "текущее число $i" + if (( num % 15 == 0 )); then + echo "FizzBuzz" + elif (( num % 3 == 0 )); then + echo "Fizz" + elif (( num % 5 == 0 )); then + echo "Buzz" + else + echo "$num" + fi + echo "--------------------------" +done \ No newline at end of file diff --git a/labLinux/lab3/factorial.sh b/labLinux/lab3/factorial.sh new file mode 100755 index 0000000..cf9911f --- /dev/null +++ b/labLinux/lab3/factorial.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +factorial() { + if [ $1 -le 1 ]; then + echo 1 + else + local prev=$(factorial $(( $1 - 1 ))) + echo $(( $1 * prev )) + fi +} + +read -p "Введите число: " n +result=$(factorial $n) +echo "Факториал $n равен $result" \ No newline at end of file diff --git a/labLinux/lab3/find.sh b/labLinux/lab3/find.sh new file mode 100755 index 0000000..e073b94 --- /dev/null +++ b/labLinux/lab3/find.sh @@ -0,0 +1,10 @@ +#!/bin/bash +for item in "$HOME"/*; do + if [ -d "$item" ]; then + echo "$item — это директория" + elif [ -f "$item" ]; then + echo "$item — это файл" + else + echo "$item — это не файл и не директория" + fi +done diff --git a/labLinux/lab3/nums.sh b/labLinux/lab3/nums.sh new file mode 100755 index 0000000..1a891de --- /dev/null +++ b/labLinux/lab3/nums.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +read -p "Введите числа через пробел: " -a nums +sum=0 + +for n in "${nums[@]}"; do + ((sum += n)) +done + +echo "Сумма чисел: $sum" diff --git a/labLinux/lab3/oneToten.sh b/labLinux/lab3/oneToten.sh new file mode 100755 index 0000000..268ebe8 --- /dev/null +++ b/labLinux/lab3/oneToten.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +for i in {1..10}; do + echo $i + +done \ No newline at end of file diff --git a/labLinux/lab4/main.py b/labLinux/lab4/main.py new file mode 100755 index 0000000..129f72b --- /dev/null +++ b/labLinux/lab4/main.py @@ -0,0 +1,9 @@ +import sys +def main(n:int) -> int: + if n < 998: + n = n+1 + return main(n) + else: + return n +print(main(0)) +print(sys.getrecursionlimit()) # Обычно выведет 1000 \ No newline at end of file diff --git a/labLinux/lab4/text1.txt b/labLinux/lab4/text1.txt new file mode 100755 index 0000000..1e9df35 --- /dev/null +++ b/labLinux/lab4/text1.txt @@ -0,0 +1,13 @@ +редактор Vim — это мощный инструмент для работы с текстом, +созданный с упором на скорость и эффективность. +Он управляется в основном с клавиатуры, +что позволяет опытным пользователям выполнять сложные операции без лишних движений. +Вместо привычных кнопок и меню здесь используются команды, +которые можно комбинировать, +создавая собственные последовательности действий. +редактор Vim поддерживает множество режимов работы: обычный, +вставки, визуальный и командный. +Такой подход помогает разделить процесс редактирования, +набора и управления, что снижает вероятность ошибок и ускоряет работу. +Благодаря системе плагинов и широким возможностям настройки, +редактор Vim можно адаптировать под любые задачи — от написания кода до ведения заметок diff --git a/labLinux/lab4/text2.txt b/labLinux/lab4/text2.txt new file mode 100755 index 0000000..0659044 --- /dev/null +++ b/labLinux/lab4/text2.txt @@ -0,0 +1,26 @@ +Какая ночь! Я не могу. +Не спится мне. Такая лунность. +Еще как будто берегу +В душе утраченную юность. +Подруга охладевших лет, +Не называй игру любовью, +Пусть лучше этот лунный свет +Ко мне струится к изголовью. +Пусть искаженные черты +Он обрисовывает смело, — +Ведь разлюбить не сможешь ты, +Как полюбить ты не сумела. + +Повтор стиха: +Какая ночь! Я не могу. +Не спится мне. Такая лунность. +Еще как будто берегу +В душе утраченную юность. +Подруга охладевших лет, +Не называй игру любовью, +Пусть лучше этот лунный свет +Ко мне струится к изголовью. +Пусть искаженные черты +Он обрисовывает смело, — +Ведь разлюбить не сможешь ты, +Как полюбить ты не сумела. diff --git a/labLinux/lab5/capter1.txt b/labLinux/lab5/capter1.txt new file mode 100755 index 0000000..6ca4431 --- /dev/null +++ b/labLinux/lab5/capter1.txt @@ -0,0 +1,30 @@ +Всё началось в 1917-02-23, когда город впервые услышал выстрелы на Невском. +На следующий день, 1917-02-24, улицы заполнились людьми с красными флагами. +Я тогда работал на Путиловском заводе и не знал, чем всё это закончится. +К 1917.03.01 уже не было ни полиции, ни начальников. +Власть будто растворилась в холодном воздухе. +Я писал брату 1917-03-05, что чувствую запах перемен. +Ответ пришёл только 1917-03-12 — он боялся, что мы повторим судьбу Франции. +Когда наступило 1917-04-03, в город вернулся Ленин. +Толпа встречала его у Финляндского вокзала, словно спасителя. +Я стоял в конце площади и не понимал, чего ждать дальше. +К 1917-05-20 начались первые забастовки против временного правительства. +На заводе говорили, что скоро всё решится. +1917-06-10 стало ясно — нас ждёт новая буря. +В тот день город гудел, как раскалённая печь. +1917-07-04 выстрелы прозвучали у самой реки. +1917-07-05 утром мы уже знали: восстание подавлено. +Кто-то исчез, кто-то ушёл на фронт. +1917-08-31 на завод пришёл новый комиссар с красной звездой на шапке. +Он говорил просто: “Теперь всё будет по-новому”. +1917-09-15 хлеба стало меньше, а очереди — длиннее. +Но в глазах людей всё чаще мелькала надежда. +1917-10-23 я видел, как солдаты грузили винтовки у Смольного. +1917-10-25 город снова гремел от залпов. +Я не спал двое суток и слышал, как колокола били тревогу. +1917-10-26 утром сказали: Зимний взят. +Мы просто смотрели друг на друга, не веря. +1917-11-01 я получил письмо от брата: “Ты жив?” +Я ответил коротко — “Да, но всё изменилось”. +1917-12-10 мы уже работали под красным флагом. +И я понимал, что началась новая эпоха. diff --git a/labLinux/lab5/capter2.txt b/labLinux/lab5/capter2.txt new file mode 100755 index 0000000..d63b19a --- /dev/null +++ b/labLinux/lab5/capter2.txt @@ -0,0 +1,10 @@ +Всё началось в 1917-02-23, когда город впервые услыша +На следующий день, 1917-02-24, улицы заполнились людьЗадача:Сегодня я вышел на улицу и TODO почувствовал свежий ветер. +Я тогда работал на Путиловском заводе и не знал, чем Задача:Птицы пели, создавая атмосферу TODO спокойствия и умиротворения. +К 1917.03.01 уже не было ни полиции, ни начальников. Задача:Я решил пройтись по парку, TODO наслаждаясь солнечными лучами. +Задача:Вдруг я заметил TODO красивый цветок, который хотел сфотографировать. +Задача:Возвращаясь домой, я размышлял о TODO планах на будущее. +Задача:Вечером я сел с чашкой TODO чая и записал все впечатления дня в дневник. +Задача:Мои мысли были сосредоточены на TODO важной встрече завтра. +Задача:TODO: составить список дел на день и приоритеты. +Задача:Прогулка помогла мне очистить TODO разум и почувствовать легкость. diff --git a/labLinux/lab5/capter3.txt b/labLinux/lab5/capter3.txt new file mode 100755 index 0000000..3786d6f --- /dev/null +++ b/labLinux/lab5/capter3.txt @@ -0,0 +1,9 @@ +Всё началось в 1917-02-23, когда город впервые услыша +Удалить: составить список дел на завтра и приоритеты. +На следующий день, 1917-02-24, улицы заполнились людь +Я тогда работал на Путиловском заводе и не знал, чем +К father 1917.03.01 уже не было ни полиции, ни начальников. +разделительная строка +Удалить: father составить список дел на завтра и приоритеты. + + diff --git a/labLinux/lab7/lab7.odt b/labLinux/lab7/lab7.odt new file mode 100755 index 0000000..ac7a32b Binary files /dev/null and b/labLinux/lab7/lab7.odt differ diff --git a/labLinux/lab8/lab8.odt b/labLinux/lab8/lab8.odt new file mode 100755 index 0000000..d62af30 Binary files /dev/null and b/labLinux/lab8/lab8.odt differ diff --git a/labPython/ind_project b/labPython/ind_project new file mode 160000 index 0000000..aac191e --- /dev/null +++ b/labPython/ind_project @@ -0,0 +1 @@ +Subproject commit aac191e4d447e2a1722eb7f391e927bef1e1c77f diff --git a/labPython/lab1/TheOne1.py b/labPython/lab1/TheOne1.py new file mode 100755 index 0000000..1217b0a --- /dev/null +++ b/labPython/lab1/TheOne1.py @@ -0,0 +1,13 @@ +r1 = 2 +r2 = 1 +pi = 3,14 + + +while True: + x = float(input()) + y = float(input()) + + if x**2+y**2<=r1**2 and x**2+y**2>=r2**2 and (x >= 0 or y >= 0): + print("yes") + else: + print("no") diff --git a/labPython/lab1/TheOne23.py b/labPython/lab1/TheOne23.py new file mode 100755 index 0000000..186cdf7 --- /dev/null +++ b/labPython/lab1/TheOne23.py @@ -0,0 +1,31 @@ +x = int(input()) +x = (x - 1996) % 12 + +text = "" +match x: + case 0: + text = "крыса" + case 1: + text = "бык" + case 2: + text = "тигр" + case 3: + text = "кролик" + case 4: + text = "дракон" + case 5: + text = "змея" + case 6: + text = "лошадь" + case 7: + text = "овца" + case 8: + text = "обезьяна" + case 9: + text = "курица" + case 10: + text = "собака" + case 11: + text = "свинья" + +print(text) diff --git a/labPython/lab1/__pycache__/windows.cpython-313.pyc b/labPython/lab1/__pycache__/windows.cpython-313.pyc new file mode 100755 index 0000000..6ebd9b2 Binary files /dev/null and b/labPython/lab1/__pycache__/windows.cpython-313.pyc differ diff --git a/labPython/lab1/case5.py b/labPython/lab1/case5.py new file mode 100755 index 0000000..2700197 --- /dev/null +++ b/labPython/lab1/case5.py @@ -0,0 +1,53 @@ +import curses +from curses import wrapper + +from windows import StaticWindow +from windows import InputWindow + +def main(stdscr): + stdscr.clear() + stdscr.refresh + y, x = stdscr.getmaxyx() + ch = 0 + text = "" + while (ch!=24): + + stdscr.clear() + stdscr.refresh + + calculate = StaticWindow((x//2)-len(text)//2-3, (y//2)+4, text,"",True) + calculate.draw() + + + curses.curs_set(1) + function = InputWindow((x//2)-5, (y//2)-5, 10, 3, "function", 6) + xInput = InputWindow((x//2)-5, (y//2)-2, 10, 3, "x", x) + yInput = InputWindow((x//2)-5, (y//2)+1, 10, 3, "y", x) + + function.draw() + xInput.draw() + yInput.draw() + + try: + function = int(function.editResize()) + xInput = int(xInput.editResize()) + yInput = int(yInput.editResize()) + + text = "нет такой операции" + curses.curs_set(0) + if function == 1: + text = f"x+y={xInput+yInput}" + elif function == 2: + text = f"x-y={xInput-yInput}" + elif function == 3: + text = f"x*y={xInput*yInput}" + elif function == 4: + text = f"x/y={xInput//yInput}" + calculate.clear() + except: + pass + + calculate = StaticWindow((x//2)-len(text)//2-3, (y//2)+4, text,"",True) + calculate.draw() + ch = stdscr.getch() +wrapper(main) diff --git a/labPython/lab1/number5_2.py b/labPython/lab1/number5_2.py new file mode 100755 index 0000000..e2bd2bd --- /dev/null +++ b/labPython/lab1/number5_2.py @@ -0,0 +1,12 @@ +from math import sqrt + +print("Введите координаты x1,y1") +x1 = int(input()) +y1 = int(input()) +print("Веедите координаты x2,y2") +x2 = int(input()) +y2 = int(input()) + + + +print(sqrt((x2-x1)**2+(y2-y1)**2)) \ No newline at end of file diff --git a/labPython/lab1/number6_7.py b/labPython/lab1/number6_7.py new file mode 100755 index 0000000..2048fd7 --- /dev/null +++ b/labPython/lab1/number6_7.py @@ -0,0 +1,6 @@ +print("введите R1, R2") +R1 = float(input()) +R2 = float(input()) + +pi = 3.1415 +print((R2**2*pi) - (R1**2*pi)) \ No newline at end of file diff --git a/labPython/lab1/one45.py b/labPython/lab1/one45.py new file mode 100755 index 0000000..e54dba4 --- /dev/null +++ b/labPython/lab1/one45.py @@ -0,0 +1,21 @@ +ticket = int(input()) +# if range(str(ticket)) == 4: +num1 = ((ticket - (ticket % 100000)) // 100000) +num2 = ((ticket%100000 - (ticket % 10000)) // 10000) +num3 = ((ticket%10000 - (ticket % 1000)) // 1000) +num4 = ((ticket%1000 - (ticket % 100))// 100) +num5 = ((ticket%100 - (ticket % 10))// 10) +num6 = (ticket%10) + +if num2 == 0 and num1 == 0: + if num3+num4==num5+num6: + print("good tocket") + else: + print("not good") +else: + if num1+num2+num3==num4+num5+num6: + print("good ticket") + else: + print("not good") + +print(num1,num2,num3,num4,num5,num6) diff --git a/labPython/lab1/windows.py b/labPython/lab1/windows.py new file mode 100755 index 0000000..f61fea3 --- /dev/null +++ b/labPython/lab1/windows.py @@ -0,0 +1,277 @@ +import curses + +class InputWindow(): # Позиция x, позиция y, ширина, высота, текст окна. + + def __init__(self, position_x, position_y, width, heigth, text="", xMax=6): + + self.x = position_x + + self.y = position_y + + self.w = width + + self.h = heigth + + self.t = text + + self.inputwin = curses.newwin(self.h-2, self.w-3, self.y+1, self.x+2) # Разметка окна ввода + + self.win = curses.newwin(self.h, self.w, self.y, self.x) # Основное окно с рамкой + + self.xMax = xMax + + + + def draw(self): + + + + # Главное окно + + self.win.border() # Рамка + + self.win.addstr(0, 1, self.t) # Надпись на окне(не более 8 символов) + + + + self.win.refresh() + + self.inputwin.refresh() + + + + def edit(self): # Статическое окно + + input = self.inputwin # Окно ввода + + input.clear() + + text = "" # Возвращаемый текст + + cursX = 0 # Позиция курсора + + + + while True: + + + + # Каждую итерацию цикла отрисовываем окно, ждем ввод, в зависимости от ввода делаем действие + + input.addstr(0, 0, text) + + input.move(0, cursX) + + self.win.refresh() + + self.inputwin.refresh() + + + + ch = input.getch() + + + + if ch == 7: # Проверяем на Ctrl+g + + return text + + elif ch == 10: # Проверям на enter + + return text + + elif cursX > self.w-5: + + StaticWindow(1, 0, f"Maximum lenght {self.w-4}") + + + + elif ch == 127: # Проверяем на backspace + + if text!="": + + text = text[:-1] + + cursX -= 1 + + input.clear() + + input.refresh() + + + + else: # Отрисосвываем текст + + text += chr(ch) + + cursX += 1 + + + + + + + + def editResize(self): # Динамически масштабируемое окно + + input = self.inputwin # Окно ввода + + input.clear() + + text = "" # Возвращаемый текст + + cursX = 0 # Позиция курсора + + while True: + + # Каждую итерацию цикла отрисовываем окно, ждем ввод, в зависимости от ввода делаем действие + + input.addstr(0, 0, text) + + input.move(0, cursX) + + self.win.refresh() + + self.inputwin.refresh() + + + + ch = input.getch() + + + + if ch == 7: # Проверяем на Ctrl+g + + return text + + elif ch == 10: # Проверям на enter + + return text + + elif ch == 127: # Проверяем на backspace + + if text!="": + + text = text[:-1] + + cursX -= 1 + + input.clear() + + input.refresh() + + + + elif len(text) <= (self.xMax - 6): # Отрисосвываем текст + + text += chr(ch) + + cursX += 1 + + + + if cursX > self.w-4: # Динамическое увеличение рамки и текстового поля + + self.x -=1 + + self.w +=2 + + + + input.mvwin(self.y+1, self.x+2) + + self.win.mvwin(self.y, self.x) + + + + input.resize(self.h-2, self.w-3) # Разметка окна ввода + + self.win.resize(self.h, self.w) # Основное окно с рамкой + + + + self.win.border() + + self.win.addstr(0, 1, self.t) # Надпись на окне(не более 8 символов) + + + + def clear(self): + + + + self.inputwin.clear() + + self.inputwin.refresh() + + + +class StaticWindow(): # Поция x, позиция y, текст + + def __init__(self, position_x, position_y, text, textInline="", reverse=False, minHeigtg=False): + + self.x = position_x + + self.y = position_y + + if len(text) < 20 and minHeigtg: + + self.w = 24 + + else: + + self.w = len(text)+4 + + self.h = 3 + + self.t = text + + self.ti = textInline + + self.r = reverse + + + + self.win = curses.newwin(self.h, self.w, self.y, self.x) + + + + def draw(self): + + if self.r: + + self.win.attron(curses.A_REVERSE) + + self.win.border() + + self.win.attroff(curses.A_REVERSE) + + self.win.attron(curses.A_REVERSE) + + self.win.addstr(0, 1, self.ti) + + self.win.attroff(curses.A_REVERSE) + + + + else: + + self.win.border() + + self.win.addstr(0, 1, self.ti) + + + + self.win.addstr(1,2, self.t) + + self.win.refresh() + + + + def clear(self): + + + + self.win.clear() + + self.win.refresh() \ No newline at end of file diff --git a/labPython/lab14/task_1.bin b/labPython/lab14/task_1.bin new file mode 100755 index 0000000..43a353f Binary files /dev/null and b/labPython/lab14/task_1.bin differ diff --git a/labPython/lab14/task_1.py b/labPython/lab14/task_1.py new file mode 100755 index 0000000..374da5c --- /dev/null +++ b/labPython/lab14/task_1.py @@ -0,0 +1,11 @@ +# task Name: File2 +# Дано имя файла и целое число N (> 1). Создать файл целых чисел +# с даннымименемизаписать в него N первых положительных четных чисел (2, 4, …). + +N = int(input()) + +with open("task_1.bin", "wb") as binfile: + i = 0 + while i != N: + i += 2 + binfile.write(i.to_bytes(4, byteorder="big")) diff --git a/labPython/lab15/data.txt b/labPython/lab15/data.txt new file mode 100644 index 0000000..4d7855d --- /dev/null +++ b/labPython/lab15/data.txt @@ -0,0 +1,14 @@ +1 +11 +10 +16 11 2002 3 +14 11 2003 4 +14 11 2000 5 +18 11 2000 3 +14 11 2003 8 +14 11 2000 7 +19 11 2005 4 +14 11 2003 5 +12 11 2002 5 +13 11 2000 5 +2 diff --git a/labPython/lab15/students.bin b/labPython/lab15/students.bin new file mode 100644 index 0000000..25039fa Binary files /dev/null and b/labPython/lab15/students.bin differ diff --git a/labPython/lab15/task_1.py b/labPython/lab15/task_1.py new file mode 100644 index 0000000..45a23f1 --- /dev/null +++ b/labPython/lab15/task_1.py @@ -0,0 +1,79 @@ +class FitnessRecord: + def __init__(self, month, year, client_code, duration): + self.month = int(month) + self.year = int(year) + self.client_code = int(client_code) + self.duration = int(duration) + + +def run_task_c4(): + while True: + print("1. Ввести данные и найти результат") + print("0. Выход") + + choice = input("Выберите действие: ") + + if choice == "0": + break + elif choice == "1": + try: + n_input = input("Введите количество записей N: ") + if not n_input.isdigit(): + raise ValueError("N должно быть целым числом.") + n = int(n_input) + + records = [] + for i in range(n): + while True: + try: + line = input( + f"Запись {i + 1} (<Месяц> <Год> <Код> <Часы>): " + ).split() + if len(line) != 4: + raise ValueError("Нужно ввести 4 числа через пробел.") + + m, y, c, d = map(int, line) + + if not (1 <= m <= 12): + raise ValueError("Месяц: 1-12") + if not (2000 <= y <= 2010): + raise ValueError("Год: 2000-2010") + if not (10 <= c <= 99): + raise ValueError("Код: 10-99") + if not (1 <= d <= 30): + raise ValueError("Часы: 1-30") + + records.append(FitnessRecord(m, y, c, d)) + break + except ValueError as e: + print(f"Ошибка ввода: {e}. Попробуйте еще раз.") + + if not records: + print("Список пуст.") + continue + + best_rec = records[0] + for i in range(1, len(records)): + current = records[i] + if current.duration > best_rec.duration: + best_rec = current + elif current.duration == best_rec.duration: + if (current.year > best_rec.year) or ( + current.year == best_rec.year + and current.month >= best_rec.month + ): + best_rec = current + + print( + f"\nРезультат: {best_rec.duration} {best_rec.year} {best_rec.month}" + ) + + except ValueError as e: + print(f"Критическая ошибка: {e}") + else: + print("Неверный пункт меню.") + + +if __name__ == "__main__": + run_task_c4() + diff --git a/labPython/lab15/task_2.py b/labPython/lab15/task_2.py new file mode 100644 index 0000000..3d6a3c5 --- /dev/null +++ b/labPython/lab15/task_2.py @@ -0,0 +1,121 @@ +import pickle +import os +import random + + +class Student: + def __init__(self, surname, name, grade, extra_data): + self.surname = surname + self.name = name + self.grade = int(grade) + self.extra_data = extra_data + + def __str__(self): + base = f"{self.surname:<15} | {self.name:<15} | {self.grade:<5} | " + if self.grade == 1: + return base + f"Скорость: {self.extra_data:<10}" + elif self.grade == 4: + return base + f"Балл аттест.: {self.extra_data:<10}" + elif self.grade in [2, 3]: + return base + f"Математика: {self.extra_data:<10}" + return base + + +def input_student(): + surname = input("Введите фамилию: ") + name = input("Введите имя: ") + while True: + try: + grade = int(input("Введите класс (1-4): ")) + if grade not in [1, 2, 3, 4]: + raise ValueError + break + except ValueError: + print("Ошибка: введите класс от 1 до 4.") + + extra_data = None + while True: + try: + if grade == 1: + extra_data = int(input("Скорость чтения (слов/мин): ")) + elif grade == 4: + extra_data = float(input("Балл аттестации (1-100): ")) + if not (1 <= extra_data <= 100): + raise ValueError + elif grade in [2, 3]: + extra_data = float(input("Оценка по математике (1-10): ")) + if not (1 <= extra_data <= 10): + raise ValueError + break + except ValueError: + print("Некорректные данные для этого класса.") + + return Student(surname, name, grade, extra_data) + + +def save_to_binary(filename, students): + with open(filename, "wb") as f: + pickle.dump(students, f) + + +def read_from_binary(filename): + if not os.path.exists(filename): + return [] + with open(filename, "rb") as f: + return pickle.load(f) + + +def run_task_2(): + filename = "students.bin" + while True: + print("\n--- Меню: Ученики (Бинарные файлы) ---") + print("1. Ввести N учеников вручную и сохранить") + print("2. Создать файл со случайными данными") + print("3. Прочитать файл и вывести таблицу") + print("0. Выход") + + choice = input("Ваш выбор: ") + + if choice == "0": + break + elif choice == "1": + try: + n = int(input("Введите N: ")) + students = [input_student() for _ in range(n)] + save_to_binary(filename, students) + except ValueError: + print("Ошибка ввода числа.") + elif choice == "2": + surnames = ["Иванов", "Петров", "Сидоров", "Смирнов"] + names = ["Алексей", "Мария", "Иван", "Анна"] + random_students = [] + for _ in range(5): + g = random.randint(1, 4) + if g == 1: + ex = random.randint(30, 100) + elif g == 4: + ex = round(random.uniform(50.0, 100.0), 1) + else: + ex = round(random.uniform(2.0, 10.0), 1) + random_students.append( + Student(random.choice(surnames), random.choice(names), g, ex) + ) + save_to_binary(filename, random_students) + print("Файл заполнен случайными данными.") + elif choice == "3": + data = read_from_binary(filename) + if not data: + print("Файл пуст или не существует.") + else: + print( + f"\n{'Фамилия':<15} | {'Имя':<15} | {'Класс':<5} | Доп. информация" + ) + print("-" * 60) + for s in data: + print(s) + else: + print("Неверный выбор.") + + +if __name__ == "__main__": + run_task_2() diff --git a/labPython/lab15/task_3.py b/labPython/lab15/task_3.py new file mode 100644 index 0000000..3c8364a --- /dev/null +++ b/labPython/lab15/task_3.py @@ -0,0 +1,89 @@ +class FitnessRecord: + def __init__(self, duration, client_code, year, month): + self.duration = duration + self.client_code = client_code + self.year = year + self.month = month + + +def solve(): + while True: + print("\n--- Меню ExamTaskC16 ---") + print("1. Ввести данные и выполнить расчет") + print("2. Выход") + + choice = input("Выберите вариант: ") + + if choice == "2": + break + elif choice == "1": + try: + k_code = int(input("Введите код клиента K (10-99): ")) + n = int(input("Введите количество строк N: ")) + + records = [] + for i in range(n): + print(f"Строка {i + 1} из {n}") + line = input( + "Формат <Продолжительность> <Код клиента> <Год> <Номер месяца>: " + ).split() + + if len(line) != 4: + print("Ошибка: должно быть 4 числа.") + continue + + dur, code, yr, mnth = map(int, line) + records.append(FitnessRecord(dur, code, yr, mnth)) + + target_records = [r for r in records if r.client_code == k_code] + + if not target_records: + print("Нет данных") + continue + + years = {} + for r in target_records: + if r.duration == 0: + continue + if r.year not in years: + years[r.year] = [] + years[r.year].append(r) + + if not years: + print("Нет данных") + continue + + results = [] + for year in years: + year_records = years[year] + + min_dur = min(r.duration for r in year_records) + + candidates = [r for r in year_records if r.duration == min_dur] + + best_month_record = max(candidates, key=lambda x: x.month) + + results.append( + { + "duration": min_dur, + "year": year, + "month": best_month_record.month, + } + ) + + results.sort(key=lambda x: (x["duration"], x["year"])) + + print("\nРезультат:") + for res in results: + print(f"{res['duration']} {res['year']} {res['month']}") + + except ValueError: + print("Ошибка: вводите только целые числа.") + except Exception as e: + print(f"Произошла ошибка: {e}") + else: + print("Неверный выбор.") + + +if __name__ == "__main__": + solve() diff --git a/labPython/lab16/data.txt b/labPython/lab16/data.txt new file mode 100644 index 0000000..c7f3bd9 --- /dev/null +++ b/labPython/lab16/data.txt @@ -0,0 +1,2 @@ +10 +70 65 39 94 8 16 22 58 63 15 \ No newline at end of file diff --git a/labPython/lab16/task_1.py b/labPython/lab16/task_1.py new file mode 100644 index 0000000..c62c30a --- /dev/null +++ b/labPython/lab16/task_1.py @@ -0,0 +1,44 @@ +class Node: + def __init__(self, data, next=None): + self.data = data + self.next = next + + +def push(top, d): + return Node(d, top) + + +def print_stack(top): + cur = top + while cur: + print(cur.data, end=" ") + cur = cur.next + print() + + +top = None + +while True: + try: + print("\n1 - создать стек") + print("2 - добавить элемент") + print("3 - показать стек") + print("0 - выход") + c = input(">> ") + + if c == "1": + top = None + arr = list(map(int, input("Введите числа: ").split())) + for x in arr: + top = push(top, x) + elif c == "2": + d = int(input("Введите D: ")) + top = push(top, d) + print("Новая вершина:", top.data if top else None) + elif c == "3": + print_stack(top) + elif c == "0": + break + except: + print("Ошибка ввода") + diff --git a/labPython/lab16/task_2.py b/labPython/lab16/task_2.py new file mode 100644 index 0000000..3a26722 --- /dev/null +++ b/labPython/lab16/task_2.py @@ -0,0 +1,75 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +def enqueue(head, tail, d): + node = Node(d) + if not head: + return node, node + tail.next = node + return head, node + + +def merge(h1, h2): + if not h1: + return h2 + if not h2: + return h1 + + if h1.data < h2.data: + head = h1 + h1 = h1.next + else: + head = h2 + h2 = h2.next + + cur = head + + while h1 and h2: + if h1.data < h2.data: + cur.next = h1 + h1 = h1.next + else: + cur.next = h2 + h2 = h2.next + cur = cur.next + + cur.next = h1 if h1 else h2 + return head + + +def print_q(h): + while h: + print(h.data, end=" ") + h = h.next + print() + + +h1 = t1 = None +h2 = t2 = None + +while True: + try: + print("\n1 - создать очередь 1") + print("2 - создать очередь 2") + print("3 - объединить") + print("0 - выход") + c = input(">> ") + + if c == "1": + h1 = t1 = None + for x in map(int, input().split()): + h1, t1 = enqueue(h1, t1, x) + elif c == "2": + h2 = t2 = None + for x in map(int, input().split()): + h2, t2 = enqueue(h2, t2, x) + elif c == "3": + res = merge(h1, h2) + print_q(res) + elif c == "0": + break + except: + print("Ошибка") diff --git a/labPython/lab16/task_3.py b/labPython/lab16/task_3.py new file mode 100644 index 0000000..355cc5d --- /dev/null +++ b/labPython/lab16/task_3.py @@ -0,0 +1,43 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +def build(arr): + head = None + for x in reversed(arr): + node = Node(x) + node.next = head + head = node + return head + + +def find_second(head): + count = 0 + while head: + if head.data % 6 == 0: + count += 1 + if count == 2: + return head + head = head.next + return None + + +while True: + try: + print("\n1 - создать список") + print("2 - найти элемент") + print("0 - выход") + c = input(">> ") + + if c == "1": + arr = list(map(int, input().split())) + head = build(arr) + elif c == "2": + res = find_second(head) + print(res.data if res else "nil") + elif c == "0": + break + except: + print("Ошибка") diff --git a/labPython/lab16/task_4.py b/labPython/lab16/task_4.py new file mode 100644 index 0000000..ef8d9a6 --- /dev/null +++ b/labPython/lab16/task_4.py @@ -0,0 +1,77 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +def build(arr): + head = None + for x in reversed(arr): + node = Node(x) + node.next = head + head = node + return head + + +def process(head, m): + if not head: + return head + + dummy = Node(0) + dummy.next = head + prev = dummy + cur = head + i = 1 + + while cur: + if i % 2 == 0: + node = Node(m) + prev.next = node + node.next = cur + prev = cur + cur = cur.next + i += 1 + else: + prev = cur + cur = cur.next + i += 1 + + return dummy.next + + +def print_list(h): + while h: + print(h.data, end=" ") + h = h.next + print() + + +def print_last_ref(h): + if not h: + print("None") + return + while h.next: + h = h.next + print(h) + + +while True: + try: + print("\n1 - создать список") + print("2 - обработать") + print("3 - вывести ссылку на последний элемент") + print("0 - выход") + c = input(">> ") + + if c == "1": + head = build(list(map(int, input().split()))) + elif c == "2": + m = int(input("M: ")) + head = process(head, m) + print_list(head) + elif c == "3": + print_last_ref(head) + elif c == "0": + break + except: + print("Ошибка") diff --git a/labPython/lab16/task_5.py b/labPython/lab16/task_5.py new file mode 100644 index 0000000..b25e79d --- /dev/null +++ b/labPython/lab16/task_5.py @@ -0,0 +1,56 @@ +# task: ListWork62 / Создание убывающего списка из файла + +import random + + +class Node: + def __init__(self, data): + self.data = data + self.next = None + + +def insert_desc(head, x): + node = Node(x) + if not head or x > head.data: + node.next = head + return node + cur = head + while cur.next and cur.next.data > x: + cur = cur.next + node.next = cur.next + cur.next = node + return head + + +def print_list(h): + while h: + print(h.data, end=" ") + h = h.next + print() + + +while True: + try: + print("\n1 - создать файл") + print("2 - обработать файл") + print("0 - выход") + c = input(">> ") + + if c == "1": + n = int(input("N: ")) + arr = [random.randint(1, 100) for _ in range(n)] + with open("data.txt", "w") as f: + f.write(str(n) + "\n") + f.write(" ".join(map(str, arr))) + elif c == "2": + with open("data.txt") as f: + n = int(f.readline()) + arr = list(map(int, f.readline().split())) + head = None + for x in arr: + head = insert_desc(head, x) + print_list(head) + elif c == "0": + break + except: + print("Ошибка") diff --git a/labPython/lab17/task_1.py b/labPython/lab17/task_1.py new file mode 100644 index 0000000..aed2145 --- /dev/null +++ b/labPython/lab17/task_1.py @@ -0,0 +1,63 @@ +class Node: + def __init__(self, data): + self.data = data + self.prev = None + self.next = None + + +def create_list(arr): + if not arr: + return None + head = Node(arr[0]) + cur = head + for x in arr[1:]: + n = Node(x) + cur.next = n + n.prev = cur + cur = n + return head + + +def print_list(head): + res = [] + while head: + res.append(str(head.data)) + head = head.next + print("Список:", " ".join(res) if res else "null") + + +def remove_odd_positions(head): + index = 1 + cur = head + new_head = None + last = None + while cur: + nxt = cur.next + if index % 2 == 0: + if not new_head: + new_head = cur + cur.prev = None + else: + last.next = cur + cur.prev = last + last = cur + index += 1 + cur = nxt + if last: + last.next = None + return new_head + + +while True: + try: + print("\n1 - Ввести список\n0 - Выход") + cmd = input("Выбор: ") + if cmd == "0": + break + if cmd == "1": + arr = list(map(int, input("Введите числа: ").split())) + head = create_list(arr) + head = remove_odd_positions(head) + print_list(head) + except: + print("Ошибка ввода") diff --git a/labPython/lab17/task_2.py b/labPython/lab17/task_2.py new file mode 100644 index 0000000..04fce1f --- /dev/null +++ b/labPython/lab17/task_2.py @@ -0,0 +1,58 @@ +class Node: + def __init__(self, data): + self.data = data + self.prev = None + self.next = None + + +def create_list(arr): + if not arr: + return None, None + head = Node(arr[0]) + cur = head + for x in arr[1:]: + n = Node(x) + cur.next = n + n.prev = cur + cur = n + return head, cur + + +def print_list(head): + res = [] + cur = head + while cur: + res.append(str(cur.data)) + cur = cur.next + print("Список:", " ".join(res)) + + +def shift(head, last, k): + if not head: + return head, last + last.next = head + head.prev = last + cur = head + for _ in range(k): + cur = cur.next + new_head = cur + new_last = cur.prev + new_last.next = None + new_head.prev = None + return new_head, new_last + + +while True: + try: + print("\n1 - Ввести список\n0 - Выход") + cmd = input("Выбор: ") + if cmd == "0": + break + if cmd == "1": + arr = list(map(int, input("Введите числа: ").split())) + k = int(input("Введите K: ")) + head, last = create_list(arr) + head, last = shift(head, last, k) + print_list(head) + except: + print("Ошибка") diff --git a/labPython/lab17/task_3.py b/labPython/lab17/task_3.py new file mode 100644 index 0000000..5dc92fd --- /dev/null +++ b/labPython/lab17/task_3.py @@ -0,0 +1,80 @@ +class Node: + def __init__(self, data): + self.data = data + self.prev = None + self.next = None + + +class IntList: + def __init__(self, head): + self.first = head + self.last = head + self.current = head + while self.last and self.last.next: + self.last = self.last.next + + def ToFirst(self): + self.current = self.first + + def ToNext(self): + if self.current and self.current.next: + self.current = self.current.next + + def SetData(self, d): + if self.current: + self.current.data = d + + def IsLast(self): + return self.current == self.last + + def process(self): + self.ToFirst() + index = 1 + count = 0 + while self.current: + count += 1 + if index % 2 == 1: + self.SetData(0) + if self.IsLast(): + break + self.ToNext() + index += 1 + return count + + def print_list(self): + cur = self.first + res = [] + while cur: + res.append(str(cur.data)) + cur = cur.next + print("Список:", " ".join(res)) + + +def create(arr): + if not arr: + return None + head = Node(arr[0]) + cur = head + for x in arr[1:]: + n = Node(x) + cur.next = n + n.prev = cur + cur = n + return head + + +while True: + try: + print("\n1 - Ввести список\n0 - Выход") + cmd = input("Выбор: ") + if cmd == "0": + break + if cmd == "1": + arr = list(map(int, input("Введите числа: ").split())) + head = create(arr) + lst = IntList(head) + n = lst.process() + print("Количество:", n) + lst.print_list() + except: + print("Ошибка") diff --git a/labPython/lab17/task_4.py b/labPython/lab17/task_4.py new file mode 100644 index 0000000..d7c8bdd --- /dev/null +++ b/labPython/lab17/task_4.py @@ -0,0 +1,65 @@ +class Node: + def __init__(self, data): + self.data = data + self.prev = self + self.next = self + + +def create_barrier_list(arr): + barrier = Node(0) + last = barrier + for x in arr: + n = Node(x) + n.prev = last + n.next = barrier + last.next = n + barrier.prev = n + last = n + return barrier + + +def print_list(barrier): + cur = barrier.next + res = [] + while cur != barrier: + res.append(str(cur.data)) + cur = cur.next + print("Список:", " ".join(res) if res else "пусто") + + +def split(barrier, current): + new_barrier = Node(0) + if current == barrier: + return new_barrier + last = barrier.prev + new_barrier.next = current + new_barrier.prev = last + current.prev.next = barrier + barrier.prev = current.prev + current.prev = new_barrier + last.next = new_barrier + return new_barrier + + +while True: + try: + print("\n1 - Ввести список\n0 - Выход") + cmd = input("Выбор: ") + if cmd == "0": + break + if cmd == "1": + arr = list(map(int, input("Введите числа: ").split())) + barrier = create_barrier_list(arr) + print_list(barrier) + idx = int(input("Индекс текущего элемента (с 1): ")) + cur = barrier.next + for _ in range(idx - 1): + if cur != barrier: + cur = cur.next + new_barrier = split(barrier, cur) + print("Первый список:") + print_list(barrier) + print("Второй список:") + print_list(new_barrier) + except: + print("Ошибка") diff --git a/labPython/lab18-19/task_1.py b/labPython/lab18-19/task_1.py new file mode 100644 index 0000000..00ee348 --- /dev/null +++ b/labPython/lab18-19/task_1.py @@ -0,0 +1,89 @@ +import random + + +class Game: + def __init__(self): + self.red = 2021 + self.green = 2022 + self.current = "Игрок" + + def get_divisors(self, n): + return [i for i in range(1, n + 1) if n % i == 0] + + def move(self, color, n): + if color == "r": + if self.green == 0: + return False + if n in self.get_divisors(self.green) and n <= self.red: + self.red -= n + return True + elif color == "g": + if self.red == 0: + return False + if n in self.get_divisors(self.red) and n <= self.green: + self.green -= n + return True + return False + + def computer_move(self): + if self.red == 0 and self.green == 0: + return + + options = [] + + if self.red > 0 and self.green > 0: + for d in self.get_divisors(self.green): + if d <= self.red: + options.append(("r", d)) + for d in self.get_divisors(self.red): + if d <= self.green: + options.append(("g", d)) + + if not options: + return + + color, n = random.choice(options) + self.move(color, n) + + if color == "r": + print(f"Компьютер убрал {n} красных камней") + else: + print(f"Компьютер убрал {n} зелёных камней") + + def is_over(self): + return self.red == 0 and self.green == 0 + + +while True: + game = Game() + + while True: + print(f"\nКрасные: {game.red}, Зелёные: {game.green}") + + if game.current == "Игрок": + try: + color = input("Выберите цвет (r/g) или exit: ") + if color == "exit": + break + + n = int(input("Введите количество: ")) + + if game.move(color, n): + if game.is_over(): + print("Вы победили!") + break + game.current = "Компьютер" + else: + print("Некорректный ход") + except: + print("Ошибка ввода") + + else: + game.computer_move() + if game.is_over(): + print("Победил компьютер") + break + game.current = "Игрок" + + if input("Сыграть ещё? (y/n): ") != "y": + break diff --git a/labPython/lab18-19/task_2.py b/labPython/lab18-19/task_2.py new file mode 100644 index 0000000..38b7474 --- /dev/null +++ b/labPython/lab18-19/task_2.py @@ -0,0 +1,55 @@ +import random + + +class Game: + def __init__(self): + self.sticks = [10.0] + self.current = "Игрок" + + def can_move(self): + return any(s >= 1 for s in self.sticks) + + def split(self, index, x): + stick = self.sticks[index] + if stick < 1 or x <= 0 or x >= stick: + return False + self.sticks.pop(index) + self.sticks.append(x) + self.sticks.append(stick - x) + return True + + def computer_move(self): + for i, s in enumerate(self.sticks): + if s >= 1: + x = round(s / 2, 2) + self.split(i, x) + print(f"Компьютер ломает палочку {s} на {x} и {round(s - x, 2)}") + return + + +while True: + game = Game() + while True: + print("\nПалочки:", game.sticks) + if not game.can_move(): + print(f"Проиграл {game.current}") + break + + if game.current == "Игрок": + try: + cmd = input("Введите индекс палочки и длину разлома (или exit): ") + if cmd == "exit": + break + i, x = cmd.split() + if game.split(int(i), float(x)): + game.current = "Компьютер" + else: + print("Ошибка хода") + except: + print("Ошибка ввода") + else: + game.computer_move() + game.current = "Игрок" + + if input("Сыграть ещё? (y/n): ") != "y": + break diff --git a/labPython/lab18-19/task_3.py b/labPython/lab18-19/task_3.py new file mode 100644 index 0000000..7bc0b42 --- /dev/null +++ b/labPython/lab18-19/task_3.py @@ -0,0 +1,69 @@ +import random +import math + + +class Game: + def __init__(self): + self.cells = ["_"] * 10 + + def show(self): + print("".join(self.cells)) + + def set_digit(self, pos, digit): + if 0 <= pos < 10 and self.cells[pos] == "_": + self.cells[pos] = str(digit) + return True + return False + + def computer_move(self): + free = [i for i, x in enumerate(self.cells) if x == "_"] + if free: + pos = random.choice(free) + digit = random.randint(0, 9) + self.cells[pos] = str(digit) + print(f"Компьютер поставил {digit} в позицию {pos}") + + def result(self): + num = int("".join(self.cells)) + root = int(math.sqrt(num)) + return root * root == num + + +while True: + game = Game() + + print("\nПервый этап (ваши ходы)") + while True: + game.show() + cmd = input("Введите позицию и цифру (или stop): ") + if cmd == "stop": + break + try: + pos, digit = map(int, cmd.split()) + if not game.set_digit(pos, digit): + print("Ошибка") + except: + print("Ошибка ввода") + + print("\nХод компьютера") + game.computer_move() + + print("\nФинальный этап") + while "_" in game.cells: + game.show() + try: + pos, digit = map(int, input("Введите позицию и цифру: ").split()) + if not game.set_digit(pos, digit): + print("Ошибка") + except: + print("Ошибка ввода") + + game.show() + + if game.result(): + print("Вы выиграли!") + else: + print("Победил компьютер") + + if input("Сыграть ещё? (y/n): ") != "y": + break diff --git a/labPython/lab2/Series15.py b/labPython/lab2/Series15.py new file mode 100755 index 0000000..5390840 --- /dev/null +++ b/labPython/lab2/Series15.py @@ -0,0 +1,16 @@ +K = int(input()) +numlist=[] +num = 1 +while(num!=0): + num = int(input()) + numlist.append(num) + +count=0 +for i in range(len(numlist)): + if numlist[i] > K: + print(i) + count =1 + break + +if count == 0: + print(numlist[-1]) diff --git a/labPython/lab2/TheTwo16.py b/labPython/lab2/TheTwo16.py new file mode 100755 index 0000000..b5854ef --- /dev/null +++ b/labPython/lab2/TheTwo16.py @@ -0,0 +1,29 @@ +# print("Введите число N") +# N = int(input()) +# +# def fac(x: int): # факториал числа + # return _fac (x*2, x) +# +# def _fac(x: int, y: int): + # if x > y: + # return (y * _fac(x, y+1)) + # else: + # return y + # +# x = 0 +# if N <= 12: + # for i in range(1, N+1): + # step = i**i + # factorial = fac(i) + # x += step / factorial + # print(x) + +N = int(input()) +s = 0 +for i in range(1, N + 1): + p = 1 + for j in range(i, 2 * i + 1): + p *= j + s += i**2 / p + +print(s) \ No newline at end of file diff --git a/labPython/lab2/TheTwo20.py b/labPython/lab2/TheTwo20.py new file mode 100755 index 0000000..e23d2b1 --- /dev/null +++ b/labPython/lab2/TheTwo20.py @@ -0,0 +1,28 @@ +# print("Введите число") +# num = int(input()) +# micronum = 0 +# i=1 +# list=[] +# while num != micronum: + # micronum = (num%(10**i)-num%(10**(i-1)))//(10**(i-1)) + # list.insert(0, micronum) + # print (list) + # micronum = num%(10**i) + # i+=1 +# +# max = 0 +# count = 0 +# maxcount = 0 +# for i in list: + # count += 1 + # if i > max: + # max = i + # maxcount = count +# +# print(f"Максимальное цифра{max}, индекс {maxcount}") + +N = int(input()) +s = str(N)[::-1] +m = min(s) +print("Минимальная цифра:", m) +print("Порядковый номер:", s.index(m) + 1) diff --git a/labPython/lab2/While18.py b/labPython/lab2/While18.py new file mode 100755 index 0000000..6db0d95 --- /dev/null +++ b/labPython/lab2/While18.py @@ -0,0 +1,17 @@ +# num = int(input()) +# i=1 +# micronum=0 +# sum = 0 +# +# print (i-1, sum) + +N = int(input()) +s = 0 +k = 0 +while N > 0: + d = N % 10 + s += d + k += 1 + N //= 10 +print("Количество цифр:", k) +print("Сумма цифр:", s) diff --git a/labPython/lab2/task3.py b/labPython/lab2/task3.py new file mode 100755 index 0000000..468fdcb --- /dev/null +++ b/labPython/lab2/task3.py @@ -0,0 +1,15 @@ +import random + +while True: + comp = random.randint(1, 3) + user = int(input("1 - камень, 2 - ножницы, 3 - бумага: ")) + + if comp == user: + print("Ничья, попробуйте снова!") + continue + + if (user == 1 and comp == 2) or (user == 2 and comp == 3) or (user == 3 and comp == 1): + print("Вы выиграли!", comp) + else: + print("Компьютер выиграл!", comp) + break \ No newline at end of file diff --git a/labPython/lab2/task6.py b/labPython/lab2/task6.py new file mode 100755 index 0000000..2b12806 --- /dev/null +++ b/labPython/lab2/task6.py @@ -0,0 +1,16 @@ +print("введите точность и коэффициент") +from math import atan +T = int(input()) +x = float(input()) +count = 0 +num = 0 +for i in range(1, T, 2): + count += 1 + if count%2 == 1: + num += (x**i)/i + else: + num -= (x**i)/i + +print(atan(x)) +print(f"Число arctng(x) с точностью {T}: {num}") + diff --git a/labPython/lab2/windows.py b/labPython/lab2/windows.py new file mode 100755 index 0000000..f61fea3 --- /dev/null +++ b/labPython/lab2/windows.py @@ -0,0 +1,277 @@ +import curses + +class InputWindow(): # Позиция x, позиция y, ширина, высота, текст окна. + + def __init__(self, position_x, position_y, width, heigth, text="", xMax=6): + + self.x = position_x + + self.y = position_y + + self.w = width + + self.h = heigth + + self.t = text + + self.inputwin = curses.newwin(self.h-2, self.w-3, self.y+1, self.x+2) # Разметка окна ввода + + self.win = curses.newwin(self.h, self.w, self.y, self.x) # Основное окно с рамкой + + self.xMax = xMax + + + + def draw(self): + + + + # Главное окно + + self.win.border() # Рамка + + self.win.addstr(0, 1, self.t) # Надпись на окне(не более 8 символов) + + + + self.win.refresh() + + self.inputwin.refresh() + + + + def edit(self): # Статическое окно + + input = self.inputwin # Окно ввода + + input.clear() + + text = "" # Возвращаемый текст + + cursX = 0 # Позиция курсора + + + + while True: + + + + # Каждую итерацию цикла отрисовываем окно, ждем ввод, в зависимости от ввода делаем действие + + input.addstr(0, 0, text) + + input.move(0, cursX) + + self.win.refresh() + + self.inputwin.refresh() + + + + ch = input.getch() + + + + if ch == 7: # Проверяем на Ctrl+g + + return text + + elif ch == 10: # Проверям на enter + + return text + + elif cursX > self.w-5: + + StaticWindow(1, 0, f"Maximum lenght {self.w-4}") + + + + elif ch == 127: # Проверяем на backspace + + if text!="": + + text = text[:-1] + + cursX -= 1 + + input.clear() + + input.refresh() + + + + else: # Отрисосвываем текст + + text += chr(ch) + + cursX += 1 + + + + + + + + def editResize(self): # Динамически масштабируемое окно + + input = self.inputwin # Окно ввода + + input.clear() + + text = "" # Возвращаемый текст + + cursX = 0 # Позиция курсора + + while True: + + # Каждую итерацию цикла отрисовываем окно, ждем ввод, в зависимости от ввода делаем действие + + input.addstr(0, 0, text) + + input.move(0, cursX) + + self.win.refresh() + + self.inputwin.refresh() + + + + ch = input.getch() + + + + if ch == 7: # Проверяем на Ctrl+g + + return text + + elif ch == 10: # Проверям на enter + + return text + + elif ch == 127: # Проверяем на backspace + + if text!="": + + text = text[:-1] + + cursX -= 1 + + input.clear() + + input.refresh() + + + + elif len(text) <= (self.xMax - 6): # Отрисосвываем текст + + text += chr(ch) + + cursX += 1 + + + + if cursX > self.w-4: # Динамическое увеличение рамки и текстового поля + + self.x -=1 + + self.w +=2 + + + + input.mvwin(self.y+1, self.x+2) + + self.win.mvwin(self.y, self.x) + + + + input.resize(self.h-2, self.w-3) # Разметка окна ввода + + self.win.resize(self.h, self.w) # Основное окно с рамкой + + + + self.win.border() + + self.win.addstr(0, 1, self.t) # Надпись на окне(не более 8 символов) + + + + def clear(self): + + + + self.inputwin.clear() + + self.inputwin.refresh() + + + +class StaticWindow(): # Поция x, позиция y, текст + + def __init__(self, position_x, position_y, text, textInline="", reverse=False, minHeigtg=False): + + self.x = position_x + + self.y = position_y + + if len(text) < 20 and minHeigtg: + + self.w = 24 + + else: + + self.w = len(text)+4 + + self.h = 3 + + self.t = text + + self.ti = textInline + + self.r = reverse + + + + self.win = curses.newwin(self.h, self.w, self.y, self.x) + + + + def draw(self): + + if self.r: + + self.win.attron(curses.A_REVERSE) + + self.win.border() + + self.win.attroff(curses.A_REVERSE) + + self.win.attron(curses.A_REVERSE) + + self.win.addstr(0, 1, self.ti) + + self.win.attroff(curses.A_REVERSE) + + + + else: + + self.win.border() + + self.win.addstr(0, 1, self.ti) + + + + self.win.addstr(1,2, self.t) + + self.win.refresh() + + + + def clear(self): + + + + self.win.clear() + + self.win.refresh() \ No newline at end of file diff --git a/labPython/lab20/maze.txt b/labPython/lab20/maze.txt new file mode 100644 index 0000000..4468280 --- /dev/null +++ b/labPython/lab20/maze.txt @@ -0,0 +1,8 @@ + M + +M M M + M M M +M M M + MM +MMM MMMM + diff --git a/labPython/lab20/task_1.py b/labPython/lab20/task_1.py new file mode 100644 index 0000000..f52094e --- /dev/null +++ b/labPython/lab20/task_1.py @@ -0,0 +1,65 @@ +import random + + +def create_file(): + n = random.randint(5, 10) + maze = [] + for _ in range(n): + row = "".join(["M" if random.random() < 0.3 else " " for _ in range(n)]) + maze.append(row) + with open("maze.txt", "w") as f: + for row in maze: + f.write(row + "\n") + return n + + +def read_maze(): + with open("maze.txt") as f: + maze = [list(line.rstrip("\n")) for line in f] + return maze + + +def solve(maze, x, y, xc, yc, visited, length, best): + n = len(maze) + if x < 0 or y < 0 or x >= n or y >= n: + return + if maze[x][y] == "M" or visited[x][y]: + return + if length >= best[0]: + return + if x == xc and y == yc: + best[0] = min(best[0], length) + return + visited[x][y] = True + solve(maze, x + 1, y, xc, yc, visited, length + 1, best) + solve(maze, x - 1, y, xc, yc, visited, length + 1, best) + solve(maze, x, y + 1, xc, yc, visited, length + 1, best) + solve(maze, x, y - 1, xc, yc, visited, length + 1, best) + visited[x][y] = False + + +while True: + print("\n1 - создать лабиринт\n2 - решить\n0 - выход") + try: + c = input("Выбор: ") + if c == "1": + n = create_file() + print("Файл создан. Размер:", n) + elif c == "2": + maze = read_maze() + n = len(maze) + x = int(input("Старт X: ")) + y = int(input("Старт Y: ")) + xc = int(input("Сыр X: ")) + yc = int(input("Сыр Y: ")) + visited = [[False] * n for _ in range(n)] + best = [10**9] + solve(maze, x, y, xc, yc, visited, 0, best) + if best[0] == 10**9: + print("Путь не найден") + else: + print("Кратчайший путь:", best[0]) + elif c == "0": + break + except: + print("Ошибка ввода") diff --git a/labPython/lab20/task_2.py b/labPython/lab20/task_2.py new file mode 100644 index 0000000..01cd6ec --- /dev/null +++ b/labPython/lab20/task_2.py @@ -0,0 +1,37 @@ +print("task: 6r\nВставка + и - между цифрами для получения числа N") + + +def generate(s, pos, expr, target, results): + if pos == len(s): + try: + if eval(expr) == target: + results.append(expr + "=" + str(target)) + except: + pass + return + generate(s, pos + 1, expr + "+" + s[pos], target, results) + generate(s, pos + 1, expr + "-" + s[pos], target, results) + generate(s, pos + 1, expr + s[pos], target, results) + + +while True: + print("\n1 - решить\n0 - выход") + try: + c = input("Выбор: ") + if c == "1": + s, target = input("Введите число и N: ").split() + target = int(target) + results = [] + generate(s, 1, s[0], target, results) + with open("result.txt", "w") as f: + if results: + for r in results: + print(r) + f.write(r + "\n") + else: + print("Решение не существует") + f.write("Решение не существует") + elif c == "0": + break + except: + print("Ошибка ввода") diff --git a/labPython/lab3/TextFile13.py b/labPython/lab3/TextFile13.py new file mode 100755 index 0000000..02ba188 --- /dev/null +++ b/labPython/lab3/TextFile13.py @@ -0,0 +1,14 @@ +def sum(A:int)->int: + A = A * (1 - 2 * (A < 0)) + # A=abs(A) + if A//10 > 0: + return A%10 + sum(A//10) + else: + return A + +num_end = int(input()) +num_multiply = int(input()) +with open("e.txt", "w") as file: + for i in range(2, num_end+1): + if sum(i) == sum(i*num_multiply): + file.write(f"{i}\n") \ No newline at end of file diff --git a/labPython/lab3/TextFile8.py b/labPython/lab3/TextFile8.py new file mode 100755 index 0000000..b91f4fd --- /dev/null +++ b/labPython/lab3/TextFile8.py @@ -0,0 +1,11 @@ +with open("d.txt", "r") as file: + maxX = 0 + minX = int(file.readline().replace("\n", "")) + for x in file: + x = int(x.replace("\n", "")) + if maxX < x: + maxX = x + if minX > x: + minX = x + +print(f"max: {maxX}, min: {minX}, calculate: {maxX - minX}") \ No newline at end of file diff --git a/labPython/lab3/b.txt b/labPython/lab3/b.txt new file mode 100755 index 0000000..f1593e5 --- /dev/null +++ b/labPython/lab3/b.txt @@ -0,0 +1,6 @@ +-1 +1 +-1 +1 +-1 +1 \ No newline at end of file diff --git a/labPython/lab3/d.txt b/labPython/lab3/d.txt new file mode 100755 index 0000000..28a90d0 --- /dev/null +++ b/labPython/lab3/d.txt @@ -0,0 +1,25 @@ +1 +1 +3 +5 +13 +21 +55 +89 +233 +377 +987 +1597 +4181 +6765 +1771 +28657 +75025 +121393 +317811 +514229 +1346269 +2178309 +5702887 +9227465 +24157817 diff --git a/labPython/lab3/e.txt b/labPython/lab3/e.txt new file mode 100755 index 0000000..74adda8 --- /dev/null +++ b/labPython/lab3/e.txt @@ -0,0 +1,75 @@ +9 +18 +27 +36 +45 +54 +72 +81 +90 +99 +108 +117 +135 +144 +171 +180 +189 +198 +207 +234 +270 +279 +288 +297 +342 +351 +360 +396 +405 +414 +441 +450 +459 +486 +495 +504 +540 +549 +558 +576 +585 +594 +639 +648 +657 +693 +702 +711 +720 +729 +756 +765 +783 +792 +801 +810 +819 +828 +846 +855 +864 +873 +882 +891 +900 +909 +918 +927 +936 +945 +954 +972 +981 +990 +999 diff --git a/labPython/lab3/main.py b/labPython/lab3/main.py new file mode 100755 index 0000000..c9d710e --- /dev/null +++ b/labPython/lab3/main.py @@ -0,0 +1,16 @@ +# maxNum = 0 +# file = [1, 2, 2, 2, -10000, 52, 9999, 32, 12] +# +# +# +# for i in file: + # delta = maxNum - i + # delta = delta * (1 - 2 * (delta < 0)) + # sum = maxNum + i +# + # maxNum = (sum - delta) / 2 + delta +# +# +# print (maxNum) + +print(1%1) \ No newline at end of file diff --git a/labPython/lab3/textfile17.py b/labPython/lab3/textfile17.py new file mode 100755 index 0000000..00dc91a --- /dev/null +++ b/labPython/lab3/textfile17.py @@ -0,0 +1,11 @@ +with open("b.txt", "r") as file: + num_this = 0 + is_subsequence = True + lines = file.readlines() + num_prev = int(lines[0].replace("\n", "")) + for i in range(1, len(lines)): + num_this = int(lines[i].replace("\n", "")) + is_subsequence = ((num_prev>0)and(num_this<0))or((num_prev<0)and(num_this>0))and(is_subsequence) + num_prev = int(lines[i].replace("\n", "")) + +print(is_subsequence) \ No newline at end of file diff --git a/labPython/lab3/textfile4.py b/labPython/lab3/textfile4.py new file mode 100755 index 0000000..9be6c0b --- /dev/null +++ b/labPython/lab3/textfile4.py @@ -0,0 +1,19 @@ +def fibonachi(num_for_stop:int) -> int: + if num_for_stop <= 0: + return 0 + elif num_for_stop == 1: + return 1 + else: + return fibonachi(num_for_stop-2) + fibonachi(num_for_stop-1) + +num_end = int(input()) + +with open("d.txt", "w") as file: + count = 0 + i=0 + while count < num_end: + num_fib = fibonachi(i) + if num_fib%2 == 1: + file.write(f"{num_fib}\n") + count+=1 + i +=1 \ No newline at end of file diff --git a/labPython/lab4/MinMax27.py b/labPython/lab4/MinMax27.py new file mode 100755 index 0000000..93d7c0f --- /dev/null +++ b/labPython/lab4/MinMax27.py @@ -0,0 +1,24 @@ +import random + +nBit = int(input("Введите количество элементов N: ")) +bitArray = [random.randint(0, 1) for _ in range(nBit)] +print(bitArray) +countLen = 0 +countIndex = 0 +bitMax = 0 +bitMaxIndex = 0 +for i in range(len(bitArray)): + if i < len(bitArray)-1: + if bitArray[i] == bitArray[(i+1)]: + countLen +=1 + if countLen > bitMax: + bitMax = countLen + bitMaxIndex = (i+2) - bitMax + # countLen = 0 + + else: + countLen = 0 +bitMax += 1 + + +print(bitMax, bitMaxIndex) \ No newline at end of file diff --git a/labPython/lab4/Modul2.py b/labPython/lab4/Modul2.py new file mode 100755 index 0000000..4596865 --- /dev/null +++ b/labPython/lab4/Modul2.py @@ -0,0 +1,44 @@ +from random import randint +def Gen(): + cartRandAndPorc = (randint(100, 1000), randint(1, 100)) + return cartRandAndPorc + +def Question(procent): + try: + return int(input(f"{procent[1]} процен(т\ов) от числа {procent[0]}: ")) + except: + pass +def Proverka(answer, answerTrue): + answerTrue = int((answerTrue[0]/100)*answerTrue[1]) + if answer == answerTrue: + return 1 + else: + return 0 + +def Ball(trulest, qCount)->int: + point = 100//qCount + if trulest == 1: + return point + else: + return 0 + +def Mark(points): + if points <= 40: + return 2 + elif points <= 60: + return 3 + elif points <= 80: + return 4 + elif points > 80: + return 5 + +points = 0 +qCount = int(input("Колличество вопросов: ")) +for i in range(1, qCount+1): + + print("Вопрос ", i) + gen = Gen() + answer = Question(gen) + points += Ball(Proverka(answer, gen), qCount) + +print(f"Ваша оценка {Mark(points)}, общее число баллов: {points}") \ No newline at end of file diff --git a/labPython/lab4/Reccur17.py b/labPython/lab4/Reccur17.py new file mode 100755 index 0000000..2dd163c --- /dev/null +++ b/labPython/lab4/Reccur17.py @@ -0,0 +1,6 @@ +def n_chlen(num_end): + if num_end <= 1: + return 2 + else: + return (num_end+1)/num_end + n_chlen(num_end-1) +print(n_chlen(2)) \ No newline at end of file diff --git a/labPython/lab4/Reccur2.py b/labPython/lab4/Reccur2.py new file mode 100755 index 0000000..52035a5 --- /dev/null +++ b/labPython/lab4/Reccur2.py @@ -0,0 +1,6 @@ +def maxNum(num_end:int) -> int: + if num_end < 1: + return 0 + else: + return num_end%10 + maxNum(num_end//10) +print(maxNum(0)) \ No newline at end of file diff --git a/labPython/lab5/DArray14.py b/labPython/lab5/DArray14.py new file mode 100755 index 0000000..65b76ce --- /dev/null +++ b/labPython/lab5/DArray14.py @@ -0,0 +1,10 @@ +from random import randint +from MatrixMethods import initnxnMatrix, printMatrix, divideEvenColumnsMainDiagonal + +x = int(input("Введите размерность матрицы: ")) +Array = initnxnMatrix(x) +print("Матрица раньше:") +printMatrix(Array) +Array = divideEvenColumnsMainDiagonal(Array) +print("Матрица сейчас:") +printMatrix(Array) diff --git a/labPython/lab5/DArray2.py b/labPython/lab5/DArray2.py new file mode 100755 index 0000000..71ec44d --- /dev/null +++ b/labPython/lab5/DArray2.py @@ -0,0 +1,15 @@ +from MatrixMethods import printMatrix, transDiagonalMatrix + +from random import randint +n = (int(input("введите размеров массивов: "))%11) +Matrix = [[randint(1, 100) for _ in range(n)] for _ in range(n)] +print("Mатрица до изменений:\n\n") +printMatrix(Matrix) +print("\n\n") +for index, stroke in enumerate(Matrix): + Matrix[index] = transDiagonalMatrix(stroke, index ) + +print("Mатрица после изменений:\n\n") +printMatrix(Matrix) +print("\n\n") + diff --git a/labPython/lab5/MatrixMethods.py b/labPython/lab5/MatrixMethods.py new file mode 100755 index 0000000..a410338 --- /dev/null +++ b/labPython/lab5/MatrixMethods.py @@ -0,0 +1,32 @@ +from random import randint + +def initnxnMatrix(count:int)->list[list]: + Array = [[randint(1, 100) for _ in range(count)] for _ in range(count)] + return Array + +def printMatrix(Array:list[list])->None: + for i in range(len(Array)+1): + print(f"{i}\t", end="") + print("") + for index in range(len(Array)): + print(f"{index+1}\t", end="") + for value in Array[index]: + print(f"{value}\t", end="") + print("") + +def transDiagonalMatrix(Array:list[list], i:int)->list: + if Array[i] != Array[-(i+1)]: + Array[i] += Array[-(i+1)] + Array[-(i+1)] = Array[i] - Array[-(i+1)] + Array[i] = Array[i] - Array[-(i+1)] + return Array + +def divideEvenColumnsMainDiagonal(Array:list[list])->list[list]: + mainDiagonal = 0 + for index, element in enumerate(Array): + mainDiagonal += element[index] + for elementIndex, element in enumerate(Array): + for index in range(len(element)): + if (index + 1)%2==0: + Array[elementIndex][index] //= mainDiagonal + return Array \ No newline at end of file diff --git a/labPython/lab5/Slov14.py b/labPython/lab5/Slov14.py new file mode 100755 index 0000000..8ed35d4 --- /dev/null +++ b/labPython/lab5/Slov14.py @@ -0,0 +1,21 @@ +candies = { + "Шоколадные": {"price": 150, "shelf_life": "12 месяцев", "shops": [1, 3, 5]}, + "Карамель": {"price": 80, "shelf_life": "6 месяцев", "shops": [2, 4]}, + "Трюфели": {"price": 150, "shelf_life": "18 месяцев", "shops": [1, 2, 3]}, + "Мармелад": {"price": 120, "shelf_life": "9 месяцев", "shops": [2, 5]}, + "Ириски": {"price": 950, "shelf_life": "8 месяцев", "shops": [1, 3, 4]}, + "Вафли": {"price": 1800, "shelf_life": "10 месяцев", "shops": [3, 4, 5]}, + "Пряники": {"price": 110, "shelf_life": "7 месяцев", "shops": [1, 2]} +} + +for name, info in candies.items(): + if 100 <= info["price"] <= 200: + print(f"{name}:") + print(f" Срок годности: {info['shelf_life']}") + shops_str = "" + for i in range(len(info['shops'])): + if i > 0: + shops_str += ", " + shops_str += str(info['shops'][i]) + print(f" Магазины: {shops_str}") + diff --git a/labPython/lab5/Slov32.py b/labPython/lab5/Slov32.py new file mode 100755 index 0000000..0182f6c --- /dev/null +++ b/labPython/lab5/Slov32.py @@ -0,0 +1,12 @@ +books = [ + {"author": "Толстой", "title": "Война и мир", "year": 1869}, + {"author": "Пушкин", "title": "Евгений Онегин", "year": 1833}, + {"author": "Кнут", "title": "Искусство программирования", "year": 1968}, + {"author": "Таненбаум", "title": "Архитектура компьютера", "year": 1976}, + {"author": "Столл", "title": "Введение в информатику", "year": 1985}, + {"author": "Уоррен", "title": "Алгоритмические трюки для программистов", "year": 2002}, + {"author": "Кнут", "title": "Конкретная математика", "year": 1994}, + {"author": "Столл", "title": "Основы информатики", "year": 1970}, + {"author": "Пушкин", "title": "Руслан и Людмила", "year": 1820}, + {"author": "Таненбаум", "title": "Современные операционные системы", "year": 1992}, +] \ No newline at end of file diff --git a/labPython/lab5/Slov9.py b/labPython/lab5/Slov9.py new file mode 100755 index 0000000..36371ac --- /dev/null +++ b/labPython/lab5/Slov9.py @@ -0,0 +1,12 @@ +string = input() +count = {} +result = "" + +for char in string: + if char not in count: + count[char] = 0 + else: + count[char] += 1 + result += f"{char}_{count[char]}" + +print(result) diff --git a/labPython/lab5/Spis12.py b/labPython/lab5/Spis12.py new file mode 100755 index 0000000..269a66f --- /dev/null +++ b/labPython/lab5/Spis12.py @@ -0,0 +1,20 @@ +ArrayStatic = (1, 2, 34, 53, 20, 10) +maxNum = 0 +maxIndex = 0 +minNum = ArrayStatic[0] +minIndex = 0 + +for index in range(0, len(ArrayStatic)): + if maxNum < ArrayStatic[index]: + maxNum = ArrayStatic[index] + maxIndex = index + if minNum > ArrayStatic[index]: + minNum = ArrayStatic[index] + minIndex = index + +print(ArrayStatic) +ArrayStatic = list(ArrayStatic) +ArrayStatic[maxIndex] = minNum +ArrayStatic[minIndex] = maxNum +ArrayStatic = tuple(ArrayStatic) +print(ArrayStatic) \ No newline at end of file diff --git a/labPython/lab5/Spis22.py b/labPython/lab5/Spis22.py new file mode 100755 index 0000000..c570b7f --- /dev/null +++ b/labPython/lab5/Spis22.py @@ -0,0 +1,59 @@ +def evaluate(expr: str) -> int: + expr = expr.replace(" ", "") + pos = 0 + + def number(): + nonlocal pos + start = pos + if pos < len(expr) and expr[pos] in '+-': + pos += 1 + while pos < len(expr) and expr[pos].isdigit(): + pos += 1 + return int(expr[start:pos]) + + def factor(): + nonlocal pos + if pos < len(expr) and expr[pos] == '(': + pos += 1 + result = expression() + if pos >= len(expr) or expr[pos] != ')': + raise ValueError + pos += 1 + return result + return number() + + def term(): + nonlocal pos + result = factor() + while pos < len(expr) and expr[pos] in '*/': + op = expr[pos] + pos += 1 + if op == '*': + result *= factor() + else: + num = factor() + if num == 0: + raise ValueError + result //= num + return result + + def expression(): + nonlocal pos + result = term() + while pos < len(expr) and expr[pos] in '+-': + op = expr[pos] + pos += 1 + if op == '+': + result += term() + else: + result -= term() + return result + + result = expression() + if pos < len(expr): + raise ValueError + return result + + +expr = input() +print(evaluate(expr)) diff --git a/labPython/lab5/__pycache__/ArrayMetods.cpython-313.pyc b/labPython/lab5/__pycache__/ArrayMetods.cpython-313.pyc new file mode 100755 index 0000000..76bf582 Binary files /dev/null and b/labPython/lab5/__pycache__/ArrayMetods.cpython-313.pyc differ diff --git a/labPython/lab5/__pycache__/MatrixMethods.cpython-313.pyc b/labPython/lab5/__pycache__/MatrixMethods.cpython-313.pyc new file mode 100755 index 0000000..74120e4 Binary files /dev/null and b/labPython/lab5/__pycache__/MatrixMethods.cpython-313.pyc differ diff --git a/labPython/lab6/Graf13.py b/labPython/lab6/Graf13.py new file mode 100755 index 0000000..51b6404 --- /dev/null +++ b/labPython/lab6/Graf13.py @@ -0,0 +1,14 @@ +import numpy as nu +import matplotlib.pyplot as plt + + +def xycomlete(x): + y = nu.sin(5 * x) * nu.cos(x) + return y + + +ArrayX = nu.arange(0, 3, 0.01) +ArrayY = xycomlete(ArrayX) + +plt.plot(ArrayX, ArrayY) +plt.show() diff --git a/labPython/lab6/Matr7.py b/labPython/lab6/Matr7.py new file mode 100755 index 0000000..7e49a16 --- /dev/null +++ b/labPython/lab6/Matr7.py @@ -0,0 +1,13 @@ +from numpy import array, full, fill_diagonal, fliplr + +count = int(input("введите число строк в матрице (nxn): ")) + +if count%2!=1: + count+=1 +Array = full((count, count), ".") +new_diag = ["*" for _ in range(count)] +fill_diagonal(Array, new_diag) +Array = fliplr(Array) +fill_diagonal(Array, new_diag) +Array = fliplr(Array) +print (Array) \ No newline at end of file diff --git a/labPython/lab6/Slice12.py b/labPython/lab6/Slice12.py new file mode 100755 index 0000000..17723d7 --- /dev/null +++ b/labPython/lab6/Slice12.py @@ -0,0 +1,4 @@ +from numpy import random + +arrayTriple = random.randint(0, 47, (6, 86, 8)) +print(arrayTriple) \ No newline at end of file diff --git a/labPython/lab6/task5_5_1.py b/labPython/lab6/task5_5_1.py new file mode 100755 index 0000000..a2b99ce --- /dev/null +++ b/labPython/lab6/task5_5_1.py @@ -0,0 +1,7 @@ +import matplotlib.pyplot as plt + +plt.pie( + [10, 8, 6, 4, 2], + labels=["Москва", "Санкт-Петербург", "Сочи", "Казань", "Калининград"], +) +plt.show() diff --git a/labPython/lab6/task5_5_2.py b/labPython/lab6/task5_5_2.py new file mode 100755 index 0000000..b0f9337 --- /dev/null +++ b/labPython/lab6/task5_5_2.py @@ -0,0 +1,12 @@ +import numpy as np +import matplotlib.pyplot as plt + +num_points = 1200 + +x = np.random.uniform(-5.2, 20.7, num_points) +y = np.random.uniform(-5.2, 20.7, num_points) + +plt.figure(figsize=(8, 8)) +plt.scatter(x, y, color="green", s=10, alpha=0.6) +plt.grid(True) +plt.show() diff --git a/labPython/lab7/BinSearch_2.py b/labPython/lab7/BinSearch_2.py new file mode 100755 index 0000000..cbb1877 --- /dev/null +++ b/labPython/lab7/BinSearch_2.py @@ -0,0 +1,66 @@ +def find_min_radius(feasible, eps=1e-6, max_radius=None): + if max_radius is None: + high_bound = 1.0 + while not feasible(high_bound): + high_bound *= 2 + if high_bound > 1e10: + raise ValueError( + "Не удалось найти верхнюю границу. Возможно, feasible всегда возвращает False." + ) + low = 0.0 + high = high_bound + else: + low = 0.0 + high = max_radius + + while high - low > eps: + mid = (low + high) / 2.0 + + if feasible(mid): + high = mid + else: + low = mid + + return high + + +def can_cover(points, m, r): + if not points: + return True + + used_circles = 0 + i = 0 + + while i < len(points): + circle_center = points[i] + r + circle_right = circle_center + r + + used_circles += 1 + if used_circles > m: + return False + + while i < len(points) and points[i] <= circle_right: + i += 1 + + return True + + +if __name__ == "__main__": + print("Введите N и M через пробел:") + n, m = map(int, input("> ").split()) + + print(f"Введите {n} координат точек (по одной на строке):") + points = [] + for _ in range(n): + point = float(input().strip()) + points.append(point) + + points.sort() + + def feasible(r): + return can_cover(points, m, r) + + eps = 1e-6 + result = find_min_radius(feasible, eps=eps) + + print(f"Минимальный радиус: {result:.6f}") diff --git a/labPython/lab7/__pycache__/sort2.cpython-313.pyc b/labPython/lab7/__pycache__/sort2.cpython-313.pyc new file mode 100755 index 0000000..f2c1d64 Binary files /dev/null and b/labPython/lab7/__pycache__/sort2.cpython-313.pyc differ diff --git a/labPython/lab7/__pycache__/sort_methods.cpython-313.pyc b/labPython/lab7/__pycache__/sort_methods.cpython-313.pyc new file mode 100755 index 0000000..bcc246c Binary files /dev/null and b/labPython/lab7/__pycache__/sort_methods.cpython-313.pyc differ diff --git a/labPython/lab7/__pycache__/sort_methods.cpython-314.pyc b/labPython/lab7/__pycache__/sort_methods.cpython-314.pyc new file mode 100755 index 0000000..d70618d Binary files /dev/null and b/labPython/lab7/__pycache__/sort_methods.cpython-314.pyc differ diff --git a/labPython/lab7/input.txt b/labPython/lab7/input.txt new file mode 100755 index 0000000..d891d09 --- /dev/null +++ b/labPython/lab7/input.txt @@ -0,0 +1,30 @@ +37 +-44 +40 +93 +76 +-73 +-80 +-11 +48 +-67 +1 +-46 +-58 +-85 +67 +96 +8 +36 +-88 +-21 +54 +-2 +21 +-25 +-48 +71 +-3 +3 +71 +-55 diff --git a/labPython/lab7/output.txt b/labPython/lab7/output.txt new file mode 100755 index 0000000..d5e9ca8 --- /dev/null +++ b/labPython/lab7/output.txt @@ -0,0 +1,30 @@ +-88 +-85 +-80 +-73 +-67 +-58 +-55 +-48 +-46 +-44 +-25 +-21 +-11 +-3 +-2 +1 +3 +8 +21 +36 +37 +40 +48 +54 +67 +71 +71 +76 +93 +96 diff --git a/labPython/lab7/sort2.py b/labPython/lab7/sort2.py new file mode 100755 index 0000000..6ea5a16 --- /dev/null +++ b/labPython/lab7/sort2.py @@ -0,0 +1,21 @@ +from os import replace +import sort_methods +from random import randint + +array = [randint(-100, 100) for _ in range(30)] +with open("input.txt", "w") as inputFile: + for element in array: + inputFile.write(f"{element}\n") +listOfNumber = [] +with open("input.txt", "r") as inputFile: + for string in inputFile: + listOfNumber.append(int(string.replace("\n", ""))) +print(listOfNumber) +listOfNumber = sort_methods.bubble_sort(listOfNumber) + +with open("output.txt", "w") as outputFile: + for element in listOfNumber: + outputFile.write(f"{element}\n") + +print("Пузырьковая сортировка") +print("сложность сортировки O(n^2)") diff --git a/labPython/lab7/sort_methods.py b/labPython/lab7/sort_methods.py new file mode 100755 index 0000000..ac65c93 --- /dev/null +++ b/labPython/lab7/sort_methods.py @@ -0,0 +1,32 @@ +def printSortedList(list: list, sortedCount: int) -> None: + text = "" + for index in range(len(list)): + if index != sortedCount: + text += f"{list[index]}, " + + else: + if sortedCount != 0: + text += f"{list[index]}|" + else: + text += f"отсортированый массив => {list[index]}, " + print(text) + + +def bubble_sort(list: list) -> list: + count = 1 + sortedCount = len(list) - 1 + while count != 0: + count = 0 + for index in range(len(list)): + if index < len(list) - 1: + if list[index] > list[index + 1]: + list[index] += list[index + 1] + list[index + 1] = list[index] - list[index + 1] + list[index] = list[index] - list[index + 1] + count += 1 + if count != 0: + sortedCount -= 1 + else: + sortedCount = 0 + printSortedList(list, sortedCount) + return list diff --git a/labPython/project_ind/individual_project_realtor b/labPython/project_ind/individual_project_realtor new file mode 160000 index 0000000..e2ec3f7 --- /dev/null +++ b/labPython/project_ind/individual_project_realtor @@ -0,0 +1 @@ +Subproject commit e2ec3f70c381ec6a583ca2644fbcce47afc7732e