25.10.2024

Программа Калькулятор на Паскале

Давненько ничего не было о Паскале. Напишем программу, которая выполняет над двумя числами следующие операции:

*

 / 

^  (возведение в степень)

Программа Калькулятор на языке Паскаль

var a, b, r: real;

    p,mes,s1,s2:string;

begin

  mes:='1';  s1:='';  s2:='';

  print('==Программа калькулятор=='+NewLine+' Допустимые операции:'+NewLine+' +'+NewLine+' -'+NewLine+' *'+NewLine+' /'+NewLine+' ^'+NewLine);

  print('Введите первое число:');

  readln(a);

  print(' Введите операцию:');

  readln(p);

  print(' Введите второе число:');

  readln(b);

  if p.length=1 then

  case p of

  '+': r:=a+b;

  '-': r:=a-b;

  '*': r:=a*b;

  '/': r:=a/b;

  '^': r:=a**b;

  else mes:='Введена незнакомая операция';

  end

  else mes:='Введена незнакомая операция';

  if b<0 then begin s1:='('; s2:=')';end;

  if mes='1' then print(' ',a,p,s1,b,s2,'=',r)

             else print(mes);

end.

Результат запуска программы



В этой программе применили оператор NewLine для многострочного вывода, также применили оператор выбора case и приемы работы со строками (склеивание операцией + и функцию length для вычисления длины строки).

23.10.2024

Задание 5. ЕГЭ по информатике. Минимальное значение R, которое превышает 999, при условии, что N не может быть нечётным

Задание 5. ЕГЭ по информатике. На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. Далее эта запись обрабатывается по следующему правилу:

   а) если число кратно 3, то к двоичной записи числа слева дописывается 1, а затем два правых разряда заменяются на 11;

  б) если число не кратно 3, то к двоичной записи числа слева дописывается 10 и справа дописывается 0.

Полученная таким образом запись является двоичной записью искомого числа R.

3. Результат переводится в десятичную систему и выводится на экран.

Укажите минимальное значение R, которое превышает 999 и может быть результатом работы данного алгоритма, при условии, что N не может быть нечётным. В ответе запишите это число в десятичной системе счисления.

Источник: kompege.ru

