Программирование в стиле Си
Особенность python
Оператор Ввода
Оператор Вывода
Условный оператор if
Switch/match
Цикл for
Цикл while
Массивы
Преимущества
Работа с графиками python
C#
Работа с графиками (2) python
C#
Ряд Тейлора для arctg python
С#
Работа с одномерным массивом python
C#
Работа с двумерным массивом python
C#
Работа со строками python
C#
Тест
754.56K
Категория: ПрограммированиеПрограммирование

Python (2)

1. Программирование в стиле Си

Программирован
ие в стиле Си

2. Особенность python

Python — язык, который зависит от отступов, при неправильном количестве
отступов, программа сломается, также в предложении в python отсутствует
какой-либо знак, определяющий конец.

Python (верное)
if (x > 0) {
if x > 0:
printf("Положительное\n");
print("Положительное")
} else {
else:
printf("Отрицательное\n");
print("Отрицательное")
}
Python(выдаст ошибку)
if x > 0:
print("Положительное")
else:
print("Отрицательное")

3.

Различия переменных в python и в Си
Одно из главных отличий python от Си языков – это то, что в Python не
указывается тип/класс переменной при объявлении. При дальнейшей работе в
python, мы можем изменить тип данных у переменной
Python
X=42
X=“Hello”
Print(type(X))
##class str

int x = 42;
x = "привет";
##ошибка компиляции: тип переменной
фиксирован

4. Оператор Ввода


#include <stdio.h>
int main() {
int x;
char name[50];
printf("Введите число: ");
scanf("%d", &x);
printf("Введите имя: ");
scanf("%s", name);
Cи++
#include <iostream>
#include <string>
Using namespace std;
int main() {
int x;
string name;
python
x = int(input("Введите число: "))
name = input("Введите имя: ")
print(f"x = {x}, name = {name}")
cout << "Введите число: ";
cin >> x;
cout << "Введите имя: ";
printf("x = %d, name = %s\n", x, name); cin >> name;
return 0;
cout << "x = " << x << ", name = "
}
<< name << endl;
return 0;
}

5. Оператор Вывода

Си++
#include <iostream>
#include <iomanip>
Using namespace std;
int main() {
int main() {
int x = 10;
int x = 10;
double y = 3.1415926535;
double y = 3.1415926535;
printf("x = %d\n", x);
cout << "x = " << x << endl;
printf("y = %.4f\n", y);
printf("Формат: %07.4f\n", y); cout << fixed << setprecision(4)
<< y << endl;
return 0;
cout << setw(7) << setfill('0')
}
<<fixed << setprecision(4)
<< y << endl;
return 0;
}
Си
#include <stdio.h>
python
x = 10
y = 3.1415926535
print("x =", x)
print(f"y = {y:.4f}")
print(f"{y:07.4f}")
print("{:07.4f}".format(y))

6. Условный оператор if

Си
if (условие) {
// блок
} else if (условие2) {
// блок
} else {
// блок
}
Си++
if (условие) {
// ...
} else if (условие2) {
// ...
} else {
// ...
}
python
if условие:
блок
elif условие2:
блок
else:
блок

Си++
python
If (условие)
If (условие)
If (условие)
else if (условие2)
else if (условие2)
elif (условие2)
else
else
else

7. Switch/match

Си
switch (выражение) {
case константа1:
// ...
break;
case константа2:
// ...
break;
default:
// ...
}
Си++
switch (выражение) {
case константа1:
// ...
break;
case константа2:
// ...
break;
default:
// ...
}
python
match day:
case 1:
print("Понедельник")
case 2:
print("Вторник")
case 3:
print("Среда")
case _:
print("Другой день")

8. Цикл for

Си
#include <stdio.h>
int main() {
for (int i = 0; i < 5; i++) {
printf("%d ", i);
}
return 0;
}
Си++
#include <iostream>
#include <iomanip>
Using namespace std;
int main() {
for (int i = 0; i < 5; i++) {
cout << i << " ";
}
return 0;
}
Python
for i in range(5):
print(i, end=" ")
For i in range (10, -1, -1):
print(i, end=" ")
fruits = ["яблоко", "банан", "вишня"]
for fruit in fruits:
print(fruit)
for i, fruit in enumerate(fruits):
print(i, fruit)
names = ["Анна", "Иван"]
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age)

