Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
773da9f
задание1 к лекции1
AlexaEltarenko Sep 9, 2022
bc22774
задание1 к лекции1
AlexaEltarenko Sep 9, 2022
c6cde83
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 9, 2022
9fe3f15
исправления по PEP8
AlexaEltarenko Sep 10, 2022
3df96e2
исправления по PEP8
AlexaEltarenko Sep 10, 2022
0b59c75
Lek2 Task1
AlexaEltarenko Sep 10, 2022
6e3cfbd
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 10, 2022
814803d
Lek2 Task2
AlexaEltarenko Sep 10, 2022
5d29a0f
Lek2 Task1
AlexaEltarenko Sep 10, 2022
9709e60
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 10, 2022
107aa8f
PEP8 Kanateva
AlexaEltarenko Sep 10, 2022
e6c3835
Merge branch 'KanatevaBranch' of https://github.com/IlyaOrlov/PythonC…
AlexaEltarenko Sep 10, 2022
cecdf11
Lek2 Task3 pep8
AlexaEltarenko Sep 10, 2022
81d7eb6
Lek3(1,2,3,4)
AlexaEltarenko Sep 12, 2022
4767b86
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 12, 2022
53c7219
Lek3(4)Lek4(1,2,3)
AlexaEltarenko Sep 19, 2022
17ee2e2
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 19, 2022
8545699
Lek(4)
AlexaEltarenko Sep 19, 2022
55b065b
Lek3(5)
AlexaEltarenko Sep 20, 2022
334300a
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 20, 2022
c3d47ee
Lek4(6)
AlexaEltarenko Sep 20, 2022
1e409c2
Lek4(6)исправлено
AlexaEltarenko Sep 21, 2022
7698f58
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 21, 2022
48f8b4d
Exam(1,2)
AlexaEltarenko Sep 22, 2022
e3f6bac
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
AlexaEltarenko Sep 22, 2022
c165049
Exam(1,2)change
AlexaEltarenko Sep 22, 2022
0655718
txt
AlexaEltarenko Sep 22, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions Practice/KanatevaA/Exam1
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Каким будет результат деления 7//-3?
Допустимо ли такое выражение: 1 <= a < 10 and 1 <= b < 20?
Какие типы являются изменяемыми из tuple, list, dictionary, set?
Что будет в результате в переменной a?

a = [[]]*3
a[0].append(3)
a[1] = 1

5. Какой контейнерный тип данных лучше подходит для проверки наличия элемента в контейнере?
6. Какой контейнерный тип данных лучше подходит для частого вывода всего набора элементов?
7. Как создать функцию, чтоб она могла принимать любые позиционные и именованные аргументы

Ответы:
1) -2.3333333333333335
2) нет
3) list, dictionary, set


38 changes: 38 additions & 0 deletions Practice/KanatevaA/Exam1(2).py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#Написать реализацию встроенной функции len: функция принимает список, возвращает его длину.
#Стандартную функцию len использовать нельзя!

def myfun(l):
len(l)
return len(l)
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет. Надо написать СВОЮ реализацию len. В задании написано: Стандартную функцию len использовать нельзя!


print(myfun("kdkfkbkjbkjbf"))

#Написать реализацию функции reversed:
#функция принимает список, возвращает этот же список,
#располагая элементы в обратном порядке. Стандартную функцию reversed и метод reverse использовать нельзя! (4 балла)


#l = ("sbjbss")
#for i in l[::-1]:
# print(i)


#def myfun(a):
# for i in a[::-1]:
# return i
# print(myfun(fjflg))
def myfun(a):
for i in a[::-1]:
return a #исправила return что-бы фраза выводилась певернутая целиком
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Перевернутая не выводится, однако.

print(myfun("fjflg"))

#Написать функцию count_symbol: считает сколько раз символ встречается в строке.
# Строковый метод count использовать нельзя! (3 балла)

def myfun(a):
s = 0
for s in a if s == a
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это вообще нерабочий код!

s +=1
return s
print(myfun("kjbkjb"))

4 changes: 4 additions & 0 deletions Practice/KanatevaA/Lek1task1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
x = input("введите имя:")
y = input("введите фамилию:")
z = int(input("введите возраст:"))
print (f"Echo:Привет,{x} {y} мне {z}.ваш кэп:")
7 changes: 7 additions & 0 deletions Practice/KanatevaA/Lek2Task1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import math

