Уведомления

Группа в Telegram: @pythonsu

#1 Май 19, 2022 15:34:38

Tata666
Зарегистрирован: 2022-05-19
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помощь новенькому

Привет программистам. Помогите решить базовые задачи по Python а то в голову вообще не идет.
1. Опишите как могла бы работать функция superset() используя только if else и операции над множествами.
Например: даны два множества set_1 = {1,2,3,4} set_2 = {2,3,4,5} - является ли set_1 суперменом для set_2? Использовать встроенную функцию issuperset нельзя!

2. Сформируйте два словаря из случайных букв в качестве ключа и случайных чисел в качестве значений.
dict_1 = {'a': 1, ‘b’: 2, ‘c’: 3, ….}
dict_2 = {'z': 1, ‘x’: 9, ‘c’: 6, ….}
Сформируйте новый словарь из двух существующих:
Если в исходных словарях есть повторяющиеся ключи, выбираем среди их значений максимальное и присваиваем этому ключу (например, в словаре_1 есть ключ “а” со значением 5, и в словаре_2 есть ключ “а”, но со значением 9. Выбираем максимальное значение, т. е. 9, и присваиваем ключу “а” в уже новом словаре).
Если ключ не повторяется, то он просто переносится со своим значением в новый словарь (например, ключ “с” встретился только у одного словаря, а у других его нет. Следовательно, переносим в новый словарь этот ключ вместе с его значением). Сформированный словарь возвращаем.

3. Дано положительное целое число. Вам необходимо подсчитать произведение всех цифр в этом числе, за исключением нулей.
Для примера: Дано число 123405. Результат будет: 1*2*3*4*5=120 (не забудьте исключить нули).
Пример:
checkio(123405) == 120
checkio(999) == 729
checkio(1000) == 1
checkio(1111) == 1

Спасибо за помощь!

Офлайн

#2 Май 19, 2022 21:09:20

Palrom
Зарегистрирован: 2022-04-21
Сообщения: 82
Репутация: +  5  -
Профиль   Отправить e-mail  

Помощь новенькому

1:

  
def superset(set_a, set_b):
    if set_a >= set_b:
        return True
    else:
        return False
 
set_1 = {1, 2, 3, 4}
set_2 = {2, 3, 4, 5}
 
print(superset(set_1, set_2))
print(set_1.issuperset(set_2)) # Вывод просто для сверки.


Не эксперт, но 2-е мне видится так:
  
import random
import string
 
def gen_rand_dict():
    dictionary = dict()
    while len(dictionary) < 10:
        rand_letter = random.choice(string.ascii_letters.lower())
        rand_number = random.randint(0, 9)
        dictionary.update({rand_letter: rand_number})
    return dictionary
 
def gen_new_dict(d_1, d_2):
    new_dict = d_1.copy()
    for key, value in d_1.items():
        for k, v in d_2.items():
            if k not in new_dict.keys() \
                    or (k == key and v > value):
                new_dict.update({k: v})
    return new_dict
 
dict_1 = gen_rand_dict()
dict_2 = gen_rand_dict()
dict_3 = gen_new_dict(dict_1, dict_2)
 
print(dict_1, dict_2, dict_3, sep='\n')
Код громоздкий, и я почти уверен что всё это можно оптимизировать до пары строк, но т. к. вам для учёбы, а значит для наглядности, то собсно вот.

3:
  
w = 123405
x = 999
y = 1000
z = 1111
 
def checkio(integer):
    n = 1
    for i in str(integer):
        t = int(i)
        if t > 0:
            n *= t
    return print(n)
 
checkio(w)
checkio(x)
checkio(y)
checkio(z) 

Отредактировано Palrom (Май 19, 2022 23:28:45)

Офлайн

#3 Май 20, 2022 00:18:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Помощь новенькому

Tata666
1. Опишите как могла бы работать функция superset() используя только if else и операции над множествами.
Например: даны два множества set_1 = {1,2,3,4} set_2 = {2,3,4,5} - является ли set_1 суперменом для set_2? Использовать встроенную функцию issuperset нельзя!
  
>>> set_1 = {1, 2, 3, 4}
>>> set_2 = {2, 3, 4, 5}
>>> 
>>> print(set_2 - set_1 == set())
False
>>> 
>>> set_1 = {1, 2, 3, 4, 5}
>>> set_2 = {2, 3, 4, 5}
>>> 
>>> print(set_2 - set_1 == set())
True
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version