Compare commits

..

12 Commits

Author SHA1 Message Date
h3lp edfcdce937 Add rpi bluetooth commands 2026-03-05 13:19:37 +02:00
h3lp 33481126d4 Add tar commands 2026-03-04 21:16:49 +02:00
oleg20111511 003da78bb7 Add chmod notes 2026-03-02 19:45:01 +02:00
oleg20111511 f235a35ebb Reorganize 2026-03-02 19:15:17 +02:00
h3lp 9192716bfb Add web design files 2025-11-20 21:37:53 +02:00
h3lp 258f24570a Add Pascal learning files 2025-11-20 21:18:32 +02:00
oleg20111511 1ce193cc0d Add sublime shortcuts 2022-09-11 18:31:29 +03:00
trilolol e79e7b51ce Change file permissions to 664 2022-05-16 17:38:51 +03:00
trilolol 972cd7eccc Linux notes - permissions commands 2022-05-08 01:08:36 +03:00
oleg20111511 8491309c9d Add linux notes 2022-05-06 00:50:43 +03:00
oleg20111511 ec0feb6324 Add git notes 2022-05-06 00:50:02 +03:00
oleg20111511 1863176b39 Add Python notes 2022-05-06 00:49:26 +03:00
615 changed files with 14768 additions and 55 deletions
Regular → Executable
View File
@@ -0,0 +1,17 @@
Program case_of;
Var a:integer;
begin
WriteLn('Ââåäèòå íîìåð íîòû');
ReadLn(a);
case a of
1: WriteLn('íîòà äî');
2: WriteLn('íîòà ðå');
3: WriteLn('íîòà ìè');
4: WriteLn('íîòà ôà');
5: WriteLn('íîòà ñîëü');
6: WriteLn('íîòà ëÿ');
7: WriteLn('íîòà ñè');
else WriteLn('ÍÅÒ ÒÀÊÎÉ ÍÎÒÛ!!!')
end;
end.
@@ -0,0 +1,20 @@
program case2;
var a:integer;
begin
WriteLn('Ââåäèòå íîìåð ìåñÿöà');
ReadLn(a);
case a of
1: WriteLn('ßíâàðü');
2: WriteLn('Ôåâðàëü');
3: WriteLn('Ìàðò');
4: WriteLn('Àïðåëü');
5: WriteLn('May');
6: WriteLn('Èþíü');
7: WriteLn('Àâãóñò');
9:WriteLn('Ñåíòÿáðü');
10:WriteLn('Îêòÿáðü');
11:WriteLn('Íîÿáðü');
12:WriteLn('Äåêàáðü');
else WriteLn('ÍÅÒ ÒÀÊÎÃÎ ÌÅÑßÖÀ!!!')
END;
end.
@@ -0,0 +1,11 @@
program case_;
var a:integer;
begin
WriteLn('Ââåäèòå êîë-âî ñëîíèêîâ îò 1 äî 50');
ReadLn(a);
Case a of
1,21,31,41:WriteLn(a,' ñëîíèê');
2..4,22..24,32..34,42..44:WriteLn(a,' Ñëîíèêa');
5..20,25..30,35..40,45..50:WriteLn(a,' Ñëîíèêîâ');
end;
end.
@@ -0,0 +1,12 @@
program case_adult;
var a:integer;
begin
WriteLn('Ââåäèòå âîçðàñò');
ReadLn(a);
Case a of
1,21,31,41,51,61,71,81,91,101,121,131,141,151,161,171,181,191:writeln('ìíå ',a,' ãîä');
2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94,102..104,122..124,132..134,142..144,152..154,162..164,172..174,182..184,192..194:writeln('ìíå ',a,' ãîäà');
5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..100,105..120,125..130,135..140,145..150,155..160,165..170,175..180,185..190,195..200:writeln('ìíå ',a,' ëåò');
else WriteLn('ÍÅÂÅÐÍÛÉ ÂÎÇÐÀÑÒ!!!');
end;
end.
@@ -0,0 +1,12 @@
program cha;
var c,x,y,z:char; //char - типо integer только кроме цифр есть буквы и точки
begin
z:= ('z'); // присвоил z значение "z"
WriteLn('введи x');
ReadLn(x); //читаем x
WriteLn(x+z); // складываем символы
WriteLn('4 буквы без пробелa.');
ReadLn(c,x,y,z);
WriteLn(c+x+y+z); // таким образом можно составить слово.
end.
@@ -0,0 +1,13 @@
program div_mod;
var a,one,dec,hun,rec:integer;
begin
WriteLn ('Ââåäèòå ÷èñëî');
ReadLn (a);
one:=a mod 10;
WriteLn ('Öèôðà åäèíèö ÷èñëà - ',one);
dec:=(a div 10) mod 10;
rec:= dec*10+one;
WriteLn ('À ýòî òîæå ÷èñëî - ',rec);
Write ('Enter');
ReadLn;
End.
@@ -0,0 +1,16 @@
program div_mod;
var a,one,dec,hun,rec:integer;
begin
WriteLn ('Ââåäèòå ÷èñëî');
ReadLn (a);
one:=a mod 10;
WriteLn ('Öèôðà åäèíèö ÷èñëà - ',one);
dec:=(a div 10) mod 10;
WriteLn ('Öèôðà äåñÿòêîâ ÷èñëà - ', dec);
hun:= a div 100;
WriteLn ('Öèôðà ñîòåí ÷èñëà - ', hun);
rec:= hun*100+dec*10+one;
WriteLn ('À ýòî òîæå ÷èñëî - ',rec);
Write ('Enter');
ReadLn;
End.
@@ -0,0 +1,9 @@
Program oper;
Var a,b,c,d,e,f: integer;
Begin
Read (a,b,c,d);
E:=a div b;
f:= c mod d;
WriteLn (e);
WriteLn (f);
End.
@@ -0,0 +1,8 @@
Program trololo;
var k,d,r,s:integer;
Begin
ReadLn(k,d);
r:=k div d;
s:=k mod d;
WriteLn('Если разделить ',k,' на ',d,'Получится ',r,'(остаток ',s,')');
end.
@@ -0,0 +1,12 @@
program a7;
var a:real;
b:integer;
begin
ReadLn(a);
a:=a*100;
b:= Trunc (a);
b:=b mod 100;
writeln(b);
a:=(b div 10) + (b mod 10);
writeln(a);
end.
@@ -0,0 +1,14 @@
var a,dec,hun,one,k:integer;
begin
writeLn('Ââĺäčňĺ ÷čńëî');
writeln;
readln(a);
one:=a mod 10;
a:=a div 10;
dec:=a mod 10;
a:=a div 10;
hun:=a mod 10;
a:=a div 10;
K:=hun+dec+one;
write(k);
end.
@@ -0,0 +1,12 @@
var a,dec,hun,one:integer;
begin
writeLn('Ââĺäčňĺ ÷čńëî');
writeln;
readln(a);
one:=a mod 10;
a:=a div 10;
dec:=a mod 10;
a:=a div 10;
writeln(dec);
writeln(one);
end.
@@ -0,0 +1,15 @@
var a,dec,hun,one:integer;
begin
writeLn('Ââĺäčňĺ ÷čńëî');
writeln;
readln(a);
one:=a mod 10;
a:=a div 10;
dec:=a mod 10;
a:=a div 10;
hun:=a mod 10;
a:=a div 10;
writeln(hun);
writeln(dec);
writeln(one);
end.
@@ -0,0 +1,18 @@
var
n: integer;
a: array[byte] of byte;
i, j: byte;
begin
i := 1;
readln(n);
while n > 0 do
begin
a[i] := n mod 10;
inc(i);
n := n div 10;
end;
j := i - 1;
for i := j downto 1 do
writeln(a[i]);
end.
@@ -0,0 +1,18 @@
program procedura;
var c:char;
//---------------------------------------------------
procedure zv; //объявляем процедуру и её название
var i:integer; // процедуры используют только свои переменные, вне процедур их не существует
begin
WriteLn('*******************************'); // собственно, тут то, что делает сама процедура
end;
//---------------------------------------------------
begin
c:='0';
WriteLn('Хочешь звездочек? Y/N');
ReadLn(c);
If c = 'Y' then zv; // Теперь, когда тебе нужны будут звездочки,просто пиши zv;
end.
@@ -0,0 +1,23 @@
program procedura;
var r,r1,s2:integer;
//---------------------------------------------------
procedure zv(a,b:integer; var s:integer); //Допустим, тебе нужно выполнить действие с какими то переменными, которые находятся вне процедуры
begin // для этого создай процедуру, а процедурные переменные укажи в скобках, после названия процедуры
//если ты хочешь, чтобы в последствии этой процедуры изменилась глобальная переменная, указывай её как я указал s, но лучше используй функции.
s:=a+b; //<-- собственно само действие, которое нужно совершить с глобальными переменными,
// ты указываешь тут, только вместо глобальных - процедурные, которые ты указал в скобках
WriteLn(a,' ',b);
end;
//------------------------------------------------
begin
r:=random(5000000);
r1:=random(5000000); // тут, собственно, глобальные переменные, с которыми нужно выполнить действие
WriteLn(r,' ',r1);
zv(r,r1,s2);
WriteLn('Сумма рандомных чисел = ',s2);
end.
@@ -0,0 +1,21 @@
program procedura;
var s2,r1,r:integer;
//---------------------------------------------------
function zv(a,b:integer):integer; // функции - это типо те же процедуры, только с конкретным результатом.
//функция - это и есть результат. отсюда и :integer после скобок
begin
zv :=a+b; // у этой функции результатом является сложение переменных a и b
WriteLn('Помимо этого в функции выполняются любые действия, не связанные с вычислением результата, поэтому эта надпись выведется на экран');
end;
//------------------------------------------------
begin
r:=random(5000000);
r1:=random(5000000);
WriteLn(r,' ',r1);
s2:=zv(r,r1); // переменной s2 присваивается результат функции, и так собственно функция и призывается
WriteLn('Сумма рандомных чисел = ',s2);
end.
@@ -0,0 +1,11 @@
Program While_task_1;
Var a,b:integer;
Begin
ReadLn(b);
a:=1;
While ((a<b) or (a=b)) do
begin
WriteLn(a);
inc (a);
end;
end.
@@ -0,0 +1,13 @@
Program While_Task3;
const n=5;
var a:integer;
begin
WriteLn('Ââåäè 5');
ReadLn(a);
While a<>n do
begin
WriteLn ('Íå âåðíî, ïîïðîáóé åùå');
ReadLn(a);
end;
WriteLn('Ìîëîäåö');
end.
@@ -0,0 +1,15 @@
Program While_Task7;
const n=10;
var a:integer;
begin
While a<> n do
Begin
writeln('hello');
inc(a);
end;
a:=0;
repeat
writeln('hello');
inc(a);
until a=n;
end.
@@ -0,0 +1,10 @@
Program While_Task8;
const n=25;
var a:integer;
begin
a:=3;
Repeat
Writeln(a);
inc(a);
until a>n;
end.
@@ -0,0 +1,13 @@
Program While4;
Var a,b,c:integer;
begin
ReadLn(a,b);
Write (a mod b);
{
while a mod b =0 do
begin
c:=a mod b;
end;
WriteLn(c);
}
end.
@@ -0,0 +1,38 @@
program zap;
type stud = record // record - ñàìà çàïèñü
name : string;
year : record // â record`e record íóæíî óêàçûâàòü ÷åðåç :, âìåñòî =
D : 1..31;
M : string;
Y : integer;
end;
end;
var a :stud; // óêàçûâàåì, ÷òî ïåðåìåííàÿ a = çàïèñü stud
begin
WriteLn('Èìÿ');
ReadLn(a.name);
WriteLn('×èñëî, ìåñÿö, ãîä');
with a.year do begin // with äåëàåò îïåðàöèè ñ çàïèñÿìè
ReadLn(D);
ReadLn(M);
ReadLn(Y);
end;
Case a.year.M of //ïîñëå öèôð a ñòîèò èç - çà îøèáêè, êîòîðóþ õç êàê èñïðàâèòü
'1a' : a.year.M:='ßíâàðü';
'2a' : a.year.M:='ôåâðàëü';
'3a' : a.year.M:='ìàðò';
'4a' : a.year.M:='àïðåëü';
'5a' : a.year.M:='ìàé';
'6a' : a.year.M:='èþíü';
'7a' : a.year.M:='èþëü';
'8a' : a.year.M:='àâãóñò';
'9a' : a.year.M:='ñåíòÿáðü';
'10' : a.year.M:='îêòÿáðü';
'11' : a.year.M:='íîÿáðü';
'12' : a.year.M:='äåêàáðü';
end;
WriteLn(a.name);
WriteLn(a.year.D,' ',a.year.M,' ',a.year.Y);
end.
@@ -0,0 +1,13 @@
program summof30;
const n=30;
type My=array [1..30] of integer; //ìàññèâ èç 30 öåëûõ ÷èñåë
var a: my;
s,i:integer;
begin
WriteLn('ââåäè ',n,' ÷èñåë');
for i:=1 to n do ReadLn(a[i]);//íå çíàþ ÷òî äåëàåò [i], íî òóò âîîäÿòñÿ ÷èñëà
s:=0;
for i:=1 to n do s:=s+a[i]; //âñå åùå íå çíàþ [i], íî òóò ÷èñëà ñêëàäûâàþòñÿ
WriteLn(s);
end.
@@ -0,0 +1,8 @@
program idea;
var m:array [1..10] of integer; // задаю массив состоящий из 10 переменных (!не массив из цифр 1 - 10!)
i:integer;
begin
WriteLn(m); //вывожу эти 10 переменных. изначально, как и все переменные, они равны нулю
m[2]:=2; //второй переменной в массиве [2] присваиваю цифру 2
WriteLn(m); // снова вывожу этот массив, и вторая переменная равна 2
end.
@@ -0,0 +1,25 @@
program nunax;
var c:char;
ch : array[1..4] of char;
i,x:integer;
label l1;
begin
ch[1]:='a';
ch[2]:='b';
ch[3]:='c';
ch[4]:='d'; //записываю переменные в массив
l1: // метка для того чтобы при вводе неверного варианта что то происходило
x:=0; //всегда обнуляй переменные при использовании циклов
WriteLn('введи a,b,c или d');
ReadLn(c); //считывание варианта
for i:=1 to 4 do
begin
if (c<>ch[i]) then inc(x); // тут вариант сравнивается с a b c и d которые внесены в массив
end; // если inc(x) произошло 4 раза, значит вариант не равен ничему из того что есть в массиве
if x<>3 then
begin
Writeln('че?');
goto l1; // собственно сам переход к l1 если введен неверный вариант
end;
WriteLn('end');
end.
@@ -0,0 +1,13 @@
program множества;
var A,B,C: set of 0..9;//0..9 значит, что значения могут быть от 0 и до 9 (включительно)
begin
A:=[1,2,3];
B:=[3,4,5];
C:=A+B;// + объединение
WriteLn(C);
C:=A*B;// * пересечение
WriteLn(C);
C:=A-B;// - вычитание
WriteLn(C);
end.
@@ -0,0 +1,25 @@
program ranodmizer;
Uses crt;
var y,x,i:integer;
const N=5;
begin
i:=1; //ïîïûòêè
y:= random (10); //÷èñëî, êîòîðîå óãàäûâàåøü
//writeln (y);
WriteLn('Óãàäàé ÷èñëî');
ReadLn(x); //óãàäûâàåøü
While ((x<>y)and(i<N+1)) do //åñëè íåâåðíî
begin
{
if x>y then writeln ('Áîëüøå');
if x<y then writeln ('Ìåíüøå');
}
writeLn('Íåâåðíî, ïîïðîáóé åùå ðàç');
ReadLn(x);
inc(i); //åñëè åùå ðàç íåâåðíî,while âåðíåò ê begin
end;
if(x=y)then writeLn ('Ìîëîäåö');
if not (x=y) then writeln ('Òû ïðîèãðàë');
readkey;
end.
@@ -0,0 +1,65 @@
uses crt;
var w,a,s,d,q,e,r,t:integer;
n:byte;
label l1;
begin
l1:
WriteLn('Ââåäèòå êîä');
ReadLn(w);
if w <> 536985 then WriteLn('Íåâåðíî');
if w <> 536985 then goto l1;
WriteLn('Óãàäàéòå ïåðâûé ñèìâîë (áóêâó) ïàðîëÿ');
WriteLn('Èñïîëüçóéòå íîìåð áóêâû àíãëèéñêîãî àëôàâèòà');
WriteLn('Íàïðèìåð ÷òîáû ââåñòè A ââåäèòå 1');
ReadLn(n);
Case n of
1..5,7..26:WriteLn(' íåâåðíî');
6: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå 2 ñèìâîë (öèôðó) ïàðîëÿ');
ReadLn(w);
Case w of
2..9:WriteLn(' íåâåðíî');
1: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå òðåòèé ñèìâîë (áóêâó) ïàðîëÿ');
WriteLn('Èñïîëüçóéòå íîìåð áóêâû àíãëèéñêîãî àëôàâèòà');
ReadLn(a);
Case a of
1..5,7..26:WriteLn(' íåâåðíî');
6: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå 4 ñèìâîë (öèôðó) ïàðîëÿ');
ReadLn(s);
Case s of
2..9:WriteLn(' íåâåðíî');
1: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå ïÿòûé ñèìâîë (áóêâó) ïàðîëÿ');
WriteLn('Èñïîëüçóéòå íîìåð áóêâû àíãëèéñêîãî àëôàâèòà');
ReadLn(r);
Case r of
1..5,7..26:WriteLn(' íåâåðíî');
6: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå 6 ñèìâîë (öèôðó) ïàðîëÿ');
ReadLn(t);
Case t of
1,3..9:WriteLn(' íåâåðíî');
2: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå ïÿòûé ñèìâîë (áóêâó) ïàðîëÿ');
WriteLn('Èñïîëüçóéòå íîìåð áóêâû àíãëèéñêîãî àëôàâèòà');
ReadLn(e);
Case e of
1..5,7..26:WriteLn(' íåâåðíî');
6: WriteLn('âåðíî');
end;
WriteLn('Óãàäàéòå 6 ñèìâîë (öèôðó) ïàðîëÿ');
ReadLn(q);
Case q of
1,3..9:WriteLn(' íåâåðíî');
2: WriteLn('âåðíî');
end;
Readkey;
end.
@@ -0,0 +1,31 @@
program counter;
uses FormsABC;
var
p := new Button('+');
f2 := new FlowBreak;
x := new IntegerField('kills:');
f1 := new FlowBreak(20);
m := new Button('-');
y:integer;
procedure plus;
begin
inc(y);
x.value := y;
end;
procedure minus;
begin
dec(y);
x.Value := y;
end;
begin
MainForm.Title := 'Счетчик';
MainForm.SetSize(250,200);
MainForm.CenterOnScreen;
mainPanel.Dock :=DockStyle.right;
mainPanel.Width := 170;
p.Click += plus;
m.Click += minus;
end.
@@ -0,0 +1,6 @@
program for1;
var i,k,n:integer;
begin
Read(k,n);
For i:=1 to n do WriteLn(k);
end.
@@ -0,0 +1,11 @@
program for2;
var a,b,i,n:integer;
begin
Read(a,b);
For i:=a to b do
begin
WriteLn(i);
n:=n+1
end;
writeln('n=' , n);
end.
@@ -0,0 +1,6 @@
program for3;
var k,n,i:integer;
begin
Read(k,n);
For i:=k to n do WriteLn(k);
end.
@@ -0,0 +1,11 @@
program for4;
var a,b,i,n:integer;
begin
read(a,b);
For i:=a to b do
begin
WriteLn(i);
inc(n);
end;
WriteLn(n);
end.
@@ -0,0 +1,11 @@
program for5;
var a,b,i,n:integer;
begin
read(a,b);
For i:=b-1 downto a+1 do
begin
WriteLn(i);
inc(n);
end;
WriteLn(n);
end.
@@ -0,0 +1,11 @@
Program programma_kotoraia_smogla;//присваеваем имя проге
Var x,y,z,a,b,c: Integer;//назначаем переменные и их тип
Begin
WriteLn ('Слышь, введи 5 цифр через пробел');// приветствие
ReadLn(x,y,z,a,b);//считываем цифры
c:=x-y+z*(a+b);//присваеваем значение переменной "c"
WriteLn(c);//выводим результат
{
Автоподстановка открывается на ctrl+ пробел
}
End.
View File
View File
View File
View File
View File
+3 -1
View File
@@ -64,7 +64,9 @@ with engine.begin() as conn:
# SELECT
from sqlalchemy import select
stmt = select(user_table).where(user_table.c.name == 'spongebob')
stmt = select(user_table).where(user_table.c.name == 'spongebob') # Where accepts binary expression
print('Where clause: ', user_table.c.name == 'spongebob')
print('Type of where clause: ', type(user_table.c.name == 'spongebob'))
with engine.connect() as conn:
for row in conn.execute(stmt):
print(row)
+129
View File
@@ -0,0 +1,129 @@
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
from sqlalchemy import ForeignKey
from sqlalchemy.orm import Session
from sqlalchemy.orm import registry
from sqlalchemy.orm import relationship
mapper_registry = registry()
Base = mapper_registry.generate_base()
# from sqlalchemy.orm import declarative_base
# Base = declarative_base()
class User(Base):
__tablename__ = 'user_account'
id = Column(Integer, primary_key=True)
name = Column(String(30))
fullname = Column(String)
addresses = relationship("Address", back_populates="user")
def __repr__(self):
return f"User(id={self.id!r}, name={self.name!r}, fullname={self.fullname!r})"
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
email_address = Column(String, nullable=False)
user_id = Column(Integer, ForeignKey('user_account.id'))
user = relationship("User", back_populates="addresses")
def __repr__(self):
return f"Address(id={self.id!r}, email_address={self.email_address!r})"
engine = create_engine("sqlite+pysqlite:///:memory:", future=True)
Base.metadata.create_all(engine)
session = Session(engine)
# INSERT
print('-----insert-----')
squidward = User(name="squidward", fullname="Squidward Tentacles")
krabs = User(name="ehkrabs", fullname="Eugene H. Krabs")
spongebob = User(name='spongebob', fullname='Spongebob Squarepants')
session.add(squidward)
session.add(krabs)
session.add(spongebob)
print('new: ', session.new)
saved_krabs = session.get(User, 2)
print('krabs: ', saved_krabs)
print('krabs is krabs: ', saved_krabs is krabs)
session.commit() # All changes are applied only after commit
# SELECT
print('-----select-----')
from sqlalchemy import select
stmt = select(User)
first = session.execute(stmt).first()
print(firs)
_all = session.execute(stmt).scalars().all()
print(_all)
# UPDATE
print('-----update-----')
from sqlalchemy import update
# Unit of work
squid = session.execute(select(User).filter_by(name='squidward')).scalar_one()
print('fetched squidward: ', squid)
squid.fullname = 'Squidward Octopus'
print('squid modified: ', squid in session.dirty)
print('new squid status: ', session.execute(select(User).where(User.name == 'squidward')).first())
# ORM enabled
session.execute(
update(User).
where(User.name == "squidward").
values(fullname="Sandy Octopus Extraordinaire")
)
print('Squid after bulk update: ', squid.fullname)
# DELETE
print('-----delete-----')
from sqlalchemy import delete
krabs = session.get(User, 2)
session.delete(krabs)
session.execute(select(User).where(User.name == "ehkrabs")).first()
print('Krabs present: ', krabs in session)
# orm-enabled
squidward = session.get(User, 1)
session.execute(delete(User).where(User.name == "squidward"))
print('Squidward present: ', squidward in session)
# ROLLBACK
print('-----rollback-----')
print(squid.__dict__)
session.rollback()
print(squid.__dict__)
squid.fullname
print(squid.__dict__)
print('Krabs present: ', krabs in session)
session.close()
+122
View File
@@ -0,0 +1,122 @@
graph = {
1: {
2: 7,
3: 9,
6: 14
},
2: {
1: 7,
3: 10,
4: 15
},
3: {
1: 9,
2: 10,
4: 11,
6: 2
},
4: {
2: 15,
3: 11,
5: 6,
},
5: {
4: 6,
6: 9,
},
6: {
1: 14,
5: 9,
3: 2
}
}
class GraphPoint:
def __init__(self, graph, number, routes):
self.graph = graph
self.number = number
self.routes = routes
self.visited = False
self.minimum_range = 9999
def get_unvisited_neighbours(self):
neighbours = []
for number in self.routes.keys():
point = self.graph.get_point(number)
if not point.visited:
neighbours.append(point)
return neighbours
def get_range(self, point):
return self.routes[point.number]
def get_all_neighbours(self):
neighbours = [self.graph.get_point(x) for x in self.routes.keys()]
return neighbours
class Graph:
def __init__(self, data):
self.data = data
self.points = {}
for number, routes in data.items():
self.points[number] = GraphPoint(self, number, routes)
self.points[1].minimum_range = 0
def get_point(self, number):
point = self.points.get(number)
if point is None:
raise ValueError(f"Graph has no point with number {number}")
return point
myGraph = Graph(graph)
start = myGraph.get_point(1)
queue = []
queue.append(start)
while len(queue) > 0:
current_point = min(queue, key=lambda x: x.minimum_range)
queue.remove(current_point)
current_point.visited = True
for neighbour in current_point.get_unvisited_neighbours():
new_range = current_point.minimum_range + current_point.get_range(neighbour)
if new_range < neighbour.minimum_range:
neighbour.minimum_range = new_range
queue.append(neighbour)
path = []
pos = myGraph.get_point(5)
while pos != start:
for neighbour in pos.get_all_neighbours():
if neighbour.get_range(pos) + neighbour.minimum_range == pos.minimum_range:
path.append(pos)
pos = neighbour
break
path.append(start)
for i in path[::-1]:
print(i.number)
# No comments here. Good l_ck!
@@ -0,0 +1,176 @@
# Матрица смежности
# [y][x] - существование пути (ребра) из y в x (опционально - вместо существования bool вес int)
# При нумерации с 1 при этом методе существует несоответствие номеров узлов и индексов (индекс = номер - 1)
graph = (
(0, 1, 1, 0, 0, 0, 1),
(1, 0, 1, 1, 0, 0, 0),
(1, 1, 0, 0, 0, 0, 0),
(0, 1, 0, 0, 1, 0, 0),
(0, 0, 0, 1, 0, 1, 0),
(0, 0, 0, 0, 1, 0, 1),
(1, 0, 0, 0, 0, 1, 0)
)
# Поиск в глубину
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = [] # Список узлов, которые нужно посетить
queue.append(0) # Стартовый узел
while len(queue): # Пока есть узлы, которые надо посетить
node1 = queue.pop(-1)
visited_nodes[node1] = 2
for node2 in range(6, -1, -1): # С последнего к первому. от 6 до 0 включительно
if graph[node1][node2] == 1 and visited_nodes[node2] == 0: # Узел смежный и не обнаружен
queue.append(node2)
visited_nodes[node2] = 1
# Поиск первого пути в невзвешенном графе (из точки 3 в 5)
class Edge:
def __init__(self, begin, end):
self.begin = begin
self.end = end
def __str__(self):
return f"Edge({self.begin + 1}, {self.end + 1})"
def find_edges(graph, starting_point, stopping_point):
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
edges = []
queue = [] # Список узлов, которые нужно посетить
queue.append(starting_point) # Стартовый узел
while len(queue): # Пока есть узлы, которые надо посетить
node1 = queue.pop(-1)
visited_nodes[node1] = 2
print('Checking node %s' % node1)
for node2 in range(6, -1, -1):
print(f'Checking path to {node2}')
if graph[node1][node2] == 1 and visited_nodes[node2] == 0: # Узел смежный и не обнаружен
print('Path exists and is undetected. Saving')
queue.append(node2)
visited_nodes[node2] = 1
edges.append(Edge(node1, node2))
if node2 == stopping_point:
print('Found stop, returning')
return edges
return edges
start = 2
req = 4
edges = find_edges(graph, start, req)
print('\nResulting list: ')
for i in edges:
print(i)
print("\nPath:")
while len(edges):
edge = edges.pop(-1)
if edge.end == req:
req = edge.begin
print(edge)
# ==================================================================
# Список смежности
# ключ - номер узла, значение - список узлов, с которыми есть связь
print('\n\n\n\n\n\nСписок смежности')
graph = {
1: (2, 3, 7),
2: (1, 3, 4),
3: (1, 2),
4: (2, 5),
5: (4, 6),
6: (5, 7),
7: (1, 6)
}
# Поиск в глубину
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = []
queue.append(1)
while len(queue):
node1 = queue.pop(-1)
visited_nodes[node1 - 1] = 2
for node2 in graph.get(node1)[::-1]:
# Проверка на смежность в этом методе не нужна, потому что в списке уже содержатся смежные узлы.
if visited_nodes[node2 - 1] == 0:
visited_nodes[node2 - 1] = 1
queue.append(node2)
# Поиск первого пути в невзвешенном графе (из точки 3 в 5)
class Edge:
def __init__(self, begin, end):
self.begin = begin
self.end = end
def __str__(self):
return f"Edge({self.begin}, {self.end})"
def find_edges(graph, starting_point, stopping_point):
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = []
queue.append(starting_point)
edges = []
while len(queue):
node1 = queue.pop(-1)
visited_nodes[node1 - 1] = 2
print(f'Checking node {node1}')
for node2 in graph.get(node1)[::-1]:
print(f'Checking existing path to {node2}')
# Проверка на смежность в этом методе не нужна, потому что в списке уже содержатся смежные узлы.
if visited_nodes[node2 - 1] == 0:
print('Path is undetected. Saving')
visited_nodes[node2 - 1] = 1
queue.append(node2)
edges.append(Edge(node1, node2))
if node2 == stopping_point:
print('Found stop, returning')
return edges
return edges
start = 3
req = 5
edges = find_edges(graph, start, req)
print('\nResulting list: ')
for i in edges:
print(i)
print("\nPath:")
while len(edges):
edge = edges.pop(-1)
if edge.end == req:
req = edge.begin
print(edge)
@@ -0,0 +1,178 @@
# Матрица смежности
# [y][x] - существование пути (ребра) из y в x (опционально - вместо существования bool вес int)
# При нумерации с 1 при этом методе существует несоответствие номеров узлов и индексов (индекс = номер - 1)
graph = (
(0, 1, 1, 0, 0, 0, 1),
(1, 0, 1, 1, 0, 0, 0),
(1, 1, 0, 0, 0, 0, 0),
(0, 1, 0, 0, 1, 0, 0),
(0, 0, 0, 1, 0, 1, 0),
(0, 0, 0, 0, 1, 0, 1),
(1, 0, 0, 0, 0, 1, 0)
)
# Поиск в ширину
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = [] # Список узлов, которые нужно посетить
queue.append(0) # Стартовый узел
while len(queue): # Пока есть узлы, которые надо посетить
node1 = queue.pop(0)
visited_nodes[node1] = 2
for node2 in range(7):
if graph[node1][node2] == 1 and visited_nodes[node2] == 0: # Узел смежный и не обнаружен
queue.append(node2)
visited_nodes[node2] = 1
# Поиск кратчайшего пути в невзвешенном графе (из точки 3 в 5)
class Edge:
def __init__(self, begin, end):
self.begin = begin
self.end = end
def __str__(self):
return f"Edge({self.begin + 1}, {self.end + 1})"
def find_edges(graph, starting_point, stopping_point):
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
edges = []
queue = [] # Список узлов, которые нужно посетить
queue.append(starting_point) # Стартовый узел
while len(queue): # Пока есть узлы, которые надо посетить
node1 = queue.pop(0)
visited_nodes[node1] = 2
print('Checking node %s' % node1)
for node2 in range(7):
print(f'Checking path to {node2}')
if graph[node1][node2] == 1 and visited_nodes[node2] == 0: # Узел смежный и не обнаружен
print('Path exists and is undetected. Saving')
queue.append(node2)
visited_nodes[node2] = 1
edges.append(Edge(node1, node2))
if node2 == stopping_point:
print('Found stop, returning')
return edges
return edges
start = 2
req = 4
edges = find_edges(graph, start, req)
print('\nResulting list: ')
for i in edges:
print(i)
print("\nPath:")
while len(edges):
edge = edges.pop(-1)
if edge.end == req:
req = edge.begin
print(edge)
# ==================================================================
# Список смежности
# ключ - номер узла, значение - список узлов, с которыми есть связь
print('\n\n\n\n\n\nСписок смежности')
graph = {
1: (2, 3, 7),
2: (1, 3, 4),
3: (1, 2),
4: (2, 5),
5: (4, 6),
6: (5, 7),
7: (1, 6)
}
# Поиск в ширину
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = []
queue.append(1)
while len(queue):
node1 = queue.pop()
visited_nodes[node1 - 1] = 2
for node2 in graph.get(node1):
# Проверка на смежность в этом методе не нужна, потому что в списке уже содержатся смежные узлы.
if visited_nodes[node2 - 1] == 0:
visited_nodes[node2 - 1] = 1
queue.append(node2)
# Поиск кратчайшего пути в невзвешенном графе (из точки 3 в 5)
class Edge:
def __init__(self, begin, end):
self.begin = begin
self.end = end
def __str__(self):
return f"Edge({self.begin}, {self.end})"
def find_edges(graph, starting_point, stopping_point):
visited_nodes = [0, 0, 0, 0, 0, 0, 0] # 1 - обнаружена, 2 - посещена
queue = []
queue.append(starting_point)
edges = []
while len(queue):
node1 = queue.pop(0)
visited_nodes[node1 - 1] = 2
print(f'Checking node {node1}')
for node2 in graph.get(node1):
print(f'Checking existing path to {node2}')
# Проверка на смежность в этом методе не нужна, потому что в списке уже содержатся смежные узлы.
if visited_nodes[node2 - 1] == 0:
print('Path is undetected. Saving')
visited_nodes[node2 - 1] = 1
queue.append(node2)
edges.append(Edge(node1, node2))
if node2 == stopping_point:
print('Found stop, returning')
return edges
return edges
start = 3
req = 5
edges = find_edges(graph, start, req)
print('\nResulting list: ')
for i in edges:
print(i)
print("\nPath:")
while len(edges):
edge = edges.pop(-1)
if edge.end == req:
req = edge.begin
print(edge)
+40
View File
@@ -0,0 +1,40 @@
class car:
name = "None"
weight = 1000
speed = 200
#__init__ нужен, чтобы сразу задать объекту нужные параметры
#Инициализация при создании
def __init__(self, name, weight, speed):
self.name = name
self.weight = weight
self.speed = speed
print(f"{self.name} едет со скоростью {self.speed}")
#self необходим для того, Чтобы отличать методы от функций, которые не привязаны к какому-то классу/объекту,
#поддерживать полиморфизм. Self - это что-то типа параметра метода.
def set(self, name, weight, speed):
self.name = name
self.weight = weight
self.speed = speed
#Класс наследник создаётся так:
class truck(car):
wheels = 8
def __init__(self):
pass
man = truck()
man.wheels = 12
print(man.wheels)
#классы - наследники имеют доступ к методам из оригинального класса
man.set(weight = 10000, name = "Man", speed = 200)
Audi = car("Audi", 2000, 320)
Audi.set(weight = 2000, name = "Audi", speed = 320)
print(Audi.name)
Shkoda = car("Shkoda", 1800, 235)
Shkoda.set(weight = 1800, name = "Shkoda", speed = 235)
print (Shkoda.name)
+3
View File
@@ -0,0 +1,3 @@
#Можно подключить только 1 функцию из модуля
from random import randint as random
print(random(1,20))
+16
View File
@@ -0,0 +1,16 @@
#Подключение модуля, связанного с математикой
import math
#as позволяет в будущем использовать модуль при помощи псевдонима
import random as r
#вывод числа e
print(math.e)
#вывод числа пи
print(math.pi)
#вывод косинуса
print(math.cos(30))
print(r.randint(0, 20))
+13
View File
@@ -0,0 +1,13 @@
num = int (input ("Number: "))
#Операции с переменными в if: >, <, ==, !=, >=, <=
if num > 0:
print('Положительное')
#Elif это следующий if, который выполняется если предыдущей неверный.
elif num == 0:
print('Равно 0')
#Else выплняется если ни if, ни один из elseif не являются верными
else:
print('Отрицательное')
input()
+20
View File
@@ -0,0 +1,20 @@
#сложение
print (2+3)
#вычитание
print (6-8)
#умножение
print (6*2)
#деление
print (9/3)
#возведение в степень
print (3**5)
#деление без остатка
print (11//3)
#Остаток деления
print(3%2)
@@ -0,0 +1,55 @@
name = "Oleg"
#К строковым переменным применимы действия, подразумевающие порядок расположения
print(f'длина {len(name)}')
print(f'Буква {name[0]}')
#Методы, уникальные для строк:
print(name.find('le')) #Поиск позиции
Fname = name.replace('eg', 'ga') #Замена позиции
print(Fname)
print(name.upper()) #Преобразование регистра
print(name.isalpha()) #Проверяет, все ли символы - буквы
print('214'.isdigit()) #Проверяет, все ли символы - цифры
#f нужна, чтобы выводить переменные
print(f'My name is {name}')
#Но можно обойтись и без неё
print("My name is", name)
#input значит, что переменной присвоятся введенные с клавиатуры данные
#("") после input выводит надпись, прямо после которой будет осуществляться ввод (Enter: 4)
#Чтобы надпись не выводилась, скобки нужно оставить пустыми. Но сами скобки обязательны
num = input("Enter1: ")
num2 = input("Enter2: ")
#здесь вводятся данные типа string, поэтому при использовании + они присоединяются
res = num + num2
print(res)
#для использования integer нужно использовать int()
num = int(input("Enter1: "))
num2 = int( input("Enter2: "))
res = num + num2
print(res)
#float() позволяет вводить десятичные числа
num = float(input("Enter1: "))
num2 = float( input("Enter2: "))
res = num + num2
print(res)
# += 20 - прибавить 20 к переменной, так же и с остальными действиями
res += 20
print(f'E1+E2+20={res}')
res = num + num2
res -= 20
print(f'E1+E2-20={res}')
print(res)
res -= 1
print(res)
input()
@@ -0,0 +1,2 @@
print(int(bin(11), 2))
#число в двоичной системе (bin(11)) преобразовывается в целое число с указанием основы системы (2)
@@ -0,0 +1,48 @@
#Слева указать спецификаторы после знака %, справа указать то, на что эти спецификаторы заменить
#d = десятичное число, s = строка
formating = "That's %d %s bird" % (1, "dead")
print(formating)
x = 1234
#%[(name)][flags][width][.precision]спец
# name = ключ в словаре. При указании * для width и precision значение возьмётся из элемента в списке входных значений
#-10 = отступ слева. при указании отриц. числа превращается в отступ справа
#06 = поле становится равным 6 и добавляются вводные нули вместо отсутпа
res = "integers: ...%d...%-10d...%06d" % (x, x, x)
print(res)
#f = вещественное число
#. используется для определения кол-ва знаков после запятой
res = "%f...%.2f" % (1/3.0, 1/3.0)
print(res)
#Использование словаря:
formating = "%(number)d %(text)s" % {"number" : 1, "text" : "spam"}
print("\n", formating)
#*****************************************Методы форматирования*****************************************
#Могут использоваться именованные аргументы или номера аргументов
template = "{motto}, {0} and {food}"
print(template.format("ham", motto="spam", food="eggs"))
import sys
#Для ссылки на объект в словаре необходимо указать положение словаря в списке входных значений (1) и ключ объекта в квадратных скобках [spam]
#Для ссылки на атрибут объекта нужно применить точку (.platform)
template = "My {1[spam]} runs {0.platform}".format(sys, {"spam": "laptop"})
print(template)
somelist = list("spam")
#Использование отрицательных значений внутри строки формата приводит к ошибке
#Также нельзя создавать срезы внутри строки формата
#Поэтому объект нужно указать вне строки. |
template = "first = {0[0]}, last = {1}".format(somelist, somelist[-1])
print(template)
#Синтаксис точного форматирования: {fieldname!conversionflag:formatspec}
#Синтаксис formatspec: [[fill]align][sign][#][0][width][.precision][typecode] (В квадратных скобках необязательные компоненты)
#< = выравнивание слева, > = выравнивание справа
print("\n{0:>10} = {1:<10}".format("spam", 123.4567))
#Извлечение значения из списка аргументов:
print("{0:.{1}f}".format(3.14159, 2))
+75
View File
@@ -0,0 +1,75 @@
#В списки можно втроить другие списки
#Индекс первого элемента - 0
lis = [23, 15, 's', ['h', 'e', '1',]]
print(lis)
print(lis[2])
print(lis[3])
print(lis[3][1])
print("\n")
for i in lis:
print(i)
for i in range(0, 4):
lis[i] *= 2
print(lis)
#Добавление элемента в список
lis.append(2011)
print(lis)
#Удаление элемента из списка
#по значению
lis.remove(46)
print(lis)
#по индексу
lis.pop(0)
print(lis)
#Вставка элемента в определённое место
#1 - индекс, 9 - элемент
lis.insert(1, 9)
print(lis)
#Узнать индекс элемента
print(lis.index(9))
#Вывод элементов в конце списка
print("Индекс числа", lis[-1]," = ", lis.index(2011))
#Вывод определённой части списка (Среза) (Старт:финиш:шаг)
print(lis[1:-2:1])
print(lis[2:])
print(lis[2:len(lis)])
#Очистка списка
lis.clear()
print(lis)
#В списки можно вкладывать списки, тем самым создавая матрицы
M = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print('\n', M)
#Генератор, возвращающий суммы элементов строк
G = (sum(elements) for elements in M)
#Вызов в соответствии с протоколом итераций
print(next(G))
print(next(G))
#То же, но по другому
summ = list(map(sum, M))
print(summ)
#Вывод столбца
#Получить элементы row[1] из каждой строки матрицы M исоздать из них новый список
#Здесь переменной row присваивается элемент списка M (который сам является списком), а переменной col2
#присваивается 2 элемент списка row. И так для каждого элемента списка M.
col2 = [row[1] for row in M]
print(col2)
#Генератор списков
doubles = [c * 2 for c in 'spam']
print(doubles)
+12
View File
@@ -0,0 +1,12 @@
#Кортежи можно вводить в круглых скобках, без скобок, или словом tuple
a = (23, 16, 'Hi')
print(a)
a = 24, 17, 'qq'
print(a)
a = tuple ('Hello')
print(a)
#В кортежах нельзя менять отдельные символы. Только выводить
print(a[1])
@@ -0,0 +1,38 @@
#Множества создаются при помощи set
#В множествах нет повторяющихся элементов
#Также есть frozenset, он создаёт множества, которые нельзя менять (как кортежи)
a = set('hello')
print(a)
#Множества также можно создать при помощи фигурных скобок, не используя set
a = {'h', 'e', 'l', 'o'}
print(a)
"""
С множествами можно выполнять множество операций: находить объединение, пересечение...
len(s) - число элементов в множестве (размер множества).
x in s - принадлежит ли x множеству s.
set.isdisjoint(other) - истина, если set и other не имеют общих элементов.
set == other - все элементы set принадлежат other, все элементы other принадлежат set.
set.issubset(other) или set <= other - все элементы set принадлежат other.
set.issuperset(other) или set >= other - аналогично.
set.union(other, ...) или set | other | ... - объединение нескольких множеств.
set.intersection(other, ...) или set & other & ... - пересечение.
set.difference(other, ...) или set - other - ... - множество из всех элементов set, не принадлежащие ни одному из other.
set.symmetric_difference(other); set ^ other - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
set.copy() - копия множества.
И операции, непосредственно изменяющие множество:
set.update(other, ...); set |= other | ... - объединение.
set.intersection_update(other, ...); set &= other & ... - пересечение.
set.difference_update(other, ...); set -= other | ... - вычитание.
set.symmetric_difference_update(other); set ^= other - множество из элементов, встречающихся в одном множестве, но не встречающиеся в обоих.
set.add(elem) - добавляет элемент в множество.
set.remove(elem) - удаляет элемент из множества. KeyError, если такого элемента не существует.
set.discard(elem) - удаляет элемент, если он находится в множестве.
set.pop() - удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым.
set.clear() - очистка множества.
set.sort() - сортировка по возрастанию
set.reverse() - сортировка по убыванию
"""
+29
View File
@@ -0,0 +1,29 @@
#Словари могут вводиться в фигурных скобках
s = {'число': 24, 'надпись': 'inscription'}
print(s['число'])
#.keys и .values возвращают итерируемые объекты. Для получения списков нужно использовать list()
print(list(s.keys()), s.values())
#Могут при помощи dict.
d = dict(lazy="q", hardworking="Greetings")
print(d['lazy'])
#Могут при помощи dictfromkeys. При этом всем ключам присваивается одно значение. Его можно и не указывать
f = dict.fromkeys(['a', 'b', 'c'], 1)
print(f)
#D = dict(zip(keyslist, valslist))
var_zip = dict(zip(['food', 'tool'], ['spam', 'wrench']))
print(var_zip)
#Генератор словарей
D = {k: v for (k, v) in zip(['food', 'tool'], ['SPAM', 'WRENCH'])}
print(D)
#in позволяет проверить наличие ключа в словаре
if not 'd' in f:
print('В словаре f нет элемента с ключём d')
#get возвращает элемент словаря, а если его нет - указанное значение
print(f.get('x', 20))
+3
View File
@@ -0,0 +1,3 @@
spam
egg
Italia
Binary file not shown.
+2
View File
@@ -0,0 +1,2 @@
41,42,43
[1, 5, 10]&{'food': 'spam', 'tool': 'wrench'}
+13
View File
@@ -0,0 +1,13 @@
#Файл нельзя называть pickle
import pickle
#Сохранение объектов в файлах при помощи pickle
F = open("obj.pkl", "wb")
D = {'meal': 'burger', 'genius': 'heiakim'}
pickle.dump(D, F)
F.close()
#Чтение объектов
F = open('obj.pkl', 'rb')
print(pickle.load(F))
+84
View File
@@ -0,0 +1,84 @@
#создание файлов. w - write
text_file = open('data_file.txt', 'w')
#Запись в файл
text_file.write('Hello\n')
text_file.write('World')
#Закрытие файла
text_file.close()
#По умолчанию файлы открываются в режиме r - read
text_file = open('data_file.txt')
#Чтение из файла. (в скобках можно указать кол-во символов для чтения)
print(text_file.read())
print('\n')
#Чтение одной строки. (в скобках можно указать кол-во символов для чтения)
text_file = open('data_file.txt')
S = text_file.readline()
S = text_file.readline()
print(S)
print('\n')
#Чтение файла в список строк
text_file = open('data_file.txt')
L = text_file.readlines()
print(L)
print('\n')
#Запись строк из списка в файл
text_file = open('data_file.txt', 'w')
tmp_list = ['spam\n', 'egg\n', 'Italia']
text_file.writelines(tmp_list)
text_file = open('data_file.txt')
print(text_file.read())
print('\n****************')
#Итератор файла
text_file = open('data_file.txt')
for S in text_file:
print(S * 2)
print('****************\n')
#Изменяет текущую позицию в файле для следующей операции, смещая ее на N байтов от начала файла.
text_file = open('data_file.txt')
text_file.seek(7)
print(text_file.read())
print('\n')
#Запись объектов
objects = open('objects.txt', 'w')
L = [1, 5, 10]
X, Y, Z = 41, 42, 43
D = {'food': 'spam', 'tool': 'wrench'}
objects.write('{0},{1},{2}\n'.format(X, Y, Z))
objects.write(str(L) + '&' + str(D) + '\n')
objects = open('objects.txt')
print(objects.read())
#Чтение объектов
objects = open('objects.txt')
line = objects.readline()
#Удаление символа конца строки
line = line.rstrip()
print(line)
numbers = line.split(',')
L = [int(x) for x in numbers]
print(L)
line = objects.readline()
line = line.rstrip()
elements = line.split('&')
result = [eval(x) for x in elements]
print(result)
+21
View File
@@ -0,0 +1,21 @@
def nok (a,b):
c=a
d=b
ia=1
ib=1
while c != d:
if c < d:
ia += 1
c = a*ia
else:
ib+=1
d = b*ib
print(c, d)
return c
z = int(input('a: '))
x = int(input('b: '))
nok(z, x)
input()
+88
View File
@@ -0,0 +1,88 @@
import operator
import functools
prime = [2, 3]
def simple(a):
num = a[-1]+1
tr = False
while tr != True:
for i in range(2, num):
if num%i == 0:
tr = False
num += 1
break
else:
tr = True
a.append(num)
# print(f'В список добавлено число {num}')
def NOK(x,y):
if x > y:
difx = True
else:
difx=False
arrayx=[]
arrayy=[]
counter=0
while x!=1:
for i in range(counter, len(prime)):
if prime[i]>(x/2):
arrayx.append(x)
x=1
break
if x%prime[i]==0:
x //= prime[i]
arrayx.append(prime[i])
counter=0
i=0
break
if (x>1) and (i==(len(prime)-1)):
simple(prime)
counter=i
counter=0
while y!=1:
for i in range(counter, len(prime)):
if prime[i]>(y/2):
arrayy.append(y)
y=1
break
if y%prime[i]==0:
y//=prime[i]
arrayy.append(prime[i])
counter=0
i=0
break
if (y>1) and (i==(len(prime)-1)):
simple(prime)
counter=i
print(arrayx, arrayy)
count_ax = 0
y_second = list(arrayy)
x_second = list(arrayx)
for i in range(0, len(arrayy)):
for for_x in range(0, len(x_second)):
if arrayy[i] == x_second[for_x]:
y_second.remove(arrayy[i])
x_second.remove(arrayy[i])
break
result_array = y_second + arrayx
result = functools.reduce(operator.mul, result_array, 1)
print(result_array, result)
return result
first = int(input())
second = int(input())
print(NOK(first,second))
input()
+33
View File
@@ -0,0 +1,33 @@
# Функции создаются при помощи def Имя (Список параметров)
#В тройных кавычках содержится описание функции
def division (dividend, divisor):
"""Делит делимое на делитель"""
if divisor != 0:
z = dividend/divisor
#return возвращает результат функции. Без него результатом будет None
#также есть pass, при использовании которого функция ничего не возвращает
return z
else:
print('На 0 делить нельзя')
#Просмотр описания функции
print(division.__doc__)
print(division(18,6))
def gcd(a, b):
"Нахождение НОД"
while a != 0:
a,b = b%a,a # параллельное определение. Не смотря на то, что b написано после a, переменной b всё равно присваивается старое значение a
print(a,b)
print(b)
return b
gcd(2,3)
#вместо списка параметров можно написать *args, тогда кол-во параметров определится само
def test(*args):
print(args)
pass
test(23, "hi", 4221)
+2
View File
@@ -0,0 +1,2 @@
mult = lambda x, y: x * y
print(mult(2, 5))
@@ -0,0 +1,35 @@
prime = [2, 3]
print(prime)
num = prime[-1]+1
tr = False
while tr != True:
for i in range(2, num):
if num%i == 0:
tr = False
print(num, i, tr)
num += 1
break
else:
tr = True
print(num, i, tr)
prime.append(num)
for z in range(1, 1500):
num = prime[-1]+1
tr = False
while tr != True:
for i in range(2, (num//2)):
if num%i == 0:
tr = False
num += 1
break
else:
tr = True
prime.append(num)
print(prime)
+9
View File
@@ -0,0 +1,9 @@
#Здесь переменная f объявляется сразу в цикле
#В данном цикле f присваивается каждый элемент из множества символов, заданных после in
for f in 'Hi!':
print (f * 2)
#for с числами. Последнее число не обрабатывается: будет идти от 10 до 19
#range (Старт, финиш, шаг)
for k in range(10, 20):
print (k)
+6
View File
@@ -0,0 +1,6 @@
#Переменная создаётся до цикла
i = 0
#Цикл выполняется, пока условие является истинным.
while i < 10:
print(i)
i += 2
Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

@@ -0,0 +1,106 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="2_поток.css" rel="stylesheet" type="text/css">
<title>Документ без названия</title>
</head>
<body>
<div class="valentine">
<div class="inside">
<img src="images/img02.jpg" width="190" height="196" class="FL">
<h1 class="valentine_text">valentine</h1>
<p class="templates">BY FREE CSS TEMPLATES</p>
</div>
</div>
<div class="menu">
<div class="inside">
<ul class="menu_list FL">
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">HOME</a></li>
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">ARTICLE</a></li>
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">BLOGS</a></li>
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">ABOUT US</a></li>
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">CONTACTS</a></li>
<li><img class="heart" src="images/img03.jpg" width="11" height="10" /><a href="#">R33</a></li>
</ul>
<div class="text_input FR">
<input type="text" class="field">
<input type="button" value="GO" class="GO">
</div>
</div>
</div>
<div class="content">
<div class="inside">
<div class="content_left FL">
<img class="FL title_heart" src="images/img06.jpg" width="19" height="16" />
<p class="categories">categories</p>
<div class="left_line"></div>
<ul class="left_list">
<li><a href="#">Aliquam libero</a></li>
<li><a href="#">Consectetuer elit</a></li>
<li><a href="#">Metus pelentesque</a></li>
<li><a href="#">Suspendisse mauris</a></li>
<li><a href="#">Urnanet molestie semper</a></li>
<li><a href="#">Prcin orci porttitor</a></li>
</ul>
<img class="FL title_heart" src="images/img06.jpg" width="19" height="16" />
<p class="categories">archives</p>
<div class="left_line"></div>
<ul class="left_list">
<li><a href="#">September</a> (23)</li>
<li><a href="#">August</a> (31)</li>
<li><a href="#">July</a> (31)</li>
<li><a href="#">June</a> (30)</li>
<li><a href="#">May</a> (31)</li>
</ul>
<img class="FL title_heart" src="images/img06.jpg" width="19" height="16" />
<p class="categories">lorem ipsum dolor</p>
<div class="left_line"></div>
<ul class="left_list">
<li><a href="#">Aliquam libero</a></li>
<li><a href="#">Consectetuer elit</a></li>
<li><a href="#">Metus pellentesque</a></li>
<li><a href="#">Suspendisse mauris</a></li>
<li><a href="#">Urnanet molestie semper</a></li>
<li><a href="#">Proin orci porttitor</a></li>
</ul>
</div>
<div class="content_right FR">
<div class="content_blocks top_block">
<img class="FL title_heart" src="images/img06.jpg" width="19" height="16" />
<p class="categories">Welcome to Valentine</p>
<div class="right_line"></div>
<img class="FL tulips" src="images/img09.jpg" width="170" height="120" />
<p class="text">This is Valentine, a free, fully standards-compliant CSS template designed by <a href="#">Free CSS Templates</a>. The photos in this design are from <a href="#">PDPhoto.org</a></p>
<p class="text">This free template is released under a <a href="#">Creative Commons Attrbutions 2.5</a> license, so you're pretty much free to do whatever you want with it (even use it commercially) provided you keep the links in the focter intact. Aside from that, have fun with it :) This design is also available as a <a href="#">WordPress theme</a> at <a href="#">Free Wordpress Themes</a>.</p>
<div class="content_bottom_line"></div>
<p class="text posted">Posted on November 5, 2007 by <a href="#">Someone</a> | <a href="#">32 comments</a></p>
</div>
<div class="content_blocks bottom_block">
<img class="FL title_heart" src="images/img06.jpg" width="19" height="16" />
<p class="categories">Blandit volutpat consequat</p>
<div class="right_line"></div>
<p class="text">Proin nec magna. Proin nec massa sit amet purus congue molestie. Aliquam erat volutpat. Nulla pellentesque dolor non tellus. Duis vel elit sit amet ipsum vehical varius. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse rhoncus. Nunc est. Present interdum lectus quis neque. Aliquam eros. Julia fermentum dolor eget mi. Cras diam sapien, auctor non, malesuada at, tristique id, dui. Aenean congue ante.</p>
<p class="text">Aenean congue ante. Prom nec magna tempus lorem ipsum dolor.</p>
<p class="text">Proin nec magna. Proin nec massa sit amet purus congue molestie. Aliquam erat volutpat. Nulla pellentesque dolor non tellus. Duis vel elit sit amet ipsum vehicula varius. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.</p>
<div class="content_bottom_line"></div>
<p class="text posted">Posted on November 5, 2007 by <a href="#">Someone</a> | <a href="#">32 comments</a></p>
</div>
</div>
</div>
<div class="footer" align="center">
<div class="last_line CB"></div>
<p class="text copyright FL">Copyright (c) 2007 Website name. All right reserved</p>
<p class="text designed FR">Designed by <a href="#">Free CSS Templates</a></p>
</div>
</div>
</body>
</html>
@@ -0,0 +1,215 @@
@charset "utf-8";
/* CSS Document */
* {
margin: 0;
padding: 0;
}
.FL {
float: left;
}
.FR {
float: right;
}
.CB {
clear: both;
}
a:hover {
text-decoration: none;
}
a {
color: #f72d63;
}
.valentine {
height: 196px;
background-image: url(images/img01.jpg);
}
.inside {
margin: 0 auto;
width: 900px;
}
.valentine_text {
margin: 0;
padding-top: 50px;
font-size: 50px;
color: #f74b61;
}
.templates {
margin: 0;
padding: 0;
color: #f74b61;
font-size: 12px;
font-family: Arial;
letter-spacing: -1px;
}
.menu {
background-image: url(images/menu_img.jpg);
height: 54px;
width: 100%;
}
.heart {
margin-right: 5px;
}
.menu_list {
margin: 0;
padding-top: 17px;
}
.menu_list li {
display: inline;
margin-right: 25px;
}
.menu_list li a {
color: white;
font-family: Arial;
font-size: 11px;
text-decoration: none;
}
.text_input {
margin-top: 13px;
}
.field {
width: 130px;
height: 20px;
}
.GO {
margin-right: 10px;
width: 34px;
height: 23px;
background-color: #f74b61;
color: white;
}
.content {
padding-top: 20px;
background-color: #ffdbe1;
width: 100%;
height: 900px;
}
.content_left {
width: 250px;
}
.title_heart {
margin-right: 5px;
margin-left: 10px;
padding-top: 10px;
}
.categories {
color: #f62d47;
font-size: 24px;
font-family: Arial;
font-weight: bold;
}
.left_line {
width: 250px;
height: 1px;
border-top: 1px dotted #fa8496;
margin-top: 5px;
}
.left_list {
margin-top: 25px;
margin-left: 35px;
margin-bottom: 40px;
list-style: url(images/img07.gif)
}
.left_list li {
margin-bottom: 5px;
color: #f27293;
}
.content_right {
width: 603px;
}
.content_blocks {
padding-top: 5px;
background-color: #fecbd4;
margin-top: 13px;
width: 603px;
margin-bottom: 20px;
border-radius: 20px;
}
.top_block {
height: 340px;
}
.bottom_block {
height: 390px;
}
.right_line {
width: 603px;
height: 0px;
border-top: 7px solid #f74b61;
margin-top: 5px;
margin-bottom: 30px;
}
.tulips {
margin-left: 10px;
margin-right: 20px;
}
.text {
margin-left: 10px;
color: #f27291;
margin-bottom: 30px;
}
.text a {
color: #f82d47;
}
.content_bottom_line {
width: 603px;
height: 1px;
border-top: 1px dotted #fa8496;
margin-top: 45px;
}
.posted {
margin-top: 7px;
}
.last_line {
width: 1000px;
height: 20px;
border-bottom: 5px solid #fa8597
}
.copyright {
margin-left: 50px;
margin-top: 30px;
}
.designed {
margin-right: 50px;
margin-top: 30px;
}
.footer{
margin: 0 auto;
width: 1000px;
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 44 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Some files were not shown because too many files have changed in this diff Show More