func_kwargs.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # Распаковка словаря с ключами и значениями
  2. def func_1():
  3. d1 = {'key1': 1, 'key2': 2}
  4. d2 = {'key2': 1, 'key3': 2}
  5. d3 = {'a1': 1, **d2, **d1}
  6. print(d3)
  7. def concatenate(**kwargs):
  8. ret = ""
  9. for x in kwargs.values():
  10. if (type(x) == list):
  11. ret += ''.join(str(x))
  12. else:
  13. ret += str(x)
  14. return ret
  15. def create_actor(**kwargs):
  16. base_dict = {'name': 'Райан', 'surname': 'Рейнольдс', 'age': 47}
  17. for key, value in kwargs.items():
  18. base_dict[key] = value
  19. return base_dict
  20. def info_kwargs(**kwargs):
  21. for key in sorted(kwargs):
  22. print(f'{key} = {kwargs[key]}')
  23. def test_args(a, b, *args):
  24. print(a, b, args)
  25. def print_scores(name, *args):
  26. print("Student name:", name)
  27. my_list = list(args)
  28. my_list.sort()
  29. for i in my_list:
  30. print(i)
  31. def truncate_sentences(n, *args):
  32. print(n)
  33. for st in args:
  34. print(st[:n])
  35. def make_strings_big(*args, reverse=False):
  36. for st in args:
  37. print(st.lower()) if reverse else print(st.upper())
  38. def item_sum(*args, **kwargs):
  39. current_sum = 0
  40. for arg in args:
  41. current_sum += arg
  42. for kwarg in kwargs.values():
  43. current_sum += kwarg
  44. return current_sum
  45. def calculate_high_low_avg(*args, log_to_console=False):
  46. average = (max(args) + min(args))/2
  47. if log_to_console:
  48. print(f'high={max(args)}, low={min(args)}, avg={average}')
  49. return average
  50. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  51. tables = {
  52. 1: {'name': 'Andrey', 'is_vip': True, 'order': {}},
  53. 2: None,
  54. 3: None,
  55. 4: None,
  56. 5: {'name': 'Vasiliy', 'is_vip': False, 'order': {}},
  57. }
  58. def is_table_free(table_number: int):
  59. return tables[table_number] is None
  60. def get_free_tables():
  61. return [x[0] for x in tables.items() if x[1] is None]
  62. def reserve_table(table_number: int, name: str, status=False):
  63. if is_table_free(table_number):
  64. tables[table_number] = {'name': name, 'is_vip': status, 'order': {}}
  65. def delete_reservation(table_number):
  66. tables[table_number] = None
  67. def make_order(table, **kwargs):
  68. menu = ["salad", "soup", "main_dish", "drink", "desert"]
  69. for key, value in kwargs.items():
  70. if key in menu:
  71. if key not in tables[table]['order'].keys():
  72. tables[table]['order'][key] = value.split(',')
  73. else:
  74. tables[table]['order'][key].extend(value.split(','))
  75. def delete_order(*, number_table, delete_all=False, **kwargs):
  76. if delete_all:
  77. tables[number_table]['order'] = {}
  78. else:
  79. for key, value in kwargs.items():
  80. if value:
  81. tables[number_table]['order'].pop(key, None)
  82. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  83. def main():
  84. # func_1()
  85. # print(concatenate(q='iHave', w="next", e="Coins", r=[10, 5, 10, 7]))
  86. # print(concatenate(q='iHave', w="next", e="Coins"))
  87. # print(create_actor())
  88. # print(create_actor(height=190, movies=['Дедпул', 'Главный герой']))
  89. # info_kwargs(c=43, b=32, a=32)
  90. # test_args(a=10, 1, 2, 3)
  91. # print_scores("Jud", 100, 95, 88, 92, 99)
  92. # my_list =[5, 19, 23, 88]
  93. # my_dict = {'a': 11, 'b': 23}
  94. # print(item_sum(*my_list, **my_dict))
  95. # calculate_high_low_avg(*my_list, log_to_console=True)
  96. make_order(1, soup='Borsh')
  97. make_order(1, soup='Лапша')
  98. make_order(1, soup='Borsh,Лапша', desert='Медовик', drink='Cola')
  99. for key, value in tables.items():
  100. print(key, value)
  101. '''
  102. try:
  103. delete_order(number_table=1, delete_all=True)
  104. except TypeError:
  105. print('Вызов delete_order без передачи значения по ключу не должен проходить')
  106. else:
  107. raise ValueError('Проверьте типы параметров функции delete_order')
  108. '''
  109. # st = 'absd'
  110. # lst = st.split(',')
  111. # print(lst)
  112. if __name__ == '__main__':
  113. main()