• Мая 14, 2021, 06:45:16 am
• Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Новости: на нашем Telegram канале: https://t.me/progkievua

Автор Тема: Python start 16.03.2021  (Прочитано 801 раз)

Art.

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Python start 16.03.2021
« Ответ #105 : Апреля 14, 2021, 01:27:41 pm »
Напишите функцию, которая вернет сумму всех нечетных элементов списка.
Например, для списка вида [2,1,4,6,3] ваша программа должна вернуть 4.

def func (*list1):
    sum_list1 = 0
    for i in list1:
        if i % 2 > 0:
            sum_list1 = sum_list1 + i
    return sum_list1


a = func (2, 1, 4, 6, 3)
print (a)

Напишите функцию, которая будет рисовать на экране треугольник заданной
высоты. Символ, которым рисуется треугольник, также должен быть параметром
этой функции. Например, если в качестве параметра задать величину высоты
равную 5, а символ равным «#», то результат должен быть такой:
#
##
###
####
#####

def func (h, s):
    for i in range(h):
        for j in range(h):
            if i+j < h-1:
                print("", end="")
            else:
                print(s, end="")
        print()


h = int(input(" Input h: "))
s = input ("Input symbol: ")

func(h, s)

Напишите программу, которая попросит ввести пользователя его имя и возраст.
После проверки возраста на корректность (чтобы не был меньше 0 и больше 500)
выведите имя человека и его возрастную градацию:
0-10 — детский возраст, 10-25 - юный возраст, от 25 до 44 лет - молодой возраст,
44-60 лет - средний возраст, 60-75 лет - пожилой возраст, 75-90 лет - старческий
возраст, а после 90 - долгожитель.

def func (name, age):
    if age > 0 and age < 500:
        if age >= 0 and age < 10:
            return print ("Привет " + " " +  name + "," " у тебя детский возраст")
        elif age >= 10 and age < 25:
            return print ("Привет " + " " +  name + "," " у тебя юный возраст")
        elif age >= 25 and age < 44:
            return print ("Привет " + " " +  name + "," " у тебя молодой возраст")
        elif age >= 44 and age < 60:
            return print ("Привет " + " " +  name + "," " у тебя средний возраст")
        elif age >= 60 and age < 75:
            return print ("Привет " + " " +  name + "," " у тебя пожилой возраст")
        elif age >= 75 and age < 90:
            return print ("Привет " + " " +  name + "," " у тебя старческий возраст")
        elif age >= 90:
            return print ("Привет " + " " +  name + "," " а ты долгожитель!")
    else:
        print ("Привет " + name + ". " "Ты ввел некорректный возраст")


name = input("Введите Ваше имя: ")
age = int(input("Введите Ваш возраст: "))

func (name, age)


Savvabo

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Python start 16.03.2021
« Ответ #106 : Апреля 15, 2021, 04:11:26 pm »
# 1
# Напишите функцию, которая вернет сумму всех нечетных элементов списка. Например,
# для списка вида [2,1,4,6,3] ваша программа должна вернуть 4.
def get_even_sum(given_list):
    even_sum = 0
    for i in given_list:
        if i % 2 != 0:
            even_sum += i
    return even_sum


result = get_even_sum([2, 2])
print(result)



# 2
# Напишите функцию, которая будет рисовать на экране треугольник заданной высоты.
# Символ, которым рисуется треугольник, также должен быть параметром этой функции.
# Если в качестве параметра задать величину высоты равную 5, а символ равным «#», то результат должен быть такой:
#  #
#  ##
#  ###
#  ####
#  #####
def print_stairs(h, s):
    for i in range(1, h + 1):
        row = (s * i + h * ' ')
        print(row)


print_stairs(5, '5')



# 3
# Напишите программу, которая попросит ввести пользователя его имя и возраст. После проверки возраста на корректность
# (чтобы не был меньше 0 и больше 500) выведите имя человека и его возрастную градацию:
# 0-10 — детский возраст, 10-25 - юный возраст, от 25 до 44 лет - молодой возраст, 44-60 лет - средний возраст,
# 60-75 лет - пожилой возраст, 75-90 лет - старческий возраст, а после 90 - долгожитель.
def detect_age_gradation(name, age):
    age_gradation_dict = {tuple(range(11)): 'child', tuple(range(11, 25)): 'young', tuple(range(25, 45)): 'adult',
                          tuple(range(45, 60)): 'medium', tuple(range(60, 75)): 'old',
                          tuple(range(75, 90)): 'very old', tuple(range(90, 500)): 'fuck yeah'}
    if 0 <= age <= 500:
        for k, v in age_gradation_dict.items():
            if age in k:
                print(v, name)
    else:
        print('Incorrect age')