Как будем решать задачу

  1. Запустим цикл по подбираемому числу n в диапазоне от 2 до 2000 с шагом 2 (нам нужны натуральные четные числа, граница 2000 подбираемая, но это прям "с запасом")
  2. В цикле реализуем описанный алгоритм:
    • переведем число в двоичную строку функцией bin(), возьмем срез со второго символа строки до конца (первые два символа '0b' в полученной двоичной строке нам не нужны, это не цифры двоичного числа)  s = bin(n)[2:]
    • выполним проверку числа n на кратность 3, если число кратно 3, то слева к двоичной строке припишем '1', в середину строки положим строку без последних двух символов, а справа допишем '11' (таким образом заменим два последних символа на символы '11's = '1' + s[:-2] + '11'
    • переведем полученную новую двоичную строку в десятичную систему счисления функцией int(s, 2)
    • найдем минимальный результат. который больше 999 (выполним проверку полученного результата, если число больше 999 и меньше некого минимума, то минимум перезапишем на это число)
    • За циклом выведем минимальный результат

Программа решения задачи на языке Python

m = 10000 #начальное значение искомого минимума

for n in range(2,2000,2):

    s = bin(n)[2:]

    if n % 3 == 0:

        s = '1' + s[:-2] + '11'

    else:

        s = '10' + s +'0'

    r = int(s, 2)

    if r>999 and r<m:

        m = r

print(m)

Ответ: 1007

21.10.2024

Задание 14. ЕГЭ по информатике. Найти наименьшее значение x, при котором троичная запись значения выражения содержит 2000 цифр "2"

Задание 14 (ЕГЭ по информатике). Значение арифметического выражения 3^2000 + 3^10 - x, где х – натуральное число, записали в троичной системе счисления. Определите наименьшее значение x, при котором троичная запись значения данного выражения содержит 2000 цифр "2".

Источник: kompege.ru

Как будем решать задачу

  • Запустим цикл по переменной x в диапазоне от 3^10 до 2*3^10
    (такой диапазон выбираем потому, что если вычтем 3**10, то получим 3**2000, а это число в 3 с.с. записывается, как 1 и 2000 нулей, а нам нужно получить число, в котором ровно 2000 двоек, а это число меньше на 1 разряд, значит, как минимум, нужно вычитать 3^10, так как ищем наименьшее, значит запускать можно не так далеко (), по сути, можно и теоретически решать эту задачу, в общем, кто понял, тот уже решил). Ну, в общем далее.
    спасибо за комментарий: правая граница подбираемая, но можно запустить и бесконечный цикл, брейковать, когда число x найдено.
  • В цикле формируем число n = 3^2000 + 3^10 - x
  • Переводим число n в троичную с.с. и считаем количество цифр "2"
  • Во внешнем цикле проверяем, если количество цифр "2" равно 2000, выводим число x на экран

Программа решения задачи на языке Python

for x in range(3**10,2*3**10):

    n = 3**2000 + 3**10 - x

    p = 0

    while n!=0:

        d = n % 3

        n//=3

        if d==2:

            p+=1

    if p==2000:

        print(x)

        break

Ответ: 59050

Если не очень понятно, почему запускаем цикл по такому диапазону, то можно запускать цикл сначала от 1 до 1000 (не получим никакого ответа), затем от 1000 до 10000 (тоже не получим ответа), затем от 10000 до 50000 (тоже не получим ответа), затем от 50000 до 10000, получим ответ. То есть, экспериментально подбираем диапазон. Поскольку ищем минимальное число x, то после успешной проверки, можно его вывести и выполнить оператор break (выйти из цикла и не гнать его дальше).

Другие задания 14 из ЕГЭ по информатике в разделе Разбор задач ЕГЭ.

20.10.2024

Программа "Угадай число" на языке Питон

Программа "Угадай число" – это интерактивная игра, в которой пользователю необходимо угадать случайно сгенерированное число. Основная идея заключается в том, чтобы предложить игроку ряд подсказок, основываясь на его попытках. 

Ход игры:

  1. Генерируем число в заданном диапазоне, например, от 1 до 100. 
  2. Обнуляем счетчик попыток a.
  3. Запускаем цикл while True
  4. Вводим предполагаемое число x
  5. Увеличиваем счетчик попыток на 1
  6. Осуществляем проверку

(если x строго меньше, сообщаем "Слишком мало! Попробуйте еще раз", иначе если x строго больше, то сообщаем "Слишком много! Попробуйте еще раз", в противном случае сообщаем "Поздравляем! Вы угадали число n за a попыток" и прерываем цикл оператором break.

Программа игры "Угадай число" на языке Python

import random

n = random.randint(1, 100) #сгенерировали случайное число в промежутке от 1 до 100.

a = 0 #попытки

print("Добро пожаловать в игру 'Угадай число'!")

print("Я загадал число от 1 до 100. Попробуй угадать его!")

while True:

    x = int(input("Введите ваше предположение: "))

    a += 1

    if x < n:

        print("Слишком мало! Попробуйте еще раз.")

    elif x > n:

        print("Слишком много! Попробуйте еще раз.")

    else:

        print(f"Поздравляю! Вы угадали число {n} за {a} попыток.") #форматированная f-строка

        break

Поиграем

Вот это повезло))

Программа не только развлекает, но и способствует развитию логического мышления и навыков анализа, осваивая простые структуры управления и цикл, что делает её отличным упражнением для начинающих программистов.

Попробуйте угадать число за минимальное количество попыток. И каково это количество?

О примененной в программе f-строке

Метод f"{}" в питоне, известный как f-строка, представляет собой мощный инструмент для форматирования строк, который был введён в языке программирования с версии Python 3.6. Он позволяет разработчикам интуитивно вставлять выражения в строковые литералы, что значительно упрощает код и делает его более читаемым.

Синтаксис f-строк включает префикс "f" перед открывающей кавычкой и фигурные скобки {}, в которые можно помещать выражения. Например, можно легко объединять текст с переменными: name = "Барсик" и строка f"Привет, {name}!" выведет "Привет, Барсик!".

Кроме того, f-строки поддерживают выражения и функции, что позволяет динамически вычислять значения прямо внутри строки. Например, f"Сумма: {a + b}" может выводить сумму двух переменных, не прибегая к дополнительным строкам кода. Метод f"{}" является не только элегантным, но и эффективным способом работы со строками в Python.

09.10.2024

Методы и функции строк в Python

Python - один из самых популярных языков программирования в мире благодаря своей простоте и мощности. Он предлагает широкий спектр инструментов для работы с различными типами данных, включая строки. В данной статье рассмотрим методы и функции строк в Python, которые помогут вам эффективно обрабатывать текстовую информацию.

