24.09.2024

Как ввести с клавиатуры число (Pascal, Python)

 В данной статье рассмотрим способы ввода чисел с клавиатуры на языках Паскаль и Python.

Оператор ввода значения переменной в языке Паскаль:

read(t);

или 

readln(t);

То, что нужно ввести с клавиатуры, определяется типом данных, которым объявлена переменная в блоке Var.

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

var t:integer; //integer целый тип данных

begin

   readln(t);

end.

Запуски программы

Успешный запуск (введено целое число)

Запуск с ошибкой (введено нецелое число)

Чтобы ввести нецелое число используется вещественный тип данных, например, real.

var t:real;

begin

   readln(t);

end.

Как ввести число в языке Python?

Функция  input() вводит строку.

Пример программы (и ее запуска) на языке Python, которая демонстрирует оператор ввода.

t = input()

print(t + ' Барсик')

Запуск программы

Как работала программа

Функция input() позволила ввести строку. В операторе print() склеили введенную строку и строку 'Барсик' и вывели полученную строку на экран.

Что если ввести число при помощи данной программы?


Получаем склеенную строку! 

Функция input() вводит строку.

Как ввести число?

Необходимо преобразовать строку к числу, например, целому числу. Такое преобразование выполняет функция int().

t = int(input())

print(t*10) #Чтобы проверить, что введено число, увеличим его при выводе в 10 раз

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

   34

   340

>>>

Программа ввода нецелого числа на языке Python

t = float(input())

print(t*100) #увеличим число в 100 раз

Функция float() преобразует строку к вещественному числу.

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

   2.003

   200.3

>>>

Что можно еще прочитать? 

Статья "Ввести список в одну строку Питон (Python)"

27.08.2024

Задачи на циклы (Питон, Паскаль)

Приведем решения задач на языках программирования Паскаль и Питон с применением операторов цикла.

Задача 1. Дана непустая последовательность целых чисел оканчивающаяся нулем. Найти сумму всех чисел.

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

Количество чисел в последовательности не известно, но известно, что последнее вводимое число это 0.

  1. Примем сумму за 0 (переменная s).
  2. Введем первое число из последовательности (переменная x).
  3. Запустим цикл с условием продолжения: число x не равно 0.
  4. В теле цикла будем копить сумму чисел s и вводить число x.
  5. За циклом выведем сумму чисел на экран.

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

s = 0

x = int(input())

while x!=0:

    s+=x

    x = int(input())

print('сумма чисел',s)

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

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

var x,s:integer;

begin

  readln(x);

  s:=0;

  while x<>0 do

  begin

    s+=x;

    readln(x);

  end;

  print('сумма чисел',s);

end.

Задача 2. Найти сумму всех трехзначных четных чисел.

Пусть числа натуральные.

Будем решать задачу "в лоб".

  1. Примем сумму трехзначных четных чисел за 0.
  2. Запустим цикл с счетчиком n по промежутку трехзначных чисел (от 100 до 999)
  3. Проверим, кратно ли значение счетчика цикла n числу 2 (то есть, четно ли оно), если да, то будем копить сумму s.
  4. За циклом выведем искомую сумму чисел на экран.

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

s = 0

for n in range(100,1000):

    if n % 2 == 0:

        s+=n

print('сумма трехзначных четных чисел',s)

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

сумма трехзначных четных чисел 247050

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

var n,s:integer;

begin

  s:=0;

  for n:=100 to 999 do

  begin

    if n mod 2 = 0 then s+=n;

  end;

  print('сумма трехзначных четных чисел',s);

end.

Как можно решить задачу быстрее?

Запустим цикл по заведомо четным числам, то есть от 100 до 999 с шагом 2 (100, 102, 104...), проверка четности числа не нужна.

В языке Питон

for n in range(100,1000,2):

    s+=n

В языке Паскаль

for n:=100 to 999 step 2 do

  begin

     s+=n;

  end;

Задачи на цикл в другой публикации.

19.05.2024

Задание 6. ОГЭ по информатике. 9 класс. Решение с помощью программы

 Задание 6. ОГЭ по информатике. 9 класс.

Ниже приведена программа, записанная на пяти языках программирования.

Алгоритмический язык

Паскаль

алг
нач
цел s, t
ввод s
ввод t
ввод А
если mod(s, t) = A
    то вывод ′YES′
    иначе вывод ′NO′
все
кон

