Ошибка сервера в приложении ‘/’.
Описание: На сервере возникла ошибка приложения. Текущая пользовательская настройка ошибок для этого приложения не позволяет удаленно просматривать сведения об ошибке данного приложения (из соображений безопасности). Однако, сведения можно просматривать в браузерах, запущенных на локальном сервере.
Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег в файле конфигурации «web.config», который находится в корневом каталоге текущего веб-приложения. В теге следует задать атрибут «mode» со значением «Off».
Задача на Python. Все вместе [закрыт]
Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.
Закрыт 3 года назад .
Все вместе
Дано натуральное число. Напишите программу, которая вычисляет:
- количество цифр 3 в нем;
- сколько раз в нем встречается последняя цифра;
- количество четных цифр;
- сумму его цифр, больших пяти;
- произведение цифр, больших семи (если цифр больших семи нет, то вывести 1, если такая цифра одна, то вывести ее);
- сколько раз в нем встречается цифры 0 и 5 (всего суммарно).
56639
1 1 2 21 9 1
56689932106
1 3 6 44 648 2
a=int(input()) b=0 c=0 d=0 f=0 g=0 h=0 k=1 o=0 while a!=0: b=b%10 d=b if b==3: c=c+1 elif d==b: f+=1 elif b%2==0: g+=1 elif b>5: h+=b elif b>7: k=k*b elif (b==0) or b==5: o+=1 a=a//10 print(c) print(f) print(g) print(h) if k==0: print(1) else: print(k) print(o)
Отслеживать
47.8k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 1 июл 2020 в 21:12
177 2 2 золотых знака 8 8 серебряных знаков 20 20 бронзовых знаков
Я понимаю, что сильно накосячил. Помогите, пожалуйста
1 июл 2020 в 21:14
Ну как минимум большинство elif здесь бессмысленны
1 июл 2020 в 21:40
Как лучше всего оптимизировать код?
1 июл 2020 в 22:01
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
def q3(value: str): return value.count('3') def last_qty(value: str): return value.count(value[-1]) def evens(value: str): ints = list(map(int, value)) return len([d for d in ints if d % 2 == 0]) def sum_more_5(value: str): ints = list(map(int, value)) return sum([d for d in ints if d > 5]) def multi_7(value: str): ints = list(map(int, value)) i = 1 for d in ints: i *= d if d > 7 else 1 return i def qty05(value: str): ints = list(map(int, value)) return len([d for d in ints if d == 0 or d == 5]) if __name__ == '__main__': inp = input() print(q3(inp)) print(last_qty(inp)) print(evens(inp)) print(sum_more_5(inp)) print(multi_7(inp)) print(qty05(inp))
Отслеживать
ответ дан 1 июл 2020 в 22:38
Ole Lukøje Ole Lukøje
3,895 1 1 золотой знак 9 9 серебряных знаков 33 33 бронзовых знака
- python
- python-3.x
- математика
- обработка-ошибок
-
Важное на Мете
Похожие
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.21.1314
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
W.2. Использование условного оператора в теле операторов цикла с условием
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также код задачи. Пример решения.
Решены задачи: 1,2,5,6. Не решены: 3-4, 7-25.
Задачи
W2.1. Имеется фрагмент программы в виде оператора цикла с параметром, обеспечивающий вывод на экран «столбиком» квадратного корня из всех целых чисел от a до b (a>b).
Оформить этот фрагмент в виде:
а) оператора цикла с предусловием;
б) оператора цикла с постусловием.
Внимание! До решения задач, связанных с обработкой заданного натурального числа, рекомендуется решить задачу W2.1.
W2.2. Дано натуральное число. Определить:
а) количество цифр 3 в нем;
б) сколько раз в нем встречается последняя цифра;
в) количество четных цифр в нем. Составное условие и более одного неполного условного оператора не использовать;
г) сумму его цифр, больших пяти;
д) произведение его цифр, больших семи;
е) сколько раз в нем встречаются цифры 0 и 5 (всего).
W2.3. Дано натуральное число. Определить:
а) сколько раз в нем встречается цифра а;
б) количество его цифр, кратных z (значение z вводится с клавиатуры; z = 2, 3, 4);
в) сумму его цифр, больших a (значение a вводится с клавиатуры; 0 г) сколько раз в нем встречаются цифры x и y.
W2.4. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти:
а) сумму всех чисел последовательности, больших числа x;
б) количество всех четных чисел последовательности.
W2.5. Дана последовательность ненулевых целых чисел, оканчивающая нулем. Определить, сколько раз в этой последовательности меняется знак. (Например, в последовательности 10, –4, 12, 56, –4 знак меняется 3 раза.)
W2.6. Дано натуральное число.
а) Определить его максимальную цифру.
б) Определить его минимальную цифру.
W2.7. Дано натуральное число.
а) Определить его максимальную и минимальную цифры.
б) Определить, на сколько его максимальная цифра превышает минимальную.
в) Найти сумму его максимальной и минимальной цифр.
Примечание. Во всех задачах использовать только один оператор цикла.
W2.8. Дано натуральное число, в котором все цифры различны. Определить:
а) порядковый номер его максимальной цифры, считая номера:
— от конца числа;
— от начала числа;
б) порядковый номер его минимальной цифры, считая номера:
— от конца числа;
— от начала числа.
Примечание. Во всех случаях использовать только один оператор цикла.
W2.9. Дано натуральное число, в котором все цифры различны. Определить порядковые номера его максимальной и минимальной цифр, считая номера:
а) от конца числа;
б) от начала числа.
W2.10. Дано натуральное число. Определить номер цифры 8 в нем, считая от конца числа. Если такой цифры нет, ответом должно быть число 0, если таких цифр в числе несколько — должен быть определен номер самой левой из них.
W2.11. Дано натуральное число. Определить, сколько раз в нем встречается максимальная цифра (например, для числа 132 233 ответ равен 3, для числа 46 336 — 2, для числа 12 345 — 1).
W2.12. Дано натуральное число. Определить, сколько раз в нем встречается минимальная цифра (например, для числа для числа 102 200 ответ равен 3, для числа 40 330 — 2, для числа 10 345 — 1).
W2.13. Напечатать все кратные тринадцати натуральные числа, меньшие 100. Задачу решить двумя способами:
а) без использования оператора цикла с условием;
б) с использованием оператора цикла с условием.
W2.14. Найти 15 первых натуральных чисел, делящихся нацело на 19 и находящихся в интервале, левая граница которого равна 100.
W2.15. Найти 20 первых натуральных чисел, делящихся нацело на 13 или на 17 и находящихся в интервале, левая граница которого равна 500.
W2.16. Найти 10 первых натуральных чисел, оканчивающихся на цифру 7, кратных числу 9 и находящихся в интервале, левая граница которого равна 100.
W2.17. Составить программу, определяющую общее число удалений и общее штрафное время каждой из хоккейных команд во время игры (игроки удаляются на 2, 5 или 10 мин). Окончание игры моделировать вводом числа 0.
W2.18. Дано натуральное число. Определить, сколько раз в нем встречается первая цифра.
W2.19. Дано натуральное число n (n > 9). Определить его вторую (с начала) цифру. Задачу решить двумя способами:
а) с использованием двух операторов цикла;
б) с использованием одного оператора цикла.
W2.20. Дано натуральное число n (n > 99). Определить его третью (с начала) цифру. Задачу решить двумя способами:
а) с использованием двух операторов цикла;
б) с использованием одного оператора цикла.
W2.21. Дано натуральное число.
а) Определить две его максимальные цифры.
б) Определить две его минимальные цифры.
Примечание. В обеих задачах использовать только один оператор цикла.
W2.22. Дано натуральное число, в котором все цифры различны. Определить:
а) порядковые номера двух его максимальных цифр, считая номера:
— от конца числа;
— от начала числа;
б) порядковые номера двух его минимальных цифр, считая номера:
— от конца числа;
— от начала числа.
Примечание. Во всех задачах использовать только один оператор цикла.
W2.23. Дана непустая последовательность вещественных чисел, оканчивающаяся числом 1000. Последовательность является неубывающей. Несколько чисел, идущих подряд, равны между собой. Найти количество таких чисел. Сколько различных чисел имеется в последовательности?
W2.24. Дана непустая последовательность вещественных чисел, оканчивающаяся нулем. Последовательность является невозрастающей. Найти количество различных чисел в последовательности.
W2.25. Найти наибольший общий делитель трех заданных натуральных чисел, используя алгоритм Евклида и учитывая, что НОД(a, b, c) = = НОД(НОД(a, b), c).
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Помощь проекту:
Понравилась статья? Поделиться с друзьями:
Вам также может быть интересно
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
Напишите в комментариях к этой записи консольные приложения для решения этих задач, укажите также
0 0 голоса
Рейтинг статьи
Подписаться
17 комментариев
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
1 месяц назад
W2.8. Дано натуральное число, в котором все цифры различны. Определить:
а) порядковый номер его максимальной цифры, считая номера:
— от конца числа;
— от начала числа;
int c=0, b=0, i=0;
System.Console.WriteLine(«Enter number»);
int a = int.Parse(Console.ReadLine());
while(a>0) b++; //total lenght of number
int d=a%10;
if (d>c) c=d;
if (c==d) i=b;
a/=10;
>
System.Console.WriteLine($»От конца — \nОт начала — \n Общая длина — »);
Последний раз редактировалось 1 месяц назад Dowran ем
1 год назад
< // W2.1. Имеется фрагмент программы в виде оператора цикла с параметром, // обеспечивающий вывод на экран «столбиком» квадратного корня из всех целых чисел от a до b (a>b). //Оформить этот фрагмент в виде: //а) оператора цикла с предусловием; Console.WriteLine("число a i b (a>b)"); int a = int.Parse(Console.ReadLine());//9 int b = int.Parse(Console.ReadLine());//4 while (a >= b) < int k = Convert.ToInt32(Math.Sqrt(a)); Console.WriteLine(k); a--; >>
1 год назад
W2.5. Дана последовательность ненулевых целых чисел, оканчивающая нулем. Определить, сколько раз в этой последовательности меняется знак. (Например, в последовательности 10, –4, 12, 56, –4 знак меняется 3 раза.)
using System; using System.Linq; using System.Text; using System.Collections.Generic; namespace Learning_Csharp < class Solution < public Listnums; private void Answer() < int helper = nums[0]; int count = 0; int i = 1; while (i < nums.Count) < if (helper >0 && nums[i] > 0) < count = count; helper = nums[i]; >else if (helper > 0 && nums[i] < 0) < count++; helper = nums[i]; >else if (helper < 0 && nums[i] >0) < count++; helper = nums[i]; >else if (helper < 0 && nums[i] < 0) < count = count; helper = nums[i]; >i++; > Console.WriteLine("Знак менялся: " + count); > public void Result() < Console.WriteLine("Answer for Mission: "); Answer(); >> class Program < static void Main(string[] args) < var userArray = new Solution(); userArray.nums = new List(); var StrNums = new List(); while (true) < string line = Console.ReadLine(); if (line == " " || line == "") break; else < StrNums.Add(line); if (line == "0") < break; >> > for (int i = 0; i < StrNums.Count; i++) < userArray.nums.Add(int.Parse(StrNums[i])); >userArray.Result(); > >
1 год назад
W.2. Использование условного оператора в теле операторов цикла с условием
using System; //W.2. Использование условного оператора в теле операторов цикла с условием namespace W2 < class Program < static double Input (string Name, double Min = -1.7E308, double Max = 1.7E308, double Exception1 = -1.7E308, double Accord1 = -1.7E308, double Accord2 = -1.7E308, double Accord3 = -1.7E308) < double Num; Console.WriteLine($"Введите :"); while (!(double.TryParse(Console.ReadLine(), out Num) && Num >= Min && Num static void Main() < //W2.1 Console.WriteLine("W2.1. Имеется фрагмент программы в виде оператора цикла с параметром, обеспечивающий вывод на экран «столбиком» квадратного корня из всех целых чисел от a до b (a>b).\nОформить этот фрагмент в виде:\nа) оператора цикла с предусловием;\nб) оператора цикла с постусловием."); int N1A = (int)Input("число A",0); int N1B = (int)Input("число B", 0, N1A-1); int N1temp = N1A; while (N1temp>=N1B) < Console.WriteLine($"Квадратный корень из равен "); N1temp--; > N1temp = N1A; Console.WriteLine(); do < Console.WriteLine($"Квадратный корень из равен "); N1temp--; > while (N1temp >= N1B); Console.ReadKey(); Console.Clear(); //W2.2 Console.WriteLine("W2.2. Дано натуральное число. Определить: \nа) количество цифр 3 в нем;\nб) сколько раз в нем встречается последняя цифра;\nв) количество четных цифр в нем.Составное условие и более одного неполного условного оператора не использовать;\nг) сумму его цифр, больших пяти;\nд) произведение его цифр, больших семи;\nе) сколько раз в нем встречаются цифры 0 и 5(всего)."); double N2 = Input("это число"); int N2count3 = 0; int N2countLast = 0; int N2countEven = 0; int N2sum = 0; int N2product = 1; int N2count05 = 0; int N2temp = 0; int N2cicle = 1; while (N2cicle 5) N2sum += N2temp; if (N2temp > 7) N2product *= N2temp; if (N2temp == 0 || N2temp == 5) N2count05++; N2cicle++; > Console.WriteLine($"а) количество цифр 3 в нем \nб) в нем встречается последняя цифра раз\nв) количество четных цифр в нем \nг) сумма его цифр, больших пяти \nд) произведение его цифр, больших семи \nе) в нем встречаются цифры 0 и 5(всего) раз"); Console.ReadKey(); Console.Clear(); //W2.3 Console.WriteLine("W2.3. Дано натуральное число. Определить:\nа) сколько раз в нем встречается цифра а;\nб) количество его цифр, кратных z(значение z вводится с клавиатуры; z = 2, 3, 4);\nв) сумму его цифр, больших n(значение a вводится с клавиатуры; 0 0) < if (N3temp % 10 == N3A) N3countA++; N3temp /= 10; >Console.WriteLine($"а) в нем встречается цифра а раз"); N3temp = N3; int N3Z = (int)Input("цифру Z", 2, 4); int N3countZ=0; while (N3temp > 0) < if ((N3temp % 10)%N3Z == 0) N3countZ++; N3temp /= 10; >Console.WriteLine($"б) количество его цифр, кратных z "); N3temp = N3; int N3N = (int)Input("цифру N", 0, 8); int N3sumN = 0; while (N3temp > 0) < if ((N3temp % 10) >N3N) N3sumN += (int)(N3temp%10); N3temp /= 10; > Console.WriteLine($"в) сумму его цифр, больших n "); N3temp = N3; int N3X = (int)Input("цифру X", 0, 9); int N3Y = (int)Input("цифру Y", 0, 9); int N3countXY = 0; while (N3temp > 0) < if (N3temp % 10 == N3X || N3temp%10 == N3Y) N3countXY++; N3temp /= 10; >Console.WriteLine($"г) в нем встречаются цифры x и y раз"); Console.ReadKey(); Console.Clear(); //W2.4 Console.WriteLine("W2.4. Дана непустая последовательность целых чисел, оканчивающаяся нулем. Найти:\nа) сумму всех чисел последовательности, больших числа x;\nб) количество всех четных чисел последовательности."); int N4; int N4X = (int) Input("число X"); int N4sumX = 0; int N4countEven=-1; do < N4 = (int)Input($"новый элемент последовательности"); if (N4 >N4X) N4sumX += N4; if (N4 % 2 == 0) N4countEven++; > while (N4 != 0); Console.WriteLine($"а) сумму всех чисел последовательности, больших числа x ;\nб) количество всех четных чисел последовательности ."); Console.ReadKey(); Console.Clear(); //W2.5 Console.WriteLine("W2.5. Дана последовательность ненулевых целых чисел, оканчивающая нулем. Определить, сколько раз в этой последовательности меняется знак. (Например, в последовательности 10, –4, 12, 56, –4 знак меняется 3 раза.)"); int N5; int N5P=0; int N5count = 0; int N5cicle = 1; do < N5 = (int)Input($"- й член последовательности"); if ((N5 > 0 && N5P < 0) || (N5 < 0 && N5P >0)) N5count++; N5P = N5; > while (N5 != 0); Console.WriteLine($"Знак сменился раз"); Console.ReadKey(); Console.Clear(); //W2.6 Console.WriteLine("W2.6. Дано натуральное число.\nа) Определить его максимальную цифру.\nб) Определить его минимальную цифру."); long N6 = (long)Input("натуральное число"); int N6Max = 0; int N6Min = 9; int N6temp; int N6cicle = 1; while (N6cicle <=Convert.ToString(N6).Length) < N6temp = (int)(N6 % Math.Pow(10, N6cicle)) / (int)(Math.Pow(10, N6cicle - 1)); if (N6temp < N6Min) N6Min = N6temp; if (N6temp >N6Max) N6Max = N6temp; N6cicle++; > Console.WriteLine($"Минимальная цифра , максимальная цифра "); Console.ReadKey(); Console.Clear(); //W2.7 Console.WriteLine("W2.7. Дано натуральное число.\nа) Определить его максимальную и минимальную цифры.\nб) Определить, на сколько его максимальная цифра превышает минимальную.\nв) Найти сумму его максимальной и минимальной цифр.\nПримечание.Во всех задачах использовать только один оператор цикла."); int N7 = (int)Input("натуральное число"); int N7temp; int N7Max=0; int N7Min=9; while (N7 !=0) < N7temp = N7 % 10; if (N7temp < N7Min) N7Min = N7temp; if (N7temp >N7Max) N7Max = N7temp; N7 /= 10; > Console.WriteLine($"Максимальная и минимальная \nМаксимальная больше минимальной на \nСумма максимальной и минимальной цифр "); Console.ReadKey(); Console.Clear(); //W2.8 Console.WriteLine("W2.8. Дано натуральное число, в котором все цифры различны. Определить:\nа) порядковый номер его максимальной цифры, считая номера:\n— от конца числа;\n— от начала числа;\nб) порядковый номер его минимальной цифры, считая номера:\n— от конца числа;\n— от начала числа.\nПримечание.Во всех случаях использовать только один оператор цикла."); int N8 = (int)Input("натуральное число, в котором все цифры различны"); int N8Max = 0; int N8MaxPlace=0; int N8Min = 9; int N8MinPlace=0; int N8temp; int N8cicle = 1; while (N8cicle <=Convert.ToString(N8).Length) < N8temp = ((N8 % (int)Math.Pow(10, N8cicle)) / (int)Math.Pow(10,N8cicle-1)); if (N8temp < N8Min) < N8Min = N8temp; N8MinPlace = N8cicle; >if (N8temp > N8Max) < N8Max = N8temp; N8MaxPlace = N8cicle; >N8cicle++; > Console.WriteLine($"порядковый номер его максимальной цифры, — от конца числа; — от начала числа\nпорядковый номер его минимальной цифры — от конца числа; — от начала числа."); Console.ReadKey(); Console.Clear(); //W2.9 Console.WriteLine("W2.9. Дано натуральное число, в котором все цифры различны. Определить порядковые номера его максимальной и минимальной цифр, считая номера:\nа) от конца числа;\nб) от начала числа."); int N9 = (int)Input("натуральное число, в котором все цифры различны"); int N9Max = 0; int N9MaxPlace = 0; int N9Min = 9; int N9MinPlace = 0; int N9temp; int N9cicle = 1; while (N9 > 0) < N9temp = N9%10; if (N9temp < N9Min) < N9Min = N9temp; N9MinPlace = N9cicle; >if (N9temp > N9Max) < N9Max = N9temp; N9MaxPlace = N9cicle; >N9cicle++; N9 /= 10; > Console.WriteLine($"порядковый номер его максимальной цифры, — от конца числа; — от начала числа\nпорядковый номер его минимальной цифры — от конца числа; — от начала числа."); Console.ReadKey(); Console.Clear(); //W2.10 Console.WriteLine("W2.10. Дано натуральное число. Определить номер цифры 8 в нем, считая от конца числа. Если такой цифры нет, ответом должно быть число 0, если таких цифр в числе несколько — должен быть определен номер самой левой из них."); int N10 = (int)Input("Натуральное число"); int N10cicle = 1; int N10temp; int N10n8=0; while (N10 > 0) < N10temp = N10 % 10; if (N10temp == 8) N10n8 = N10cicle; N10cicle++; N10 /= 10; >Console.WriteLine(N10n8); Console.ReadKey(); Console.Clear(); //W2.11 Console.WriteLine("W2.11. Дано натуральное число. Определить, сколько раз в нем встречается максимальная цифра (например, для числа 132 233 ответ равен 3, для числа 46 336 — 2, для числа 12 345 — 1)."); int N11 = (int)Input("натуральное число"); int N11Max = 0; int N11count = 0; int N11temp = 0; while (N11>0) < N11temp = N11 % 10; if (N11temp >N11Max) < N11Max = N11temp; N11count = 0; >if (N11temp == N11Max) N11count++; N11 /= 10; > Console.WriteLine(N11count); Console.ReadKey(); Console.Clear(); //W2.12 Console.WriteLine("W2.12. Дано натуральное число. Определить, сколько раз в нем встречается минимальная цифра (например, для числа для числа 102 200 ответ равен 3, для числа 40 330 — 2, для числа 10 345 — 1)."); int N12 = (int)Input("натуральное число"); int N12Min = 9; int N12count = 0; int N12temp; while (N12>0) < N12temp = N12 % 10; if (N12temp < N12Min) < N12Min = N12temp; N12count = 0; >if (N12temp == N12Min) N12count++; N12 /= 10; > Console.WriteLine(N12count); Console.ReadKey(); Console.Clear(); //W2.13 Console.WriteLine("W2.13. Напечатать все кратные тринадцати натуральные числа, меньшие 100. Задачу решить двумя способами:\nа) без использования оператора цикла с условием\nб) с использованием оператора цикла с условием."); int N13temp = 1; while (N13temp <100) < if (N13temp % 30 == 0) Console.Write($""); N13temp++; > Console.WriteLine(); for (int a = 1; a * 30 < 100; a++) Console.Write($""); Console.ReadKey(); Console.Clear(); //W2.14 Console.WriteLine("W2.14. Найти 15 первых натуральных чисел, делящихся нацело на 19 и находящихся в интервале, левая граница которого равна 100."); int N14temp = 6; while ((N14temp-5) < 16) < Console.Write($""); N14temp++; > Console.ReadKey(); Console.Clear(); //W2.15 Console.WriteLine("W2.15. Найти 20 первых натуральных чисел, делящихся нацело на 13 или на 17 и находящихся в интервале, левая граница которого равна 500."); int N15temp=500; int N15count = 1; while (N15count <21) < if (N15temp % 13 == 0) < Console.Write($""); N15count++; > if (N15temp % 17 == 0) < Console.Write($""); N15count++; > N15temp++; > Console.ReadKey(); Console.Clear(); //W2.16 Console.WriteLine("W2.16. Найти 10 первых натуральных чисел, оканчивающихся на цифру 7, кратных числу 9 и находящихся в интервале, левая граница которого равна 100."); int N16 = 12; int N16count = 1; while (N16count < 11) < if ((N16*9)%10==7) < Console.Write($""); N16count++; > N16++; > Console.ReadKey(); Console.Clear(); //W2.17 Console.WriteLine("W2.17. Составить программу, определяющую общее число удалений и общее штрафное время каждой из хоккейных команд во время игры (игроки удаляются на 2, 5 или 10 мин). Окончание игры моделировать вводом числа 0."); int N17 = -1; int N17team = -1; int N17count1 = 0; int N17count2 = 0; int N17sum1 = 0; int N17sum2 = 0; while (N17!=0 && N17team!=0) < N17team = (int)Input("игрок какой команды удален? (1 или 2)",0,2); N17 = (int)Input("насколько минут удален игрок? (2,5 или 10)", 0, 0,1.7E308,2,5,10); if (N17team == 1) < N17count1++; N17sum1 += N17; >if (N17team == 2) < N17count2++; N17sum2 += N17; >> Console.WriteLine($"общее число удалений и общее штрафное время минут первой команды \nобщее число удалений и общее штрафное время минут второй команды"); Console.ReadKey(); Console.Clear(); //W2.18 Console.WriteLine("W2.18. Дано натуральное число. Определить, сколько раз в нем встречается первая цифра."); long N18 = (long) Input("натуральное число"); int N18count = 0; while (N18>0) < if (N18 % 10 == (int) (N18 / Math.Pow(10, Convert.ToString(N18).Length-1))) N18count++; N18 /= 10; >Console.WriteLine(N18count); Console.ReadKey(); Console.Clear(); //W2.19 Console.WriteLine("W2.19. Дано натуральное число n (n > 9). Определить его вторую (с начала) цифру. Задачу решить двумя способами: \nа) с использованием двух операторов цикла;\nб) с использованием одного оператора цикла."); int N19 = (int)Input("натуральное число, больше 9", 10); int N19N2 = N19; int N19N3 = N19; int N19first=-1; int N19second=-1; while (N19>0) < N19second = N19first; N19first = N19 % 10; N19 /= 10; >Console.WriteLine(N19second); int N19count = 0; while (N19N2>0) < N19count++; N19N2 /= 10; >int N19cicle = 1; int N19temp = 1; while (N19cicle < N19count) < N19temp *= 10; N19second = N19N3 % N19temp / (N19temp / 10); N19cicle++; >Console.WriteLine(N19second); Console.ReadKey(); Console.Clear(); //W2.20 Console.WriteLine("W2.20. Дано натуральное число n (n > 99). Определить его третью (с начала) цифру. Задачу решить двумя способами:\nа) с использованием двух операторов цикла;\nб) с использованием одного оператора цикла."); int N20 = (int)Input("натуральное число, больше 99", 100); int N20N1 = N20; int N20third = -1; while(N20N1>0) < if (N20N1 < 1000 && N20N1 >99) N20third = N20N1 % 10; N20N1 /= 10; > Console.WriteLine(N20third); int N20N2 = N20; int N20length = 0; while(N20N2>0) < N20length++; N20N2 /= 10; >N20third = (int)(N20 % Math.Pow(10, N20length-2) / (Math.Pow(10, N20length - 3))); Console.WriteLine(N20third); int N20N3 = N20; int N20cicle = 1; int N20temp = 1; while(N20cicle Console.WriteLine(N20third); Console.ReadKey(); Console.Clear(); //W2.21 Console.WriteLine("W2.21. Дано натуральное число. \nа) Определить две его максимальные цифры.\nб) Определить две его минимальные цифры.\nПримечание.В обеих задачах использовать только один оператор цикла."); int N21 = (int)Input("натуральное число"); int N21Max1 = 0; int N21Max2 = 0; int N21Min1 = 9; int N21Min2 = 9; int N21temp; while (N21>0) < N21temp = N21 % 10; if (N21temp >N21Max1) < N21Max2 = N21Max1; N21Max1 = N21temp;>if (N21temp > N21Max2 && N21temp < N21Max1) N21Max2 = N21temp; if (N21temp < N21Min1) < N21Min2 = N21Min1; N21Min1 = N21temp;>if (N21temp < N21Min2 && N21temp >N21Min1) N21Min2 = N21temp; N21 /= 10; > Console.WriteLine($"Максимальные числа и , минимальные и "); Console.ReadKey(); Console.Clear(); //W2.22 Console.WriteLine("W2.22. Дано натуральное число, в котором все цифры различны. Определить:\nа) порядковые номера двух его максимальных цифр, считая номера:\n— от конца числа;\n— от начала числа;\nб) порядковые номера двух его минимальных цифр, считая номера:\n- от конца числа;\n— от начала числа.\nПримечание.Во всех задачах использовать только один оператор цикла."); int N22 = (int)Input("натуральное число, в котором все цифры различны"); int N22Max1 = 0; int N22Max2 = 0; int N22Min1 = 9; int N22Min2 = 9; int N22Max1Place = -1; int N22Max2Place = -1; int N22Min1Place = -1; int N22Min2Place = -1; int N22temp; int N22count = 1; while (N22>0) < N22temp = N22 % 10; if (N22temp >N22Max1) < N22Max2 = N22Max1; N22Max2Place = N22Max1Place; N22Max1 = N22temp; N22Max1Place = N22count; >if (N22temp < N22Max1 && N22temp >N22Max2) < N22Max2 = N22temp; N22Max2Place = N22count; >if (N22temp < N22Min1) < N22Min2 = N22Min1; N22Min2Place = N22Min1Place; N22Min1 = N22temp; N22Min1Place = N22count; >if (N22temp > N22Min1 && N22temp < N22Min2) < N22Min2 = N22temp; N22Min2Place = N22count; >N22count++; N22 /= 10; > Console.WriteLine($"Максимальные числа расположены на позициях и с начала и и с конца,\nминимальные на позициях и с начала и и с конца"); Console.ReadKey(); Console.Clear(); //W2.23 Console.WriteLine("W2.23. Дана непустая последовательность вещественных чисел, оканчивающаяся числом 1000. Последовательность является неубывающей. Несколько чисел, идущих подряд, равны между собой. Найти количество таких чисел. Сколько различных чисел имеется в последовательности?"); double N23A = -1.7E308; double N23B = -1.7E308; int N23sim=0; int N23dif=0; bool B23sim = false; while (N23A <1000) < N23A = (int)Input($"член последовательности, должен быть не меньше предыдущего и не более 1000", N23B, 1000); if (N23A == N23B) < N23sim++; if (!B23sim) < N23sim++; B23sim = true; >> else < N23dif++; B23sim = false; >N23B = N23A; > Console.WriteLine($"Количество повторяющихся членов , уникальных значений "); Console.ReadKey(); Console.Clear(); //W2.24 Console.WriteLine("W2.24. Дана непустая последовательность вещественных чисел, оканчивающаяся нулем. Последовательность является невозрастающей. Найти количество различных чисел в последовательности."); double N24A = 1.7E308; double N24B = 1.7E308; int N24count = 0; while (N24A!=0) < N24A = Input("член последовательности, не боьше предыдущего", Max: N24B); if (N24A != N24B) N24count++; N24B = N24A; >Console.WriteLine($"Униквльных членов последовательности "); Console.ReadKey(); Console.Clear(); //W2.25 Console.WriteLine("W2.25. Найти наибольший общий делитель трех заданных натуральных чисел, используя алгоритм Евклида и учитывая, что НОД(a, b, c) = = НОД(НОД(a, b), c)."); int N25A = (int)Input("число А"); int N25B = (int)Input("число B, должно быть меньше А", Max:N25A); int N25C = (int)Input("число С, должно быть меньше B", Max:N25B); int N25gcd1 = N25A; int N25gcd2 = N25B; int N25temp1; bool B25 = true; while (N25gcd2!=0) < N25temp1 = N25gcd2; N25gcd2 = N25gcd1 % N25gcd2; if (N25gcd2 == 0 && B25==true) else N25gcd1 = N25temp1; > Console.WriteLine(N25gcd1); Console.ReadKey(); Console.Clear(); > > >
Сумма и произведение цифр числа
Одной из часто используемых задач для начинающих изучать программирование является нахождение суммы и произведения цифр числа. Число может вводиться с клавиатуры или генерироваться случайно. Задача формулируется так:
Дано число. Найти сумму и произведение его цифр.
Например, сумма цифр числа 253 равна 10-ти, так как 2 + 5 + 3 = 10. Произведение цифр числа 253 равно 30-ти, так как 2 * 5 * 3 = 30.
В данном случае задача осложняется тем, что количество разрядов числа заранее (на момент написания программы) не известно. Это может быть и трехзначное число, как в примере выше, и восьмизначное, и однозначное.
Обычно предполагается, что данная задача должна быть решена арифметическим способом и с использованием цикла. То есть с заданным число должны последовательно выполняться определенные арифметические действия, позволяющие извлечь из него все цифры, затем сложить их и перемножить.
При этом используются операции деления нацело и нахождения остатка. Если число разделить нацело на 10, произойдет «потеря» последней цифры числа. Например, 253 ÷ 10 = 25 (остаток 3). С другой стороны, эта потерянная цифра есть остаток от деления. Получив эту цифру, мы можем добавить ее к сумме цифр и умножить на нее произведение цифр числа.
Пусть n – само число, suma – сумма его цифр, а mult – произведение. Тогда алгоритм нахождения суммы и произведения цифр можно словесно описать так:
- Переменной suma присвоить ноль.
- Переменной mult присвоить единицу. Присваивать 0 нельзя, так как при умножении на ноль результат будет нулевым.
- Пока значение переменной n больше нуля повторять следующие действия:
- Найти остаток от деления значения n на 10, то есть извлечь последнюю цифру числа.
- Добавить извлеченную цифру к сумме и увеличить на эту цифру произведение.
- Избавиться от последнего разряда числа n путем деления нацело на 10.
В языке Python операция нахождения остатка от деления обозначается знаком процента — % . Деление нацело — двумя слэшами — // .
Код программы на языке Python
n = int(input()) suma = 0 mult = 1 while n > 0: digit = n % 10 suma = suma + digit mult = mult * digit n = n // 10 print("Сумма:", suma) print("Произведение:", mult)
253 Сумма: 10 Произведение: 30
Изменение значений переменных можно записать в сокращенном виде:
. while n > 0: digit = n % 10 suma += digit mult *= digit n //= 10 .
Приведенная выше программа подходит только для нахождения суммы и произведения цифр натуральных чисел, то есть целых чисел больше нуля. Если исходное число может быть любым целым, следует учесть обработку отрицательных чисел и нуля.
Если число отрицательное, это не влияет на сумму его цифр. В таком случае достаточно будет использовать встроенную в Python функции abc , которая возвращает абсолютное значение переданного ей аргумента. Она превратит отрицательное число в положительное, и цикл while с его условием n > 0 будет работать как и прежде.
Если число равно нулю, то по логике вещей сумма его цифр и их произведение должны иметь нулевые значения. Цикл срабатывать не будет. Поскольку исходное значение mult — это 1, следует добавить проверку на случай, если заданное число — это ноль.
Программа, обрабатывающая все целые числа, может начинаться так:
n = abs(int(input())) suma = 0 mult = 1 if n == 0: mult = 0 .
Заметим, если в самом числе встречается цифра 0 (например, 503), то произведение всех цифр будет равно нулю. Усложним задачу:
Вводится натуральное число. Найти сумму и произведение цифр, из которых состоит это число. При этом если в числе встречается цифра 0, то ее не надо учитывать при нахождении произведения.
Для решения такой задачи в цикл добавляется проверка извлеченной цифры на ее неравенство нулю. Делать это надо до умножения на нее значения переменной-произведения.
n = int(input()) suma = 0 mult = 1 while n > 0: digit = n % 10 if digit != 0: suma += digit mult *= digit n = n // 10 print("Сумма:", suma) print("Произведение:", mult)
Обратим внимание, что заголовок условного оператора if digit != 0: в Python можно сократить до просто if digit: . Потому что 0 — это False . Все остальные числа считаются истиной.
Приведенный выше математический алгоритм нахождения суммы и произведения цифр числа можно назвать классическим, или универсальным. Подобным способом задачу можно решить на всех императивных языках, независимо от богатства их инструментария. Однако средства языка программирования могут позволить решить задачу другим, зачастую более простым, путем. Например, в Python можно не преобразовывать введенную строку к числу, а извлекать из нее отдельные символы, которые преобразовывать к целочисленному типу int :
a = input() suma = 0 mult = 1 for digit in a: suma += int(digit) mult *= int(digit) print("Сумма:", suma) print("Произведение:", mult)
Если добавить в код проверку, что извлеченный символ строки действительно является цифрой, то программа станет более универсальной. С ее помощью можно будет считать не только сумму и произведение цифр целых чисел, но и вещественных, а также цифр, извлекаемых из произвольной строки.
n = input() suma = 0 mult = 1 for digit in n: if digit.isdigit(): suma += int(digit) mult *= int(digit) print("Сумма:", suma) print("Произведение:", mult)
это3 чи3с9ло! Сумма: 15 Произведение: 81
Строковый метод isdigit проверяет, состоит ли строка только из цифр. В нашем случае роль строки играет одиночный, извлеченный на текущей итерации цикла, символ.
Глубокое знание языка Python позволяет решить задачу более экзотическими способами:
import functools n = input() n = [int(digit) for digit in n] suma = sum(n) mult = functools.reduce(lambda x, y: x*y, n) print("Сумма:", suma) print("Произведение:", mult)
Выражение [int(digit) for digit in n] представляет собой генератор списка. Если была введена строка «234» , будет получен список чисел: [2, 3, 4] .
Встроенная функция sum считает сумму элементов переданного ей аргумента.
Функция reduce модуля functools принимает два аргумента — лямбда-выражение и в данном случае список. Здесь в переменной x происходит накопление произведения, а y принимает каждое следующее значение списка.
X Скрыть Наверх
Решение задач на Python