detect_age_gradation('Leva', 99)



# 4
# Существует список [1,2,3,4,5]. Размер списка может быть произвольным, однако заполнен он всегда цифрами от 1 и далее
# по возрастанию с шагом 1. Напишите программу, которая выведет на экран все возможные комбинации,
# которые могут быть получены перестановкой элементов этого списка.
# Внимание! Повторений и пропущенных комбинаций быть не должно.
import itertools
import pprint


def shufle_to_all_combinatios(given_list):
    all_combinations = list(itertools.permutations(given_list))
    print(len(all_combinations))
    return all_combinations


result = shufle_to_all_combinatios([1, 2, 3, 4, 5])
pprint.pprint(result)



# 5
# На вершине горы стоит золотоискатель (смайлик наверху). Цифра в клетке означает количество золотых слитков,
# которые в ней хранятся. Золотоискатель может за один раз или спуститься на одну клетку вниз или
# спуститься на одну клетку вниз и вправо.
# Напишите программу, которая определит максимальное количество золотых слитков,
# которые может найти золотоискатель двигаясь от вершины горы вниз.
# import random
# from pprint import pprint

# mountain = [random.sample(list(range(1, row+1)), row) for row in range(1,10)]
# pprint(mountain)

mountain = [
    [0],
    [0, 0],
    [0, 0, 0],
    [0, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0],
    [0, 0, 9, 0, 0, 0, 0],
    [0, 0, 0, 0, 9, 0, 9, 0],
    [0, 0, 0, 0, 3, 0, 0, 4, 0]]


def get_paths(idx_1, idx_2):
    result = []
    if len(mountain) - 1 != idx_1:
        next_values = [(idx_1 + 1, idx_2), (idx_1 + 1, idx_2 + 1)]
        for next_idx_1, next_idx2 in next_values:
            resp = get_paths(next_idx_1, next_idx2)
            appender = [((idx_1, idx_2),) + i for i in resp]
            result.extend(appender)
    else:
        result = [((idx_1, idx_2),)]
    return result


def get_gold_sum():
    res = get_paths(0, 0)
    a = max(res, key=lambda x: sum([mountain[i[0]][i[1]] for i in x]))
    sum_result = sum([mountain[i[0]][i[1]] for i in a])
    return sum_result


result = get_gold_sum()
print(result)

Savvabo

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Python start 16.03.2021
« Ответ #107 : Апреля 15, 2021, 09:30:51 pm »
# 1
# Ввести с клавиатуры число (до миллиарда), которое обозначает количество долларов и центов пользователя.
# Вывести это количество прописью.
# Например:
# How much money do you have?
# 123,34
# You have: one hundred twenty three dollars thirty four cents
# from num2words import num2words

amount_dict = {1000000000: 'billion',
               1000000: 'million',
               1000: 'thousand',
               100: 'hundred',
               90: 'ninety',
               80: 'eighty',
               70: 'seventy',
               60: 'sixty',
               50: 'fifty',
               40: 'forty',
               30: 'thirty',
               20: 'twenty',
               19: 'nineteen',
               18: 'eighteen',
               17: 'seventeen',
               16: 'sixteen',
               15: 'fifteen',
               14: 'fourteen',
               13: 'thirteen',
               12: 'twelve',
               11: 'eleven',
               10: 'ten',
               9: 'nine',
               8: 'eight',
               7: 'seven',
               6: 'six',
               5: 'five',
               4: 'four',
               3: 'three',
               2: 'two',
               1: 'one'}

repeatable = {1000000000: 'billion',
              1000000: 'million',
              1000: 'thousand',
              100: 'hundred'}


def get_number_string(translated_number):
    string = []
    for k, v in amount_dict.items():
        count = translated_number // k
        if count:
            # if count == 22 or can have lower delimiter in it, like 1222 we need to split it more
            if count not in amount_dict or count in repeatable.keys():
                string_count = get_number_string(count)
            else:
                string_count = amount_dict[count]
            if v in repeatable.values():
                string.append(string_count)
            string.append(v)
            translated_number -= k * count
    return ' '.join(string)


