Python 3. Циклы. Операторы while и for
Задача: Напишите программу, которая вводит два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными.
a, b = map(int, input().split()) res, s = 0, 1 if bЗадача: Напишите программу, которая вводит натуральное число N и выводит первые N чётных натуральных чисел. Программа должна вывести в одну строчку N первых чётных натуральных чисел, разделив их пробелами.
n = int(input()) for i in range (1,2*n,2): print (i+1)Задача: Напишите программу, которая вводит натуральные числа a и b и выводит сумму квадратов натуральных чисел в диапазоне от a до b.
a, b = map(int, input().split()) if a > b: t = a a = b b = t s = 0 for i in range (a, b+1): s = s+i*i print (s)Задача: Напишите программу, которая вводит четыре натуральных числа (a, b, c и d) и находит все пятизначные числа, которые при делении на a дают в остатке b , а при делении на c дают в остатке d .
Входные данные Первая входная строка содержит два натуральных числа, разделённые пробелами: a и b. Вторая строка содержит натуральные числа c и d, также разделённые пробелом. Гарантируется, что 0 ≤ b ≤ a и 0 ≤ d ≤ c. Выходные данные Программа должна вывести в одну строчку через пробел все пятизначные натуральные числа, которые при делении на a дают в остатке b, а при делении на c дают в остатке d . Если таких чисел нет, программа должна вывести число -1.
x = input().split() y = input().split() a = int(x[0]) b = int(x[1]) c = int(y[0]) d = int(y[1]) if a==0 or c==0: print(-1) else: res = '' for i in range(10000, 99999): if (i%a == b) and (i%c == d): res = res+" "+str(i) res = res.strip() if res == '': print(-1) else: print(res)Задача: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в K-ю степень (где K – количество цифр в числе) равна самому числу. Например:
153 = 1^3 + 5^3 + 3^3
Напишите программу, которая находит все числа Армстронга на отрезке [a, b].Входные данные: Входная строка содержит два натуральных числа – значения a и b, разделённых пробелами. Гарантируется, что a ≤ b.
Выходные данные: Программа должна вывести в одну строчку все числа Армстронга на отрезке [a, b] , разделив их пробелами. Если таких чисел нет, программа должна вывести число -1.
x = input().split() a = int(x[0]) b = int(x[1]) ''' a = 100 b = 400 ''' if a > b: t = a a = b b = t if aЗадача: Напишите программу, которая считает количество чётных цифр введённого числа.
n = int(input()) n = int(n) k = 0 m = 0 while n>0: if n%2==0: k+=1 else: m+=1 n=n//10 print(k)Задача: Напишите программу, которая определяет, верно ли, что введённое число содержит две одинаковых цифры, стоящие рядом (как, например, 221).
n = int(input()) res = "NO" d1 = 0 d2 = 0 while n > 0: d1 = n%10 d2 = n//10%10 if d1 == d2: res = "YES" n = n//10 print (res)Задача: Напишите программу, которая определяет, верно ли, что введённое число содержит по крайней мере две одинаковых цифры, возможно, не стоящие рядом (как, например, 212). Программа должна вывести слово 'YES', если в числе есть две одинаковые цифры, и слово 'NO', если такой пары цифр нет.
n = int(input()) res = "NO" d1 = 0 d2 = 0 while n>0: d1 = n%10 m = n//10 while m > 0: d2 = m%10 if d1 == d2: res = "YES" m = m//10 n = n//10 print (res)Задача: Модифицированный алгоритм Евклида для вычисления наибольшего общего делителя двух натуральных чисел, формулируется так: нужно заменять большее число на остаток от деления большего на меньшее до тех пор, пока остаток не станет равно нулю; тогда второе число и есть НОД. Напишите программу, которая реализует этот алгоритм.
Входные данные: Входная строка содержит два числа, разделённые пробелом – a и b .
Выходные данные: Программа должна вывести в одной строке два числа: сначала наибольший общий делитель двух введённых чисел, а затем – количество шагов цикла, которые были выполнены.
x = input().split() #Python 3.x a = int(x[0]) b = int(x[1]) n = 0 while a!=0 and b!=0: if a > b: a = a % b else: b = b % a n+=1 print (a+b, n)Задача: Напишите программу, которая вычисляет сумму и произведение целых чисел, поданных на её вход. Ввод заканчивается числом 0.
Входные данные: Во входных строках записаны целые числа, по одному в каждой строке. В последней строке записано число 0.
Выходные данные: Программа должна вывести в одной строке сумму и произведение введённых чисел (не считая завершающий 0), разделив их пробелом.
summ, mul = 0, 1 while 1: c = int(input()) if c == 0: break; summ += c mul *= c print (summ,mul)Задача: Напишите программу, которая вводит натуральное число N и определяет его факториал, то есть произведение натуральных чисел от 1 до N: N! = 1·2·<. >· N.
n = int(input()) f = 1 while n>1: f *= n n -= 1 print (f)Задача: Напишите программу, которая выводит на экран все цифры числа, начиная с первой.
Входные данные: Входная строка содержит натуральное число N.
Выходные данные: Программа должна вывести все цифры введённого числа в одной строке, начиная с первой. Цифры отделяются пробелами.
n = int(input()) res = "" while n>0: res = str(n%10)+ " " + res n = n//10 print (res.strip())Задача: Напишите программу, которая вводит натуральные числа a и b и выводит все простые числа в диапазоне от a до b. Входная строка содержит два натуральных числа: a и b. Гарантируется, что a ≤ b. Программа должна вывести в одной строке через пробел все простые числа на отрезке [a, b]. Если таких чисел нет, программа должна вывести 0.
x = input().split() a = int(x[0]) b = int(x[1]) if a == 0: a = 1 res = "" for i in range(a, b + 1): for j in range(2,i): if i%j == 0: break else: res = res + " " + str(i) if res != '': print (res) else: print (0)Посчитать четные и нечетные цифры числа
Определить, сколько в числе четных цифр, а сколько нечетных. Число вводится с клавиатуры.
Решение задачи на языке программирования Python
Если число делится без остатка на 2, его последняя цифра четная. Увеличиваем на 1 счетчик четных цифр even . Иначе последняя цифра числа нечетная, увеличиваем счетчик нечетных цифр odd .
В Python операцию нахождения остатка от деления выполняет знак % .
Чтобы избавиться от младшего уже учтенного разряда, число следует разделить нацело на 10. Деление нацело обозначается двумя слэшами // .
a = int(input()) even = 0 odd = 0 while a > 0: if a % 2 == 0: even += 1 else: odd += 1 a = a // 10 print(f'Even: , odd: ')65439 Even: 2, odd: 3Кроме чисто математического подхода в Python можно решить задачу "через строку". Мы не будем переводить введенное строковое представление числа к целочисленному типу, вместо этого переберем символы строки в цикле for . Каждый символ преобразуем к числу и проверим на четность.
a = input() even = 0 odd = 0 for i in a: if int(i) % 2 == 0: even += 1 else: odd += 1 print("Even: %d, odd: %d" % (even, odd))Поскольку количество четных (как и нечетных) цифр ограничено, в программу можно включить что-то типа "базы данных" и проверять каждый символ на вхождение в нее.
a = input() digits = "02468" even = 0 odd = 0 for i in a: if i in digits: even += 1 else: odd += 1 print("Even: %d, odd: %d" % (even, odd))Обратим внимание, что оператор in языка Python в заголовке цикла for обозначает иное, чем в заголовке условного оператора. Логическое выражение i in digits возвращает истину если i входит в состав digits . В иных случаях - ложь.
X Скрыть Наверх
Решение задач на Python
Найти минимальное и максимальное из чётных положительных чисел [закрыт]
Не могу понять в чем ошибка. Во всех тестах ОК, кроме одного. Ошибка во время выполнения программы.
Задача с информатикса:
Найти минимальное и максимальное из чётных положительных чисел, записанных в файле input.txt . Количество чисел неизвестно. Если в файле нет чётных положительных чисел, нужно вывести число 0. Результат записать в файл output.txt
Входные данные.
Целые числа записаны в файле input.txt в столбик, по одному в строке. Ввод заканчивается тогда, когда заканчиваются данные в файле.Выходные данные.
Программа должна вывести в файл output.txt минимальное и максимальное из чётных положительных чисел, разделив их пробелом. Если в файле нет чётных положительных чисел, нужно вывести число 0.Примеры
входные данные
1 2 3 4 -5 -8Много различных вариаций решения придумал, но кину это:
Решение:
f=open('input.txt') g=open('output.txt','w') s=[int(i) for i in f.read().split()] s=[i for i in s if (i>0 and i %2 == 0)] if s != []: print(str(min(s))+' '+str(max(s)), file = g) else: print('0', file = g) f.close() g.close()Найти минимальное и максимальное из чётных положительных чисел, записанных в файле
Доброго времени суток!
Не могу понять в чем ошибка, помогите, пожалуйста, понять. Во всех тестах ок, кроме одного.
Ошибка во время выполнения программы.
Задача с информатикса: Найти минимальное и максимальное из чётных положительных чисел, записанных в файле input.txt . Количество чисел неизвестно. Если в файле нет чётных положительных чисел, нужно вывести число 0. Результат записать в файл output.txt .
Входные данные
Целые числа записаны в файле input.txt в столбик, по одному в строке. Ввод заканчивается тогда, когда заканчиваются данные в файле.Выходные данные
Программа должна вывести в файл output.txt минимальное и максимальное из чётных положительных чисел, разделив их пробелом. Если в файле нет чётных положительных чисел, нужно вывести число 0.Примеры
входные данные
1
2
3
4
-5
-8
выходные данные
2 4Много различных вариаций решения придумал, но кину это)
Решение:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20f=open('input.txt') g=open('output.txt','w') s=f.readlines() if s[0]!='\n': s=[int(i) for i in s] max=s[0] min=s[0] for i in range(len(s)): if s[i]>max and s[i]%2==0 and s[i]>0 or max0 or max%2!=0: max=s[i] if s[i]min and s[i]%2==0 and s[i]>0 or min0 or min%2!=0: min=s[i] if min * max %2!=0 or min0 or max0: g.write('0') else: g.write(str(min)+' '+str(max)) else: g.write('0') f.close() g.close()