Введение в методы и функции строк в Python

Строки играют важную роль в программировании, и в Python они представлены как неизменяемые последовательности символов. Для работы с строками в Python существует множество методов и функций, которые облегчают их обработку и манипуляции. Некоторые из основных методов строк в Python включают строка.upper() для преобразования в верхний регистр, строка.lower() для преобразования в нижний регистр, строка.strip() для удаления пробелов в начале и конце строки и строка.split() для разделения строки на подстроки. Функции, такие как len(строка), позволяют определить длину строки, а str() - преобразовать другие типы данных (числа, логические значения, списки и др.) в строку.

Основные операции с текстовыми данными

В Python существует множество полезных методов и функций для работы со строками, которые позволяют производить различные операции с текстовыми данными. Одной из основных операций является конкатенация, то есть объединение нескольких строк в одну. Это можно сделать с помощью оператора "+".

s = 'cat' + 'Barsik' 

получим 'catBarsik' 

Также можно умножать строку на число, чтобы повторить ее содержимое заданное количество раз.

s = 'cat'*3 

получим 'catcatcat'

Другой важной операцией является разделение строки на подстроки. Для этого используют метод split(), который разделяет строку на части по указанному разделителю и возвращает список подстрок.

a = 'A+B=C'.split('+') 

получим a = ['A','B=C']

Также можно объединять подстроки в одну строку с помощью метода .join().

a = ['hello','my','world']

s = ''.join(a)

получим s = 'hellomyworld'

В Python есть возможность замены подстрок в строке с использованием метода replace(). Этот метод позволяет заменить вхождения (все или указанное количество) одной подстроки на другую в заданной строке.

Пример 1

s = '1a1b11cd11'

s = s.replace('1','2')

print(s)

#2a2b22cd22 

#все символы 1 поменялись на символы 2

Пример 2

s = '1a1b11cd11'

s = s.replace('1','2',1) 

print(s)

#2a1b11cd11

# только первый символ 1 поменялся на 2

Пример 3

s = '1a1b11cd11'

s = s.replace('1','2',2)

print(s)

#2a2b11cd11

#первые два символа 1 поменялись на 2

Важно помнить, что строки в Python неизменяемы, поэтому большинство методов возвращают новую строку, а не изменяют исходную. Это позволяет обеспечить безопасность и предотвратить неожиданные изменения данных.

Поиск и замена подстрок в строках с помощью методов

Python предоставляет мощные методы для поиска и замены подстрок в строках. Один из таких методов - find(), который возвращает индекс первого вхождения подстроки в строку или -1, если подстрока не найдена. 

k = 'BBBASSA'.find('A')

print(k) #3

Для замены подстрок используется метод replace(), который заменяет вхождения (все или указанное количество) одной подстроки на другую (рассмотрели выше). 

Метод count() возвращает количество вхождений подстроки в строку. Он помогает быстро оценить, сколько раз повторяется определенная последовательность символов в строке.

k = 'BAOBAB BAOBAB'.count('AB')

print(k) #2

Работа с регистром символов и разделением строк

В Python есть множество методов для работы с регистром символов и разделением строк. Методы upper() и lower() позволяют преобразовать все символы строки в верхний и нижний регистр соответственно. Метод capitalize() делает первую букву строки заглавной, а метод title() делает каждое слово с большой буквы.

s = 'hello'.upper()

print(s) #HELLO

s = 'HeLLo'.lower()

print(s) #hello

s = 'hello'.capitalize()

print(s) #Hello

s = 'hey, my friend'.title()

print(s) #Hey, My Friend

Срезы строк

Срез (часть) строки можно взять следующим образом.

Пример 1

s = 'HELLO'

print(s[2:4]) #с символа с номером 2 до 4 (4 не включая).

#LL

Пример 2

s = 'HELLO'

print(s[:])

#HELLO

Пример 3

s = 'HELLO'

print(s[3:])

#LO

Пример 4

s = 'HELLOMYWORLD'

print(s[1:8:2]) # c символа с номером 1 до 8 (8 не включая) с шагом 2

#ELMW

Пример 5

s = 'HELLOMYWORLD'

print(s[::-1]) #реверс строки

#DLROWYMOLLEH

Решения конкретных задач с использованием строк вы сможете найти в разделе Разбор задач ЕГЭ.