number = '1,5'
raw_dollars = number.split(',')[0]
raw_cents = number.split(',')[1][:2]
if len(raw_cents) == 1:
    raw_cents += '0'
raw_dollars = get_number_string(int(raw_dollars))
raw_cents = get_number_string(int(raw_cents))

print(raw_dollars, 'dollars',
      raw_cents, 'cents')

# 2
# Вовочка сидя на уроке писал подряд одинаковые слова (слово может состоять из одной буквы).
# Когда Марья Ивановна забрала у него тетрадь, там была одна строка текста. Напишите программу,
# которая определит самое короткое слово из написанных Вовочкой. Например:
# aaaaaaa — Вовочка писал слово - «a» ititititit — Вовочка писал слово - «it» catcatcatcat — Вовочка писал слово - «cat»
vovas_str = 'abaaba'
dict_of_repeats = {}
for i in range(1, len(vovas_str)):
    repeat_value = vovas_str[:i]
    count_value = vovas_str.count(repeat_value)
    if repeat_value * count_value == vovas_str:
        dict_of_repeats[repeat_value] = count_value
max_dict_value = max(dict_of_repeats.values())
list_of_max_keys = [k for k, v in dict_of_repeats.items() if v == max_dict_value]
list_of_max_keys.sort(key=len)
vovas_word = list_of_max_keys[-1]
print(vovas_word)

Oleksandr Berdak

  • Пользователи
  • *
  • Сообщений: 11
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #108 : Апреля 16, 2021, 12:13:27 am »
Домашнее задние №11

1) Напишите функцию, которая вернет сумму всех нечетных элементов списка.
    Например, для списка вида [2,1,4,6,3] ваша программа должна вернуть 4.


def hieghts(numbers):
    plus = 0
    for num in numbers:
        if num % 2 != 0:
            plus = plus + num
    print(plus)

numbers = [2,3,4,5]

hieghts(numbers)


2) Напишите функцию, которая будет рисовать на экране треугольник заданной
высоты. Символ, которым рисуется треугольник, также должен быть параметром
этой функции. Например, если в качестве параметра задать величину высоты
равную 5, а символ равным «#», то результат должен быть такой:
#
##
###
####
#####


def fygur(number , simvol = "#"):
    for i in range(number):
        for j in range(number):
            if i+j < number - 1:
                print("", end = '')
            else:
                print(simvol, end = '')
        print()

number = int(input(" Введите высоту конструкции: "))
simvol = input(" Введите символ, которым в желаете заполнить конструкцию: ")


fygur(number , simvol)


3) Напишите программу, которая попросит ввести пользователя его имя и возраст.
После проверки возраста на корректность (чтобы не был меньше 0 и больше 500)
выведите имя человека и его возрастную градацию:
0-10 — детский возраст, 10-25 - юный возраст, от 25 до 44 лет - молодой возраст,
44-60 лет - средний возраст, 60-75 лет - пожилой возраст, 75-90 лет - старческий
возраст, а после 90 - долгожитель.