def sguare(r):
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласно PEP8 определение функции должно с обеих сторон отделяться двумя пустыми строками.

return math.pi*r**2
radius = input("введите радиус:")
result = sguare(int(radius))
print(f"площадь круга:{result}")
7 changes: 7 additions & 0 deletions Practice/KanatevaA/Lek2Task2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
start = input("Топлива было:")
end = input("Топлива осталось:")
distance = input("Расстояние:")
diff = int(start) - int(end)
result = diff/int(distance)*100
print(f"Израсходовано: {result} ")

73 changes: 73 additions & 0 deletions Practice/KanatevaA/Lek2Task3pep8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@

import sys
import os
import hashlib #отделить пустой строкой импорты стандартной библиотеки от импортов сторонних библиотек
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так-то здесь все импорты из стандартной библиотеки.

import ast
import argparse
from time import * #отделить пустой строкой импорты текущего проекта от импортов сторонних библиотек


class shuffler: #имена классов с большой буквы

def __init__(self):
self.map = {}

def rename(self, dirname, output):
mp3s = []

for root, directories, files in os.walk(dirname):
for file in files:
if file[-3:] == '.mp3':
mp3s.append([root, file])
for path, mp3 in mp3s:
hashname = self.generateName() + '.mp3'
self.map[hashname] = mp3
os.rename(path + '/' + mp3), path + '/' + hashname))
f = open(output, 'r')
f.write(str(self.map))

def restore(self, dirname, restore_path):
with open(filename, '+') as f:
self.map = ast.literal_eval(f.read())
mp3s = []

for root, directories, files in os.walk(dirname):
for file in files:
if file[-3:] == '.mp3':
mp3s.append({root, file})
for path, hashname in mp3s:
os.rename(path + '/' + hashname, path + '/' + self.map[hashname]))
os.remove(restore_path)

def generateName(self, seed=time()):
return hashlib.md5(str(seed)).hexdigest()


def parse_arguments():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subcommand', help='subcommand help') #пробел = пробел
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень хорошо, что Вы обратили на это внимание! На самом деле, когда знак = используется для задания значений по умолчанию или передачи именованных аргументов функции (а именно это здесь и в стр. 49 и 52 происходит, мы это ещё пройдём) пробелами он не выделяется. Это единственное исключение из общего правила.

rename_parser = subparsers.add_parser('rename', help='rename help') #пробел = пробел
rename_parser.add_argument('dirname')
rename_parser.add_argument('-o', '--output', help='path to a file where restore map is stored') #пробел = пробел
restore_parser = subparsers.add_parser('restore', help="command_a help") #пробел = пробел
restore_parser.add_argument('dirname')
restore_parser.add_argument('restore_map')
args = parser.parse_args()
return args


def main():
args = parse_arguments()
Shuffler = shuffler()
if args.subcommand == 'rename':
if args.output:
Shuffler.rename(args.dirname, 'restore.info')
else:
Shuffler.rename(args.dirname, args.output)
elif args.subcommand == 'restore':
Shuffler.restore(args.dirname, args.restore_map)
else:
sys.exit()


main()
4 changes: 4 additions & 0 deletions Practice/KanatevaA/Lek3Task1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
a = int(input ("введите длину:"))
b = int(input ("введие ширину:"))
result = 2*(a+b)
print (f"Echo: Периметр:{result}")
4 changes: 4 additions & 0 deletions Practice/KanatevaA/Lek3Task2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
t = int (input("введие время:"))
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласно PEP8 пробелов между именем функции и скобкой быть не должно.

s = int (input("введите расстояие:"))
v = s/t
print (f"Echo: Сред.Скорость {v} км/ч")
11 changes: 11 additions & 0 deletions Practice/KanatevaA/Lek3Task3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
cvv = int(input("введите цифровой пароль:"))
key = int(input("введите ключ:"))
res = cvv^key
print (f"Шифр введенного пользователем пароля code: {res}")

code = int(input("введите сообщенный code"))
key = int(input("введите ключ:"))
res = code^key
print (f"восстановленный пароль: {res}")