9. Цикл while


#include <stdio.h>
Си++
#include <iostream>
int main() {
int i = 0;
while (i < 5) {
printf("%d ", i);
i++;
}
return 0;
}
int main() {
int i = 0;
while (i < 5) {
std::cout << i << " ";
i++;
}
return 0;
}
Int i = 0;
do {
printf("%d ", i);
i++;
} while (i < 5);
python
i=0
while i < 5:
print(i)
i += 1

10. Массивы

В отличие от массивов в Си в python в массиве могут храниться элементы разных типов даже
другие массивы.
python
arr = [1, 2, 3, 4, 5]
print(arr[0])
print(arr[-1])
print(len(arr))
arr.append(6)
arr[0] = 100
for x in arr:
print(x)
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arr[2:5])
print(arr[:3])
print(arr[7:])
print(arr[::2])
print(arr[::-1])
# [2, 3, 4]
# [0, 1, 2]
# [7, 8, 9]
# [0, 2, 4, 6, 8]
# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Cи++
#include <array>
#include <vector>
#include <iostream>
Using namespace std;
int main() {
int c_arr[3] = {1, 2, 3};
array<int, 3> cpp_arr = {1, 2, 3};
vector<int> vec = {1, 2, 3};
vec.push_back(4);
for i, x in enumerate(arr):
print(i, x)
}
for (int x : vec) {
cout << x << " ";
}

11. Преимущества

Проблемы
-Скорость написания кода
-Скорость выполнения
-Читаемость
-Потребление памяти
-Динамическая типизация
-Контроль над ресурсами
-Интерактивность
-Автоматическое управление памятью

12. Работа с графиками python

x = float(input("x = "))
R = float(input("R = "))
y=0
if -7 <= x < -6:
y=R
elif -6 <= x < -2:
y = R - 13
elif -2 <= x <= 2:
y = -3.125 * x * x + 0.25 * x + R
elif 2 < x <= 3:
y = -x + R - 10
print(f"y = {y}")

13. C#

using System;
class Program
{
static void Main()
{
Console.Write("x = ");
double x = double.Parse(Console.ReadLine());
Console.Write("R = ");
double R = double.Parse(Console.ReadLine());
double y = 0;
if (x >= -7 && x < -6)
y = R;
else if (x >= -6 && x < -2)
y = R - 13;
else if (x >= -2 && x <= 2)
y = -3.125 * x * x + 0.25 * x + R;
else if (x > 2 && x <= 3)
y = -x + R - 10;
Console.WriteLine($"y = {y}");
}
}

14.

Преимущества
Короткий код
Легкость чтения
Недостатки
Производительность

15. Работа с графиками (2) python

R = float(input("R = "))
X = float(input("X = "))
Y = float(input("Y = "))
if (Y >= -1 and Y <= 12 and X >= -6 and X <= 3 and
((X < -2 and Y <= 3.25 * X + 18.5) or
(X > 2 and Y <= -X + 2) or
(-2 <= X <= 2 and X * X + (Y - 6) * (Y - 6) <= R * R))):
print("Yes")
else:
print("No")

16. C#

using System;
class Program
{
static void Main()
{
Console.Write("R = ");
double R = double.Parse(Console.ReadLine());
Console.Write("X = ");
double X = double.Parse(Console.ReadLine());
Console.Write("Y = ");
double Y = double.Parse(Console.ReadLine());
if (Y >= -1 && Y <= 12 && X >= -6 && X <= 3 &&
((X < -2 && Y <= 3.25 * X + 18.5) ||
(X > 2 && Y <= -X + 2) ||
(X >= -2 && X <= 2 && X * X + (Y - 6) * (Y - 6) <= R * R)))
{
Console.WriteLine("Yes");
}
else
{
Console.WriteLine("No");
}
}
}