def idk(age, name):
    if age > 0 and age <= 500:
        if age < 10:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя — детский возраст (: ")
        elif age < 25 and age >= 10:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя — юный возраст (: ")
        elif age < 44 and age >= 25:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя — молодой возраст (: ")
        elif age  < 60 and age >= 44:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя — средний возраст (: ")
        elif age  < 75 and age >= 60:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя —  пожилой возраст (: ")
        elif age  < 90 and age >= 75:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя —  старческий возраст (: ")
        elif age >= 90:
            print(" Здравствуй", name ,", поскольку твой возвраст -", age ,", у тебя —  долгожитель (: ")
    else:
        print( name, ", ты ввёл невернй возвраст ")


age = int(input(" Введи свой возвраст( 0 < возвраст < 500 ): "))
name = str(input(" Введи совё имя: "))

idk(age, name)


Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #109 : Апреля 16, 2021, 01:27:18 am »
ArtemBorodach
Решение верное

Savvabo
Задания продвинутого уровня.
Задание 1. Не верно
Например для последовательности
[0, 5, 10, 15, 20]

Ваша программа аварийно завершится, а это обычная арифметическая прогрессия

Задание 2.
Оно работоспособно.
Ну как и обещал разбор полетов и оптимизаций. И с точки зрения оптимизации как и с точки зрения корректности, тут печаль
1) А с чего вы взяли что максимальный палиндром будет при перемножении чисел в диапазоне [900-999] ведь по условию это могут быть любые трехзначные числа? Вы или математически доказывайте, что это так (а я доказательства не видел) или не пишите подобных «костылей». В большинстве компаний связанных с мат. обработкой с вами бы уже попрощались на этом этапе.
2) Умножение это коммутативная операция, вы же этого не  учитываете от слова совсем. Поэтому вы при таких циклах стремитесь к квадратичной сложности, т. е. Вы сначала проверяете числа в стиле 913*917 и чуть позже 917*913, что одно и тоже, почему бы не начинать второй цикл с i ??
3) Проверка числа на то, что оно палиндром путем преобразования его в строку, реверс строки и сравнение результатов это мягко сказать не оптимальное решение.
4) Вообще не применено никаких оптимизаций с точки зрения арифметики. Например любой шестизначный палиндром должен делиться на 11 без остатка. И если бы сначала проверили делимость на 11, а только потом проверяли что это число палиндром, получили бы солидный прирост производительности.
5) А вот это что за печаль?
def is_palindrome(number):
pal_list = list(str(number))
if pal_list == pal_list[::-1]:
return number

Если это число палиндром вы возвращаете это число, а если нет?? Что возвращает эта функция? Представляете как сложно кому то будет ее использовать???

6) Использовать для хранения ВСЕХ палиндромов отдельный список?? У вас, что слишком много дополнительной памяти на компе? Почему не хранить одно число??
7) И встроенная функция max для поиска максимального значения в этом списке. И это последний гвоздь который можно забить в оптимизацию. Да почему не объявить одно число, и потом обычным if его заменять если оно меньше текущего палиндрома.

Тема Функции часть 2.
Сложный уровень
Задание 2.
Золотоискатель. Подставляю данные с домашнего задания, и ваше решение слетает по исключению. Вы использовали, какие то свои данные. Если выполняете решение то с данными, что даны в задании.
Остальные решения выполнены хорошо.

Art.

Решение верное

Oleksandr Berdak
Решение верное

Sergey_Runchev

  • Пользователи
  • *
  • Сообщений: 26
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #110 : Апреля 16, 2021, 07:07:58 pm »
# Напишите функцию, которая вернет сумму всех нечетных элементов списка.
# Например, для списка вида [2,1,4,6,3] ваша программа должна вернуть 4
def sum_list(*numbers):
    sum_1 = 0
    for n in numbers:
        if n % 2 > 0:
            sum_1 = sum_1 + n
    return sum_1


a = sum_list(2, 1, 4, 6, 3)
print("Список - (2, 1, 4, 6, 3)")
print("Сумма всех нечетных чисел списка = ", a)

Sergey_Runchev

  • Пользователи
  • *
  • Сообщений: 26
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #111 : Апреля 16, 2021, 07:08:43 pm »
Цитировать
# Напишите функцию, которая будет рисовать на экране треугольник заданной
# высоты. Символ, которым рисуется треугольник, также должен быть параметром
# этой функции. Например, если в качестве параметра задать величину высоты
# равную 5, а символ равным «#», то результат должен быть такой:
# #
# ##
# ###
# ####
# #####
def draw_triangular(h, z):
    for i in range(h):
        for j in range(h):
            if i+j < h-1:
                print("", end="")
            else:
                print(z, end="")
        print()


h = int(input("Введите высоту треугольника, целое число: "))
z = str(input("Введите символ, которым будет нарисован треугольник: "))
draw_triangular(h, z)

Sergey_Runchev

  • Пользователи
  • *
  • Сообщений: 26
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #112 : Апреля 16, 2021, 07:09:16 pm »
# Напишите программу, которая попросит ввести пользователя его имя и возраст.
# После проверки возраста на корректность (чтобы не был меньше 0 и больше 500)
# выведите имя человека и его возрастную градацию:
# 0-10 — детский возраст, 10-25 - юный возраст, от 25 до 44 лет - молодой возраст,
# 44-60 лет - средний возраст, 60-75 лет - пожилой возраст, 75-90 лет - старческий
# возраст, а после 90 - долгожитель
def spisok(name, age):  # создаем функцию с переменными name и age
    if 0 < age <= 250:
        if 0 < age < 10:
            return print("Поздравляем Вас", name,". Ваш возраст детский.")
        elif 10 <= age < 25:
            return print("Поздравляем Вас", name,". Ваш возраст юный.")
        elif 25 <= age < 44:
            return print("Поздравляем Вас", name,". У Вас молодой возраст.")
        elif 44 <= age < 60:
            return print("Поздравляем Вас", name,". У Вас средний возраст.")
        elif 60 <= age < 75:
            return print("Поздравляем Вас", name,". У Вас пожилой возраст.")
        elif 75 <= age < 90:
            return print("Поздравляем Вас", name,". У Вас старческий возраст.")
        elif 90 <= age:
            return print("Поздравляем Вас", name,". Вы долгожитель")
    else:   # для главного условия  if 0 < age <= 250:
        print(name,". Возраст не должен превышать больше 250 лет.\nДавайте попробуем еще раз.")
        while age >= 251:
            age = int(input("Сколько Вам полных лет: "))
            return spisok(name, age)    # если возраст ввели правильно, то функция spisok отрабатывает заново