var s, t: integer;
begin
readln(s);
readln(t);
readln(A);
if (s mod t = Athen
    writeln(′YES′)
else
    writeln(′NO′)
end.

Бейсик

Python

DIM s, t AS INTEGER
INPUT s
INPUT t
INPUT A
IF s MOD t = A THEN
    PRINT ′YES′
ELSE
    PRINT ′NO′
ENDIF

s = int(input())
t = int(input())
A = int(input())
if (s % t == A):
    print(′YES′)
else:
    print(′NO′)

C++

#include <iostream>
using namespace std;
int main(){
    int s, t;
    cin >> s;
    cin >> t;
    
cin >> A;
    
if (s % t == A)
        
cout << ′YES′ << endl;
    
else
        
cout << ′NO′ << endl;
return 0;
}

Было проведено 9 запусков программы, при которых в качестве значений переменных вводились следующие пары чисел (s, t):

(15, 4), (11, 5), (1, 10), (11, 3), (7, 4), (11, 5), (12, 7), (17, 10), (27, 10).

Укажите наибольшее значение параметра А, при котором программа вывела «YES» 2 раза.

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

  1. Сохраним пары чисел s и t в списках.
  2. Запустим внешний цикл по предполагаемому значению параметра A (промежуток можно выбрать экспериментально, но в данной задаче понятно, что параметр A  - это остаток от деления числа s на число t, и исходя из чисел s и t, параметр A может быть числом из промежутка [0, 9]).
  3. Во внешнем цикле по параметру A обнулим счетчик выводов YES (переменная p) и запустим внутренний цикл по 9 запускам (по сути по длине списка s (или t)).
    • Обратимся к запуску как s[i], t[i].
    • Если условие s[i] % t[i] == A выполняется, то увеличим счетчик выводов YES на 1, в противном случае не будем изменять значение счетчика p.
  4. Во внешнем цикле проверим условие p = 2, если оно выполняется, выведем число A.

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

y = [(15, 4), (11, 5), (1, 10), (11, 3), (7, 4), (11, 5), (12, 7), (17, 10), (27, 10)]

s, t = map(list,zip(*y))

#print(s,t)

#эту часть кода можно было бы записать вручную

# s = [15, 11, 1, 11, 7, 11, 12, 17, 27]

# t = [4, 5, 10, 3, 4, 5, 7, 10, 10]

for A in range(0,10):

    p = 0

    for i in range(9):

        if (s[i] % t[i] == A):

            p = p + 1

        else:

            p = p

    if p==2:

        print(A)

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

3

7

Ответ: наибольшее число A = 7

17.04.2024

Задание 14. ЕГЭ по информатике. Значение арифметического выражения записали в системе счисления с основанием 3

Задача. Значение арифметического выражения: 911 * 320 – 39 – 27 записали в системе счисления с основанием 3. Сколько цифр 2 содержится в этой записи?

Воспользуемся алгоритмом обработки цифр натурального числа, ранее рассмотренном в данном блоге.

Пока число не равно 0, будем вычислять 3-ю цифру (d = n % 3) и уменьшать число в 3 раза (n = n // 3).

Если цифра числа равна 2, то будем увеличивать счетчик цифр k.

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

n = 9**11 * 3**20 - 3**9 - 27

k = 0

while n!=0:

    d = n % 3

    n = n // 3

    if d == 2:

        k+=1

print(k)

Ответ: 38


Задание 14. ЕГЭ по информатике. Операнды арифметического выражения записаны в системах счисления с основанием 17

 Задача. Операнды арифметического выражения записаны в системах счисления с основанием 17:

10x017 + F0xF017

В записи чисел переменной x обозначена неизвестная цифра из алфавита 17-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 13. Для найденного значения x вычислите частное от деления значения арифметического выражения на 13 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

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

  1. Запустим цикл по числу x в диапазоне цифр 17-ой системы счисления (от 0 до G)
  2. Выполним перевод чисел в 10-ю систему счисления функцией int()
  3. Вычислим значение арифметического выражения
  4. Выведем число  x  и частное от деления значения арифметического выражения на 13, если значение выражения кратно числу 13
Программа решения задачи на языке Python

for x in '0123456789ABCDEFG':

    a1 = int('10'+x+'0',17)

    a2 = int('F0'+x+'F0',17)

    s = a1 + a2

    if s % 13 == 0:

        print(x, s/13)

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

Запуск программы

Наименьшее x = 2, а частное от деления значения выражения на число 13 равно 96815

Ответ: 96815

Ограничение данной программы состоит в использовании функции int(): максимальное основание, для которого допустим перевод числа, это 36, минимальное допустимое основание это 2.