17.

Преимущества
Компактность кода
Недостатки
Производительность

18. Ряд Тейлора для arctg python

import math
st = float(input())
end = float(input())
dx = float(input())
e = float(input())
word1 = "x"
word2 = "result"
word3 = "arctan(x)"
word4 = "n"
w1, w2, w3, w4 = 12, 20, 20, 8
sep = "+" + "-" * w1 + "+" + "-" * w2 + "+" + "-" * w3 + "+" + "-"
* w4 + "+"
header =
f"|{word1:^{w1}}|{word2:^{w2}}|{word3:^{w3}}|{word4:^{w4}
}|"
print(sep)
print(header)
print(sep)
while st <= end:
n=0
res = math.atan(st)
vrem = -1 / st
summ = -math.pi / 2
while abs(vrem) > e:
summ += vrem / (2 * n + 1)
vrem = -vrem / (st * st)
n += 1
row = (f"|{st:<{w1}.4f}"
f"|{summ:<{w2}.6f}"
f"|{res:<{w3}.6f}"
f"|{n:<{w4}}|")
print(row)
print("=" * 65)
st += dx

19. С#

using System;
namespace a
{
class Program
{
static void Main(){
double st=double.Parse(Console.ReadLine());
double end=double.Parse(Console.ReadLine());
double dx=double.Parse(Console.ReadLine());
double e=double.Parse(Console.ReadLine());
int n=0;
string word1="x";
string word2="result";
string word3="arctan(x)";
string word4="n";
Console.WriteLine(new string('+', 65));
Console.WriteLine
("|{0}\t|{1}
\t|{2}
\t|{3}\t|", word1, word2,
word3, word4);
Console.WriteLine(new string('+', 65));
while ( st <= end)
{
n=0;
double res=Math.Atan(st);
double vrem=-1/st;
double summ=-Math.PI/2;
while (Math.Abs(vrem)>e)
{
summ+=(vrem/(2*n+1));
vrem=(-vrem/(st*st));
n++;
}
Console.WriteLine("|{0}\t|{1}\t|{3}\t|{2,-7}|",
st,summ,n,res);
Console.WriteLine(new string('=', 65));
st+=dx;
}
}
}
}

20.

Преимущества
Компактность кода
Динамическое построение разделителей
Недостатки
Производительность

21. Работа с одномерным массивом python

import math
file_path = r"C:\cods\lab1\lab1\text.txt"
with open(file_path, "r") as sr:
n = int(sr.readline())
a = float(sr.readline())
b = float(sr.readline())
line = sr.readline()
str_numbers = line.split()
numbers = [float(str_numbers[i]) for i in range(n)]
max = 0
flag = 0
summ = 0.0
First_pos=-1
for index, i in enumerate(numbers):
if abs(i) > abs(max):
max = i
if i> 0 and flag==0 :
First_pos=index
flag=1
Arr=numbers[First_pos:]
summ=sum(Arr)
print("Summ={}".format(round(summ, 5)))
print("Max={}".format(max))
numbers.sort(key=lambda x: 0 if a <= int(x) <= b else 1)
for num in numbers:
print(f" {num}", end='')
print()

22. C#

using System;
C#
using System.Globalization;
int flag=0;
double summ=0;
{
for (int i=0; i<n; i++)
if ((int)numbers[j]<a || (int)numbers
{
b)
namespace a
if (Math.Abs(numbers[i]) >
{
{
Math.Abs(numbers[maxi]))
t=numbers[j];
class Program
{
numbers [j]=numbers [j+1];
{
maxi=i;
numbers [j+1]=t;
static void Main(){
}
}
if (numbers[i] > 0 && flag==0)
}
StreamReader sr = new
{
}
StreamReader("C:\\cods\\lab1\\lab1\\text.txt");
flag=1;
for (int i=0; i<n; i++){
int n=int.Parse(sr.ReadLine());
summ+=numbers[i];
Console.Write(" {0}",numbers[i]);
double a=double.Parse(sr.ReadLine());
}
}
double b=double.Parse(sr.ReadLine());
else if (flag == 1)
}
string line;
{
}
double [] numbers = new double [n];
summ+=numbers[i];
}
line = sr.ReadLine();
}
string [] str=line.Split(' ');
}
for ( int i=0; i<n; i++){
Console.WriteLine("Summ={0}",Math.Round(sum
numbers[i]= double.Parse(str[i]);
m,5));
}
Console.WriteLine("Maxi={0}",maxi);
sr.Close();
double t;
int maxi=0;
for (int i=0; i<n; i++)