name = str(input("Введите Ваше имя: "))
age = int(input("Сколько Вам полных лет: "))

spisok(name, age)

ArtemBorodach

  • Пользователи
  • *
  • Сообщений: 15
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #113 : Апреля 17, 2021, 10:26:32 am »
нарисовать треугольник

def treug(heigh,fig='*'):
    for i in range(1,h+1):
        heigh=fig*i
        print(heigh)
print("Введите значение высоты треугольника H = " , end='')
h=int(input())
treug(h,'&')


функция подсчета всех не четных чисел спска

def sum_ch(spis,sum_1=0):
    for i in range(len(spis)):
        if spis[i]%2!=0:
            sum_1=sum_1+spis[i]
    return sum_1


a=[2,1,4,6,3,20,7,11,1,2,9,1]
print(sum_ch(a))   



задача на возраст

def age_s(name,dic_t,age):

    for key in dic_t:
        if age in key:
            print (name+' У Вас ',dic_t[key])
            break
    else:
       print(name+' Вы ввели не корректную дату')


a={range(11):"Детский возраст", range(11,25):'Юный возраст',
    range(25,45):'Молодой возраст',range(45,61):'Средний возраст',
    range(61,76):'Пожилой возраст',range(76,91):'Старческий возраст',
    range(91,501):'возраст долгожителей'} 
print('Введите Ваше имя :')
nam=input()
print('Введите ваш возраст')
ag=int(input())

age_s(nam,a,ag)

 




« Последнее редактирование: Апреля 17, 2021, 10:36:56 am от ArtemBorodach »

Art.

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Python start 16.03.2021
« Ответ #114 : Апреля 17, 2021, 02:35:33 pm »
Напишите программу, которая запишет в файл список целых чисел.
a = open ("goods.txt", "w")
b = [x  for x in range (50)]
a.write(str(b))
a.close()

Напишите программу, которая вычитает текст из текстового файла и
выведет на экран, сколько раз в тексте встречается буква «A».

a = open ("goods.txt", "r")

a = a.read()
b = 0
for i in a:
    if i == "А" or i == "A":
        b = b + 1
print (b)

Создайте консольный «текстовый редактор» с возможностью сохранения
набранного текста в файл. (Не переусердствуйте. Имеется в виду, что вы
сначала должны считать несколько строк с клавиатуры, а потом сохранить
считанный текст в файл).

a = input ("Write your text: ")
file_open = open ("goods.txt", "w")

b = input("Save your text in file? (Y/N) ")

if b == "Y" or b == "y":
    file_open.write(a)
    print ("Your text save to file")
    file_open.close()
else:
    print ("close")

Напишите программу, которая найдет самое длинное слово в текстовом
файле.

a = open ("goods.txt", "r")
a = a.read()
a = a.split("\n")

b = 0
c = []

for i in a:
    if (len(i)) > b:
       b = int(len(i))
       c = i
print (c)




Считайте из текстового файла текст на английском языке и выведите
статистику по частоте использования букв в тексте (т. е. буква — количество
использований). Причем первыми должны выводиться буквы
используемые чаще всего.

import collections
file_open = open ("goods.txt", "r")
a = file_open.read()
a = collections.Counter(a)
b = a.pop ("\n")

print (a)

Напишите программу, которая вычитает текст из двух текстовых файлов.
Программа должна найти и записать в файл «result.txt» слова, которые есть
и в первом, и во втором файле одновременно. Например, если в первом
файле записано «Hello world», а во втором «Hello Java», то в
результирующем файле должно быть слово «Hello» так, как только это
слово есть и в первом и втором файле одновременно.

