Питон. Роберт Сэджвик.

Автор: | 10.11.2021

Примеры из книги Роберт Сэджвик и другие. Программирование на языке Pyton. В этой книге авторы используют некоторые свои модули для вывода данных (stdio) или массивов (stdarray). Поэтому прежде всего надо скачать в заданную вами папку эти файлы и вести запуск программ из неё. Кроме этого, примеры все были построены так, чтобы модули запускать из командной строки, и в ней задавать входные данные. Я отошел от этого и использую функцию random.randints для задания входного значения. Чаще всего это n или m и n.

Ссылка на дополнительные модули к книге

Программы на основе книги

Первая программа Hello

Действия над целыми числами

import sys
import stdio
if len(sys.argv) <= 1:
    print('Недостаточно параметров', 'Тогда берем числа ниже'          )
    a=5
    b=2
else:
    try:
        print(int(sys.argv[1]))
    except ValueError:
        print('Параметром скрипта должно быть число')
#а=int(sys.argv[1])
#b=int(sys.argv[2])
# Параметры строки запуска. их количество определяется числом между пробелами       
a=5
b=2
print(a,b)
total = a+b
diff = a-b
prod = a*b
quot = a//b
rem =a%b
exp =a**b
stdio.writeln(str(a) + '+'+ str(b) + ' = '+str(total))
stdio.writeln(str(a) + '-'+ str( b) + ' = '+str(diff))
stdio.writeln(str(a) + '*'+ str( b) + ' = '+str(prod))
stdio.writeln( str(a) + '// ' + str(b) + ' = ' + str(quot))
stdio.writeln(str(a) + '% ' + str(b) + ' = ' + str(rem))
stdio.writeln (str(a) + '** ' + str(b) + ' = ' + str(exp))

Действия с числами типа floats

Программа вычисления прогрессивного налога (if..else..elseif) Возникает лишь один вопрос? А почему у нас не так?

Пример ryler_конкатенация

Пример использования встроенного модудя stdio для вывода значений

Нахождение корней квадратного уравнения Орел-решка

Определение високосного года

Пример работы с массивами

import stdio
import stdarray
import random
#Создание нулевого массива
a = []
n=random.randint(3,4)
m=random.randint(3,5)
print('n=',n,'   m=',m)
#Создание двумерного массива
for i in range(n) :
    row = [0.0] * m
    a += [row]
#или оператором
#stdarray.create2D(m, n, 0.0)
for i in range(n) :
    for j in range(m):
        stdio.write( a[i][j])
        stdio.write( ' ')
    stdio.writeln()
    #Создание не нулевого массива
a = []
n=random.randint(3,4)
m=random.randint(3,5)
print()
print('n=',n,'   m=',m)
#Создание двумерного массива
#for i in range(n) :
 #   for j in range(m):
 #       stdio.writeln('i='+str(i)+" j= "+str(j))
 #       a[i][j]=1
a = [[random.randint(1, 10) for j in range(m)] for i in range(n)]
#или оператором
#stdarray.c reate2D(m, n, 0.0)
for i in range(n) :
    for j in range(m):
        stdio.write( a[i][j])
        stdio.write( ' ')
    stdio.writeln()
stdio.writeln()
#Заполнение двумерного массива числами от 0 до n*m
#for i in range(n) :
 #   for j in range(m):
 #       stdio.writeln('i='+str(i)+" j= "+str(j))
 #       a[i][j]=1
#a = [[(i*1)*m+(j+1)-(n*m)-1 for j in range(m)] for i in range(n)]
a = [[(i*1)*m+(j+1) for j in range(m)] for i in range(n)]
print()
#Вывод  
for i in range(n) :
    for j in range(m):
        a[i][j]=abs( a[i][j])
        stdio.write( a[i][j])
        stdio.write( ' ')
    stdio.writeln()
#Вывод
#Заполнение двумерного массива числами от 0 до n*m
for i in range(n) :
    for j in range(m):
        a[i][j]=i*m+j+1
print()       
for i in range(n) :
    for j in range(m):
        stdio.write( a[i][j])
        stdio.write( ' ')
    stdio.writeln()       

Скачать этот пример заполнения 2-мерной матрицы