23.

Преимущества
Компактность кода
Легче создание и работа с массивом
Лёгкая сортировка
Итерация по элементам
Недостатки
Производительность

24. Работа с двумерным массивом python

sr = open(r"C:\cods\lab1\lab1\text.txt")
n, m = int(sr.readline()), int(sr.readline())
numbers = [[float(x) for x in sr.readline().split()] for _ in
range(n)]
sr.close()
str_counts = [row.count(0) for row in numbers]
stl_counts = [sum(numbers[i][j] == 0 for i in range(n)) for j in
range(m)]
istr = next((i for i in range(n) for j in range(m) if numbers[i][j] >
0), -1)
for i in range(n):
if str_counts[i] == m:
for j in range(n - 1, i - 1, -1):
if str_counts[j] != m:
numbers[i], numbers[j] = numbers[j], numbers[i]
for i in range(m):
if stl_counts[i] == n:
for j in range(m - 1, i, -1):
if stl_counts[j] != n:
for k in range(n):
numbers[k][i], numbers[k][j] = numbers[k][j],
numbers[k][i]
n1 = n - sum(c == m for c in str_counts)
m1 = m - sum(c == n for c in stl_counts)
for i in range(n1):
for j in range(m1):
print(f" {numbers[i][j]:4}", end='')
print(' ')
print("first>0")
print(istr)

25. C#

using System;
using System.Globalization;
C#
int istr=-1;
int [] str= new int [n];
int [] stl= new int [m];
for (int i=0; i<n; i++)
namespace a
{
{
for (int j=0; j<m; j++)
class Program
{
{
if (numbers[i, j] == 0)
static void Main(){
{
str[i]++;
StreamReader sr = new
StreamReader("C:\\cods\\lab1\\lab1\\text.txt"); stl[j]++;
}
int n=int.Parse(sr.ReadLine());
if (numbers[i, j] > 0 && istr==-1)
int m=int.Parse(sr.ReadLine());
{
string line;
istr=i;
double [,] numbers = new double [n,m];
}
for (int i=0; i<n; i++){
}
line = sr.ReadLine();
}
string [] st=line.Split(' ');
double t;
for (int j=0; j<m; j++){
numbers[i,j]= double.Parse(st[j]); for (int i=0; i<n; i++){
if (str[i] == m)
}
{
}
for (int j=n-1; j>=i; j--){
sr.Close();
if (str[j] != m)
{
for (int k=0; k<m; k++)
{
t=numbers[i,k];
numbers[i,k]=numbers[j,k];
numbers[j,k]=t;
}
}
}
}
}
for (int i=0; i<m; i++){
if (stl[i] == n)
{
for (int j=m-1; j>i; j--){
if (stl[j] != n)
{
for (int k=0; k<n; k++)
{
t=numbers[k,i];
numbers[k,i]=numbers[k,j];
numbers[k,j]=t;}

26.

}
}
}
}
int n1=n;
int m1=m;
for (int i=0; i<n; i++)
{
if (str[i] == m)
{
n1--;
}
}
for (int j=0; j<m; j++)
{
if (stl[j] == n)
{
m1--;
}
}
double [,] newnumb= new double [n1,m1];
for (int i=0; i<n1; i++)
{
for (int j=0; j<m1; j++)
{
newnumb[i,j]=numbers[i,j];
}
}
for (int i=0; i<n1; i++)
{
for (int j=0; j<m1; j++)
{
Console.Write(" {0, 4}",newnumb[i,j]);
}
Console.WriteLine(' ');
}
Console.WriteLine("first>0");
Console.WriteLine(istr);
}
}
}