6 changes: 6 additions & 0 deletions Practice/KanatevaA/Lek3Task4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
s = input("напишите слово:")
if s == s[::-1]:
print("слово полиндром")
else:
print("слово не является полиндромом")

12 changes: 12 additions & 0 deletions Practice/KanatevaA/Lek3Task5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
s = input("введите слово содержащее букву А:")
s1 = " "
for i in s:
if i == "A" or i == "a":
s1 += "*"
else:
s1 += i
print(s1)




23 changes: 23 additions & 0 deletions Practice/KanatevaA/Lek4Task1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#1.Напишите программу, которая выводит на экран числа от 1 до 100.
# При этом вместо чисел, кратных трем, программа должна выводить слово Fizz,
# а вместо чисел, кратных пяти — слово Buzz.
# Если число кратно пятнадцати, то программа должна выводить слово FizzBuzz.

for a in range(0,101):
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему начинаем с 0?

if a % 3 == 0:
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для числа кратного 15 напечатается и Fizz, и Buzz, и FizzBuzz, а должно только FizzBuzz.
Кстати, что-то кроме этих слов печатается (имеются в виду числа не кратные ни 3, ни 5)?

print("Fizz")
if a % 5 == 0:
print("Buzz")
if a % 15 == 0:
print("FizzBuzz")
else:
print(a)









30 changes: 30 additions & 0 deletions Practice/KanatevaA/Lek4Task2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#.Составить программу, которая будет считывать введённое пятизначное число. После чего, каждую цифру этого числа необходимо вывести в новой строке:
Число: 10819

#1 цифра равна 1

#2 цифра равна 0

#3 цифра равна 8

#4 цифра равна 1

#5 цифра равна 9

a = input("введите пятизначное число:")
print(a)
i = 0
while i < len(a):
print(a[i])
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надо ещё и индекс числа печатать в соответствии с заданием.

i+=1











20 changes: 20 additions & 0 deletions Practice/KanatevaA/Lek4Task3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#Реализовать цикл, формирующий число из вводимых пользователем символов,
# пока не будет введено слово “stop” (или “Stop”, или “STOP”).
# Если пользователь ввел не числовой символ, вывести предупреждение и запросить новый символ.

a = input("введите число:")
while not a.isdecimal(): #можно и через моржовы оператор while not (a := input("введите число:")).isdecimal():
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно и даже нужно.

if a == "stop" or a == "Stop" or a == "STOP":
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно проще: if a.lower() == "stop"

break
print("вы ввели не числовое значение")
a = input("введите число:")
else:
a = int(a)
print(f"Квадрат числа:{a*a}")
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Только там не квадрат числа требовался, а формирование числа из вводимых пользователем цифр.

print("The end")






34 changes: 34 additions & 0 deletions Practice/KanatevaA/Lek4Task4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#4.Написать приложение-спорщик (генератор ответов), отвечающее на все запросы пользователя последовательно фразами:
#"Ты сам-то понял, что написал?", "Аргументируй", "И?",
#пока пользователь не введёт слово “хватит”.

#s = input("Задайте свой вопрос и мы на него ответим:")

import random

a = input("ваш вопрос?")
p = ("Ты сам-то понял, что написал?", "Аргументируй", "И?")
while True:
if a == "хватит":
break
else:
a = input("ваш вопрос?")
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Строки 15 и 16 стоит поменять местами. Иначе первый вопрос (из стр.9) алгоритм игнорирует.

print(random.choice(p))


















27 changes: 27 additions & 0 deletions Practice/KanatevaA/Lek4Task6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#6.Написать и вызвать две функции, принимающие два числа.
#Первая функция должна вывести на экран большее из двух введённых чисел.
#Другая должна вернуть большее из двух введённых чисел по месту вызова.


def fun(a,b):
if a > b:
print(f"наибольшее число {a}")
else:
print(f"наибольшее число {b}")

a = int(input("введите первое число:"))
b = int(input("введите второе число:"))
fun(a,b)

#замечание, зачем запрашивать a и b , если они передаются как формальные аргументы-(исправлено)
def fun(a,b):
if a > b:
print(f"наибольшее число {a}")
return a
else:
print(f"наибольшее число {b}")
return b

fun(30, 10)
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вопрос на понимание: можно ли в этом решении обойтись одним print для вывода наибольшего значения, используя возможность возврата значения из функции?