🐍 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python: 5 Π·Π°Π΄Π°Ρ‡ для Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ *args, **kwargs ΠΈ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ПишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ *args ΠΈ **kwargs, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя словарями, примСняСм Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅ΠΌΠΎΠΈΠ·Π°Ρ†ΠΈΡŽ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎ ΠΊΡƒΠ±ΠΈΠΊΠΈ.
🐍 Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python: 5 Π·Π°Π΄Π°Ρ‡ для Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ *args, **kwargs ΠΈ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠŸΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Ρ‹Π·ΠΎΠ² #1:

        printGroceries('Π‘Π°Π½Π°Π½Ρ‹', [1, 2], ('Python',), 'Π―Π±Π»ΠΎΠΊΠΈ', '', 'ΠœΠ°ΠΊΠ°Ρ€ΠΎΠ½Ρ‹', 5, True, 'ΠšΠΎΡ„Π΅', False)
    

Π’Ρ‹Π²ΠΎΠ΄ #1:

        1) Π‘Π°Π½Π°Π½Ρ‹
2) Π―Π±Π»ΠΎΠΊΠΈ
3) ΠœΠ°ΠΊΠ°Ρ€ΠΎΠ½Ρ‹
4) ΠšΠΎΡ„Π΅

    

Π’Ρ‹Π·ΠΎΠ² #2:

        printGroceries([4], {}, 1, 2, {'Mathlab'}, '')
    

Π’Ρ‹Π²ΠΎΠ΄ #2:

        НСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²
    

РСшСниС

Бпособ 1:

        def printGroceries(*args):
	products = [i for i in args if type(i) is str and i != '']
	if len(products) != 0:
    	res = [str(i+1)+')' + ' ' + products[i] for i in range(len(products))]
    	result = '\n'.join(res)
    	print(result)
	else:
    	print('НСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²')
    

Бпособ 2:

        def printGroceries(*args):
	list_products = [i for i in args if type(i) == str and len(i) > 0]
	if len(list_products) == 0:
    	print("НСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²")
	else:
    	for i in range(len(list_products)):
        	print(f'{i+1}) {list_products[i]}')
    

Бпособ 3:

        def printGroceries(*args):
	ls = [i for i in args if type(i) == str and i not in ('', ' ')]
	print('\n'.join([f'{num}) {i}' for num, i in enumerate(ls, 1)]) if ls else 'НСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ²')

    
Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠ°Π½Π°Π»Ρƒ

Π›ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Ρ‹Π·ΠΎΠ² #1:

        personalData(first_name='John', last_name='Doe', age=28, position='Python developer')
    

Π’Ρ‹Π²ΠΎΠ΄ #1:

        age: 28
first_name: John
last_name: Doe
position: Python developer

    

Π’Ρ‹Π·ΠΎΠ² #2:

        personalData(first_name='Jack', last_name='Smith', age=32, work_experience = '5 years', position='Project manager')
    

Π’Ρ‹Π²ΠΎΠ΄ #2:

        age: 32
first_name: Jack
last_name: Smith
position: Project manager
work_experience: 5 years
    

РСшСниС

Бпособ 1:

        def personalData(**kwargs):
	for k, v in sorted(kwargs.items()):
    	print(f'{k}: {v}')
    

Бпособ 2:

        def personalData(**kwargs):
	[print(f'{key}: {kwargs[key]}') for key in sorted(kwargs.keys())]

    

Бпособ 3:

        def personalData(**kwargs):
	print('\n'.join(f'{k}: {v}' for k, v in sorted(kwargs.items())))

    

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½Π°

ΠœΠ½ΠΎΠ³ΠΎΡ‡Π»Π΅Π½ΠΎΠΌ стСпСни n называСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ evaluate(coefficients, x), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ список коэффициСнтов ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° x. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ lambda-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ map() ΠΈ reduce().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Π²ΠΎΠ΄:

        2 4 3
10
    

Π’Ρ‹Π²ΠΎΠ΄:

        243
    

РСшСниС

Бпособ 1:

        from functools import reduce
import operator
def evaluate(a, x):
	xi = map(lambda i: x**i, range(len(a)-1, -1, -1))
	axi = map(operator.mul, a, xi)         	
	return reduce(operator.add, axi, 0)
a = list(map(int, input().split()))
x = int(input())
print(evaluate(a, x))

    

Бпособ 2:

        from functools import reduce
evaluate = lambda coefficients, x: reduce(lambda s, a: s * x + a, coefficients, 0)
print(evaluate([*map(int, input().split())], int(input())))

    

Бпособ 3:

        (lambda a, x: print(sum(map(lambda i: x**i[0] * int(i[1]), enumerate(a)))))(input().split()[::-1], int(input()))
    

