def sum_symbols(): summa = 0 while True: words = input_value('Input numbers or ! to exit: ', '^.+$', str) current_number = '' for symbol in words: if ord(symbol) >= 48 and ord(symbol) <= 57: current_number = current_number + symbol if ord(symbol) == 32 or ord(symbol) == 33: summa = summa + int(current_number) print('Sub sum = ', summa) current_number = '' if ord(symbol) == 33: return summa
"eд": "шт." }), (2, { "название": "принтер", "цена": 6000, "количество": 2, "eд": "шт." }), (3, { "название": "сканер", "цена": 2000, "количество": 7, "eд": "шт." })] articul = 999 while True: articul = input_value('Input articul or 0 to stop: ', '^[0-9]+$', int) if articul == 0: break name = input_value('Input name: ', '^.+$', str) price = input_value('Input price: ', '^[0-9]+$', int) num = input_value('Input num: ', '^[0-9]+$', int) unit = input_value('Input unit: ', '^.+$', str) item = (articul, { "название": name, "цена": price, "количество": num, "eд": unit }) db.append(item)
task = ''' Реализовать функцию int_func(), принимающую слово из маленьких латинских букв и возвращающую его же, но с прописной первой буквой. Например, print(int_func(‘text’)) -> Text. Продолжить работу над заданием. В программу должна попадать строка из слов, разделенных пробелом. Каждое слово состоит из латинских букв в нижнем регистре. Сделать вывод исходной строки, но каждое слово должно начинаться с заглавной буквы. Необходимо использовать написанную ранее функцию int_func(). ''' def int_func(word): return (chr(ord(word[0:1]) - 32) if ord(word[0:1]) >= 97 and ord(word[0:1]) <= 122 else word[0:1]) + word[1:] if __name__ == '__main__': print(task) print('abc', '=>', int_func('abc')) print('Abc', '=>', int_func('Abc')) print('klm', '=>', int_func('klm')) print('Klm', '=>', int_func('Klm')) print('zyx', '=>', int_func('zyx')) print('Zyx', '=>', int_func('Zyx')) words = input_value('Input [a-z ]+: ', '^[a-z ]+$', str) print(' '.join([int_func(word) for word in words.split()]))
from common import input_value, readfile task = ''' Создать программно файл в текстовом формате, записать в него построчно данные, вводимые пользователем. Об окончании ввода данных свидетельствует пустая строка. ''' if __name__ == '__main__': print(task) with open('01.file.txt', 'w') as file: while True: string = input_value('Type a string: ', '^.*$', str) if string == '': break file.write(string + '\n') print('================') print(readfile('01.file.txt'))
пользователю ввести текст (не число) и отобразить соответствующее сообщение. При этом работа скрипта не должна завершаться. ''' class NonIntListError(Exception): def __str__(self): return 'NonIntListError: please add only numbers value!' class ExtraList(list): def append(self, value): if not re.search('^[0-9]+$', value): raise NonIntListError super().append(value) if __name__ == '__main__': print(task) values = ExtraList() while True: try: value = input_value('Input value: ', '^.*$', str) if value == 'stop': print(values) break values.append(value) except NonIntListError as e: print(e)
from common import input_value task = ''' Реализовать структуру «Рейтинг», представляющую собой не возрастающий набор натуральных чисел. У пользователя необходимо запрашивать новый элемент рейтинга. Если в рейтинге существуют элементы с одинаковыми значениями, то новый элемент с тем же значением должен разместиться после них. Подсказка. Например, набор натуральных чисел: 7, 5, 3, 3, 2. Пользователь ввел число 3. Результат: 7, 5, 3, 3, 3, 2. Пользователь ввел число 8. Результат: 8, 7, 5, 3, 3, 2. Пользователь ввел число 1. Результат: 7, 5, 3, 3, 2, 1. Набор натуральных чисел можно задать непосредственно в коде, например, my_list = [7, 5, 3, 3, 2]. ''' if __name__ == '__main__': print(task) raiting = [7, 5, 3, 3, 2] while True: raiting.sort(reverse = True) print('Raiting = ', raiting) num = input_value('Input number or 0 - to exit: ', '^[0-9]+$', int) if num == 0: break raiting.append(num)
Пользователь вводит месяц в виде целого числа от 1 до 12. Сообщить к какому времени года относится месяц (зима, весна, лето, осень). Напишите решения через list и через dict. ''' if __name__ == '__main__': print(task) season_list = [ 'Winter', 'Winter', 'Spring', 'Spring', 'Spring', 'Summer', 'Summer', 'Summer', 'Autumn', 'Autumn', 'Autumn', 'Winter' ] season_dict = { 0: 'Winter', 1: 'Winter', 2: 'Spring', 3: 'Spring', 4: 'Spring', 5: 'Summer', 6: 'Summer', 7: 'Summer', 8: 'Autumn', 9: 'Autumn', 10: 'Autumn', 11: 'Winter', } month = input_value('Input month: ', '^(1|2|3|4|5|6|7|8|9|10|11|12)$', int) print('Season by list: ', season_list[month - 1]) print('Season by dict: ', season_dict[month - 1])
from common import input_value task = ''' Запросите у пользователя значения выручки и издержек фирмы. Определите, с каким финансовым результатом работает фирма (прибыль — выручка больше издержек, или убыток — издержки больше выручки). Выведите соответствующее сообщение. Если фирма отработала с прибылью, вычислите рентабельность выручки (соотношение прибыли к выручке). Далее запросите численность сотрудников фирмы и определите прибыль фирмы в расчете на одного сотрудника. ''' if __name__ == '__main__': print(task) earnings = input_value('Input earnings: ', '^[0-9]+(\.[0-9]+)?$', float) costs = input_value('Input costs: ', '^[0-9]+(\.[0-9]+)?$', float) profit = earnings - costs print('У вас ', 'прибыль' if earnings >= costs else 'убыток', ' = ', profit) if profit >= 0: print('Рентабельность = ', profit / earnings) employees = input_value('Input employees: ', '^[0-9]+$', int) print('Прибыль фирмы в расчете на одного сотрудника = ', profit / employees)
from common import input_value task = ''' Для списка реализовать обмен значений соседних элементов, т.е. Значениями обмениваются элементы с индексами 0 и 1, 2 и 3 и т.д. При нечетном количестве элементов последний сохранить на своем месте. Для заполнения списка элементов необходимо использовать функцию input(). ''' if __name__ == '__main__': print(task) num = input_value('Input number of values: ', '^[0-9]+$', int) values = [] while len(values) < num: value = input_value('Input value: ', '^.+$', str) values.append(value) print(values) for i in range(len(values) // 2): values[i * 2], values[i * 2 + 1] = values[i * 2 + 1], values[i * 2] print(values)
без встроенной функции возведения числа в степень. Подсказка: попробуйте решить задачу двумя способами. Первый — возведение в степень с помощью оператора **. Второй — более сложная реализация без оператора **, предусматривающая использование цикла. ''' def my_func(x, y): ''' second variant ''' def prod(vars): ''' there is not build-in function like sum :(''' result = 1 for var in vars: result = result * var return result if y == 0: return 1 return prod([x if y > 0 else 1 / x for _ in range(abs(y))]) if __name__ == '__main__': print(task) x = input_value('Input x: ', '^\-?[0-9]+(\.[0-9]+)?$', float) y = input_value('Input y: ', '^\-?[0-9]+$', int) print(my_func(x, y))
from common import input_value task = ''' Реализовать функцию, принимающую два числа (позиционные аргументы) и выполняющую их деление. Числа запрашивать у пользователя, предусмотреть обработку ситуации деления на ноль. ''' def divide(a, b): try: return a / b except ZeroDivisionError: return None if __name__ == '__main__': print(task) a = input_value('Input a: ', '^[0-9]+(\.[0-9]+)?$', float) b = input_value('Input b: ', '^[0-9]+(\.[0-9]+)?$', float) print(divide(a, b))
from common import input_value task = ''' Поработайте с переменными, создайте несколько, выведите на экран, запросите у пользователя несколько чисел и строк и сохраните в переменные, выведите на экран. ''' if __name__ == '__main__': print(task) a = 1 b = 2.3445 c = 'hello' d = True a = input_value('Input int: ', '^[0-9]+$', int) print(a) b = input_value('Input float: ', '^[0-9]+(\.[0-9]+)?$', float) print(b) c = input_value('Input str: ', '^.+$', str) print(c) d = input_value('Input bool: ', '^.*$', bool) print(d)
from common import input_value task = ''' Пользователь вводит целое положительное число. Найдите самую большую цифру в числе. Для решения используйте цикл while и арифметические операции. ''' if __name__ == '__main__': print(task) number = input_value('Input number: ', '^[0-9]+$', int) max = 0 current = 10 while number > 0: if number % 10 > max: max = number % 10 number = number // 10 print(max)
Проверьте его работу на данных, вводимых пользователем. При вводе пользователем нуля в качестве делителя программа должна корректно обработать эту ситуацию и не завершиться с ошибкой. ''' class MyZeroDivisionError(ZeroDivisionError): def __str__(self): return 'MyZeroDivisionError' class NewInt(int): def __truediv__(self, value): if value == NewInt(0): raise MyZeroDivisionError return NewInt(int.__truediv__(self, value)) if __name__ == '__main__': print(task) while True: try: a = input_value('Input int A: ', '^[0-9]+$', NewInt) b = input_value('Input int B: ', '^[0-9]+$', NewInt) print(a / b) break except MyZeroDivisionError as e: print(e)
from common import input_value task = ''' Пользователь вводит строку из нескольких слов, разделённых пробелами. Вывести каждое слово с новой строки. Строки необходимо пронумеровать. Если в слово длинное, выводить только первые 10 букв в слове. ''' if __name__ == '__main__': print(task) string = input_value('Input str: ', '^.+$', str) print('\n'.join( map(lambda x: x if len(x) <= 10 else x[0:10], string.split())))
from common import input_value task = ''' Узнайте у пользователя число n. Найдите сумму чисел n + nn + nnn. Например, пользователь ввёл число 3. Считаем 3 + 33 + 333 = 369. ''' if __name__ == '__main__': print(task) n = input_value('Input n: ', '^[0-9]{1}$', str) print(int(n * 1) + int(n * 2) + int(n * 3))
from common import input_value task = ''' Пользователь вводит время в секундах. Переведите время в часы, минуты и секунды и выведите в формате чч:мм:сс. Используйте форматирование строк. ''' if __name__ == '__main__': print(task) seconds = input_value('Input seconds: ', '^[0-9]+$', int) time = ':'.join( map(lambda x: str(x) if x >= 10 else '0' + str(x), (seconds // 3600, seconds % 3600 // 60, seconds % 3600 % 60))) print(time)