27.

Преимущества
Недостатки
Компактность кода
Производительность
Лёгкость заполнения и работы с матрицей
Читаемость сложных вложенных структур
Встроенные методы для подсчета
Лёгкий обмен значений
Отсутствие необходимости создавать новую матрицу

28. Работа со строками python

sr = open(r"C:\cods\lab1\lab1\text.txt")
n, m = int(sr.readline()), int(sr.readline())
numbers = [[float(x) for x in sr.readline().split()] for _ in
range(n)]
sr.close()
str_counts = [row.count(0) for row in numbers]
stl_counts = [sum(numbers[i][j] == 0 for i in range(n)) for j in
range(m)]
istr = next((i for i in range(n) for j in range(m) if numbers[i][j] >
0), -1)
for i in range(n):
if str_counts[i] == m:
for j in range(n - 1, i - 1, -1):
if str_counts[j] != m:
numbers[i], numbers[j] = numbers[j], numbers[i]
with open(r"C:\cods\lab1\lab1\text.txt") as f:
text = f.read().replace('\n', '').replace('\r', '')
flag = 0
vuvod = ""
for ch in text:
if ch == '-' and flag == 0:
flag = 1
if flag == 1:
vuvod += ch
if (flag == 1 or flag == -1) and ch == '.':
print(vuvod)
vuvod = ""
flag = 0
elif flag == 0 and ch not in '- ':
flag = -1

29. C#

using System;
using System.Formats.Asn1;
using System.Globalization;
for (int i=0; i<text.Length; i++)
{
if (text[i]=='-' && flag==0) {
flag=1;
namespace a
}
{
if (flag == 1)
class Program
{
{
vuvod+=text[i];
static void Main(){
}
string text=string.Empty;
if ((flag == 1 || flag==-1) && text[i] == '.')
StreamReader sr = new
{
StreamReader("C:\\cods\\lab1\\lab1\\text.txt");
Console.WriteLine(vuvod);
string line;
vuvod=string.Empty;
flag=0;
line = sr.ReadLine();
}
while (line != null)
else if (flag==0 && text[i]!='-' && text[i]!=' ')
{
{
text+=line;
flag=-1;
line = sr.ReadLine();
}
}
}
}
sr.Close();
int flag=0;
}
string vuvod=string.Empty;
}

30.

Преимущества
Компактность кода
Лёгкость работы со строкой
Недостатки
Производительность

31. Тест

1.Чем определяется структура блоков кода в Python?
а) фигурными скобками
б) отступами
в) ключевыми словами begin/end
г) точкой с запятой
2.Что произойдёт в Python при неверном количестве отступов?
а) программа выполнится с предупреждением
б) программа сломается / выдаст ошибку
в) отступы игнорируются
г) код автоматически исправится
3.В Python при объявлении переменной:
а) обязательно указывать тип
б) тип указывается только для чисел
в) тип не указывается, и его можно менять
г) тип фиксируется навсегда
4.Как ввести целое число в Python?
а) x = int(input())
б) x = input(int)
в) scanf("%d", &x)
г) cin >> x
5.Какой оператор в Python заменяет else if?
а) else if
б) elseif
в) elif
г) elsif
6.Какой аналог switch есть в Python?
а) switch
б) match
в) select
г) case
7.Как в Python получить последний элемент списка arr?
а) arr[0]
б) arr[-1]
в) arr[last]
г) arr[len(arr)]
8.Что выведет arr[2:5], если arr = [0,1,2,3,4,5,6,7,8,9]?
а) [2, 3, 4]
б) [2, 3, 4, 5]
в) [1, 2, 3]
г) [2, 5]
9.Как в match указать ветку по умолчанию?
а) default:
б) else:
в) case _:
г) case default:
10.Какое преимущество Python указано в презентации?
а) скорость выполнения
б) автоматическое управление памятью
в) минимальное потребление памяти
г) полный контроль над ресурсами
English     Русский Правила