Бпособ 4:

        def evaluate(coefficients, x):
	s = 0
	for a in coefficients:
    	s = s * x + a
	return s
c = [*map(int, input().split())]
x = int(input())
print(evaluate(c, x))

    

Бпособ 5:

        from functools import reduce
def evaluate(coe, x):
	return reduce(lambda n, z: n + z[1] * x**(len(coe) - z[0]), list(enumerate(coe[:-1], 1)), 0) + coe[-1]
print(evaluate(list(map(int, input().split())), int(input())))

    

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ словарСй

  • added, Ссли ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ Π±Ρ‹Π»ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ словарС, Π½ΠΎ ΠΎΠ½ появился Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ;
  • deleted, Ссли ΠΊΠ»ΡŽΡ‡ Π±Ρ‹Π» Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ словарС, Π½ΠΎ Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ;
  • changed, Ссли ΠΊΠ»ΡŽΡ‡ присутствуСт Π² ΠΎΠ±ΠΎΠΈΡ… словарях, Π½ΠΎ значСния Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ;
  • equal, Ссли ΠΊΠ»ΡŽΡ‡ присутствуСт Π² ΠΎΠ±ΠΎΠΈΡ… словарях, ΠΈ значСния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ значСния словарСй прСдставлСны ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² строковом Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ»ΡŽΡ‡ΠΈ Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ словарС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС: сначала всС ΠΊΠ»ΡŽΡ‡ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ словаря, Π·Π°Ρ‚Π΅ΠΌ β€” Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ.

РСшСниС

Бпособ 1:

        def keyDifference(dict1, dict2):
	d1, d2 = set(dict1), set(dict2)
	sample = list(dict1.keys()) + list(dict2.keys())
	return dict(sorted([(i, 'deleted') for i in d1 - d2] +
            	[(i, 'equal') if dict1[i] == dict2[i] else (i, 'changed') for i in d1 & d2] +
            	[(i, 'added') for i in d2 - d1], key=lambda x: sample.index(x[0])))
    

Бпособ 2:

        def keyDifference(dict1, dict2):
  d = {}
  for i in dict1:
  	if i in dict2:
    	d[i] = ('changed','equal')[dict2[i]==dict1[i]]
  	else:
    	d[i] = dict2.get(i,'deleted')
  for i in dict2:
	if i not in d:
  	d[i] = 'added'
  return d
    

Бпособ 3:

        def keyDifference(d_1, d_2):
	out = {}
	tmp = d_1 | d_2
	for key, value in tmp.items():
    	out[key] = ('added' if d_1.get(key) is None else ('deleted' if d_2.get(key) is None else ('equal' if (d_1.get(key) == d_2.get(key)) else 'changed')))
	return out
    

ЛСсСнка

ЛСсСнкой называСтся Π½Π°Π±ΠΎΡ€ ΠΊΡƒΠ±ΠΈΠΊΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ слой содСрТит мСньшС ΠΊΡƒΠ±ΠΈΠΊΠΎΠ², Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΡƒΡŽ число лСсСнок, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ· n ΠΊΡƒΠ±ΠΈΠΊΠΎΠ².

ЛСсСнка ΠΈΠ· ΠΊΡƒΠ±ΠΈΠΊΠΎΠ²
ЛСсСнка ΠΈΠ· ΠΊΡƒΠ±ΠΈΠΊΠΎΠ²

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Π²ΠΎΠ΄Π°

ΠΠ°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число n (1 ≀ n ≀ 100) – количСство ΠΊΡƒΠ±ΠΈΠΊΠΎΠ² Π² лСсСнкС.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π²ΠΎΠ΄Π°

Число лСсСнок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ· n ΠΊΡƒΠ±ΠΈΠΊΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π°

Π’Π²ΠΎΠ΄ #1:

        3
    

Π’Ρ‹Π²ΠΎΠ΄ #1:

        2
    

Π’Π²ΠΎΠ΄ #2:

        6
    

Π’Ρ‹Π²ΠΎΠ΄ #2:

        4
    

РСшСниС

        import functools
@functools.lru_cache(maxsize=None)
def kol_les(n, k):
	if n == 0:
    	return 1
	ans = 0
 	
	for i in range(k + 1, n + 1):
    	ans += kol_les(n - i,  i)
	return ans
n = int(input())
print(kol_les(n, 0))

    
***

ΠœΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅




ΠœΠ•Π ΠžΠŸΠ Π˜Π―Π’Π˜Π―

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΠšΠΠΠ‘Π˜Π˜

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ вакансию
Java Team Lead
Москва, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ собСсСдования
Senior Java Developer
Москва, ΠΏΠΎ ΠΈΡ‚ΠΎΠ³Π°ΠΌ собСсСдования

Π›Π£Π§Π¨Π˜Π• БВАВЬИ ПО Π’Π•ΠœΠ•