3832
Комментарий:
|
5849
|
Удаления помечены так. | Добавления помечены так. |
Строка 22: | Строка 22: |
* <!> в две строки * <!> в одну строку: /* `print (lambda a,b,c: max(a,b,c)<a+b+c-max(a,b,c) and "Yes" or "No")(*input())` */ |
{{{#!python a, b, c = input("Введите длины сторон через запятую: ") if a+b>c and b+c>a and c+a>b: print "Треугольник возможен" else: print "Треугольник невозможен" }}} * в две строки. Обратите внимание на использование `and` и `or` в качестве условного оператора {{{#!python a, b, c = input("Введите длины сторон через запятую: ") print a+b>c and b+c>a and c+a>b and "Да" or "Нет" }}} * <!> в одну строку. Основная проблема: надо несколько раз воспользоваться результатами ввода. Можно определить lambda-функцию: {{{#!python (lambda l: max(l)<sum(l)-max(l) and "Да" or "Нет")(input("Введите три числа через запятую: ")) }}} |
Строка 25: | Строка 39: |
{{{#!python for a in xrange(1,10): for b in xrange(10): if b == a: continue for c in xrange(10): if c == b or c == a: continue for d in xrange(10): if d == c or d == b or d == a: continue print (((a*10+b)*10)+c)*10+d }}} |
|
Строка 27: | Строка 54: |
{{{#!python N=input("Введите число: ") # Здесь можно было написать w=len(str(N)), но см. условие # Можно было и цикл написать, но это некрасиво from math import * w=int(log10(N)) # (Количество десятичных знаков в N)-1 while w>0: if N%10 != N/10**w: # Первая и последняя цифры print "Не палиндром" break N/=10 # Убираем последнюю цифру N%=(10**(w-1)) # Убираем первую цифру w-=2 # Уменьшаем количество знаков else: print "Палиндром" }}} |
|
Строка 30: | Строка 74: |
* [[attachment:2012-11-02.palindrom.py]] |
Логические и побитовые операции
(к теме «операторы цикла») Оператор цикла с последовательностью for: простейшее использование с xrange()
- Основы булевой алгебры: операции «И», «ИЛИ», «НЕ»
- Таблицы истинности
- Другие операции
- Двоичное представление чисел. Побитовые булевы операции.
Функции hex(), oct() и bin()
- Решение задачи «a,b=b,a» с помощью «исключающего ИЛИ»
Особенности операций and и or в Python
Домашнее задание
Прочитать о логических операциях и о побитовых операциях в Википедии
Сколько всего может быть различных двухместных логических операций?
- Решить задачу о неравенстве треугольника (вести три числа (A, B, C) и вывести, являются ли они сторонами треугольника)
- в три-пять строк
в две строки. Обратите внимание на использование and и or в качестве условного оператора
в одну строку. Основная проблема: надо несколько раз воспользоваться результатами ввода. Можно определить lambda-функцию:
1 (lambda l: max(l)<sum(l)-max(l) and "Да" or "Нет")(input("Введите три числа через запятую: "))
- (Брудно, Каплан) Вывести все четырёхзначные натуральные числа, в десятичной записи которых нет одинаковых цифр
- Проверить, является ли введённое число палиндромом (т. е. в десятичной записи первая цифра совпадает с последней, вторая -- с предпоследней и т. д.)
Сделать это без использования последовательностей (списков, строк и т. п.)
1 N=input("Введите число: ") 2 # Здесь можно было написать w=len(str(N)), но см. условие 3 # Можно было и цикл написать, но это некрасиво 4 from math import * 5 w=int(log10(N)) # (Количество десятичных знаков в N)-1 6 7 while w>0: 8 if N%10 != N/10**w: # Первая и последняя цифры 9 print "Не палиндром" 10 break 11 N/=10 # Убираем последнюю цифру 12 N%=(10**(w-1)) # Убираем первую цифру 13 w-=2 # Уменьшаем количество знаков 14 else: 15 print "Палиндром"
Решить-таки олимпиадную задачу из предыдущего Д/З: Сумма кубов (Брудно А. Л., Каплан Л. И.). Сколькими способами заданное натуральное число N можно представить в виде суммы двух кубов натуральных чисел: N = i3 + j3. Перестановка слагаемых нового способа не дает. Операцией возведения в степень 1/3 пользоваться можно только для первоначального приближённого вычисления N1/3, т. к. надеяться на равенство a1/3 == b1/3 нельзя.
- Для начала решить задачу любым способом
- Решить задачу при N приблизительно равном 1000000000001
Условные обозначения
— тема по Linux
— необязательная тема
— теоретическое задание
— тема для самостоятельного изучения