file_open = open ("goods.txt", "r")
file_open1 = open ("goods1.txt", "r")

a = file_open.read()
b = file_open1.read()

a = a.split(" ")
b = b.split(" ")

c = []
for i in a:
    if i in b:
        c = i

result = open ("result.txt", "w")
result.write (c)
result.close()

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #115 : Апреля 19, 2021, 06:14:38 pm »
Sergey_Runchev
Решение верное

ArtemBorodach
Решение верное

Art.
Решение верное

Savvabo

  • Пользователи
  • *
  • Сообщений: 14
    • Просмотр профиля
Re: Python start 16.03.2021
« Ответ #116 : Апреля 23, 2021, 04:26:59 pm »
# 1
# Напишите программу, которая запишет в файл список целых чисел.
import random


def save_to_scv(file_address):
    int_rand_list = [random.randint(1, 10) for i in range(10)]
    print(int_rand_list)
    open_file = open(file_address, "w")
    open_file.write(str(int_rand_list))
    open_file.close()

result = save_to_scv("a.csv")
print(result)



# 2
# Напишите программу, которая вычитает текст из текстового файла и
# выведет на экран, сколько раз в тексте встречается буква «A».
def count_a(file_address):
    file_read = open(file_address).read()
    sum_a = file_read.count('A')
    # sum_a = 0
    # for i in file_read:
    #     if i == 'A':
    #         sum_a += 1
    if sum_a:
        print(sum_a)
    else:
        print('There is no "A" in text')



result = count_a("a.txt")
print(result)



# 3
# Создайте консольный «текстовый редактор» с возможностью сохранения набранного текста в файл.
# (Не переусердствуйте. Имеется в виду, что вы сначала должны считать несколько строк с клавиатуры, а потом сохранить
# считанный текст в файл).
def keyboard_to_file(file_address, input_text):
    save_question = input('Do you want to save the text? (yes/no) : ')
    if save_question == 'yes':
        open_file = open(file_address, "w")
        open_file.write(input_text)
        open_file.close()
    else:
        print("You didn't save the file")

keyboard_to_file('s.txt', input('Enter the text: '))



# 4
# Напишите программу, которая найдет самое длинное слово в текстовом
# файле.
def max_word(file_address):
    file_read = open(file_address).read()
    file_list = file_read.split(' ')
    max_file_word = max(file_list, key=len)
    return max_file_word


result = max_word('s.txt')
print(result)



# 5
# Считайте из текстового файла текст на английском языке и выведите статистику по частоте использования букв в тексте
# (т. е. буква — количество использований). Причем первыми должны выводиться буквы используемые чаще всего.
def letters_count(file_address):
    file_read = open(file_address).read()
    letters_dict = {}
    for i in file_read:
        if i in letters_dict:
            letters_dict[i] += 1
        else:
            letters_dict[i] = 1
    sorted_dict = dict(sorted(letters_dict.items(), key=lambda v: v[1], reverse=True))
    return sorted_dict


result = letters_count('s.txt')
print(result)



# 6
# Напишите программу, которая вычитает текст из двух текстовых файлов. Программа должна найти
# и записать в файл «result.txt» слова, которые есть и в первом, и во втором файле одновременно.
# Например, если в первом файле записано «Hello world», а во втором «Hello Java»,
# то в результирующем файле должно быть слово «Hello» так,
# как только это слово есть и в первом и втором файле одновременно.
def find_matches(first_file, second_file, match_file):
    first_read = open(first_file).read()
    second_read = open(second_file).read()
    first_list = first_read.split(' ')
    second_list = second_read.split(' ')
    match_list = []
    for i in first_list:
        for j in second_list:
            if i == j:
                match_list.append(i)
    open_file = open(match_file, "w")
    open_file.write(str(match_list))
    open_file.close()
    return match_list


result = find_matches('s.txt', 'a.txt', 'result.txt')
print(result)

Alexander Ts

  • Преподаватели
  • Пользователи
  • *
  • Сообщений: 14797
    • Просмотр профиля
    • E-mail
Re: Python start 16.03.2021
« Ответ #117 : Апреля 23, 2021, 08:51:01 pm »
Savvabo

Решение конечно верно. Но где декомпозиция задания с помощью функций?? Ну в последнем задании и вычитка и поиск совпадения и запись все в одной функции?? Это должны быть ТРИ разных функции.