Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
09.08.2021
Размер:
223.46 Кб
Скачать

Python, ПОАС, ОКЗ, ИКЗ 8 и протокол по теме 5

#Общее контрольное задание по Теме 5

>>>import string

>>>k="It is windy"

#Определение порядкового номера каждой буквы из строки k в английском алфавите:

>>> for i in k:

if i in string.ascii_letters:

if string.ascii_letters.index(i)<=25:

print(i, ' имеет номер ', string.ascii_letters.index(i)+1,' в алфавите') else: print(i, ' имеет номер ', string.ascii_letters.index(i)-25,' в алфавите')

else:

 

 

continue

I

имеет номер 9

в алфавите

t

имеет номер

20

в алфавите

i

имеет номер

9

в алфавите

s имеет номер 19 в алфавите w имеет номер 23 в алфавите i имеет номер 9 в алфавите n имеет номер 14 в алфавите d имеет номер 4 в алфавите y имеет номер 25 в алфавите

#Создание строки с текстом из задания:

>>>st='Создайте список со словами из задания данного пункта. Для этого списка – определите, есть ли в нем некоторое заданное значение, и выведите соответствующее сообщение: либо о нахождении элемента, либо о его отсутствии в списке (проверить как с имеющимся, так и с отсутствующим словом).'

>>>kort=(',','.','–',')','(',':')

#Исключение символов, не являющихся словами, из строки (за исключением пробелов):

>>> for i in st:

for k in kort:

if i==k:

st=st.replace(i,'')

else:

continue

>>> st

'Создайте список со словами из задания данного пункта Для этого списка определите есть ли в нем некоторое заданное значение и выведите соответствующее сообщение либо о нахождении элемента либо о его отсутствии в списке проверить как с имеющимся так и с отсутствующим словом'

#Создание списка со словами из тескта задания:

>>>sp=st.split(' ')

>>>sp.pop(sp.index(''))

''

>>>sp

['Создайте', 'список', 'со', 'словами', 'из', 'задания', 'данного', 'пункта', 'Для', 'этого', 'списка', 'определите', 'есть', 'ли', 'в', 'нем', 'некоторое', 'заданное', 'значение', 'и', 'выведите', 'соответствующее', 'сообщение', 'либо', 'о', 'нахождении', 'элемента', 'либо', 'о', 'его', 'отсутствии', 'в', 'списке', 'проверить', 'как', 'с', 'имеющимся', 'так', 'и', 'с', 'отсутствующим', 'словом']

>>> slovo=['есть','институт']

#Проверка наличия слов из списка slovo в списке sp:

>>> for i in slovo: if i in sp:

print('Слово "',i,'" входит в состав списка')

else:

print('Слово "',i,'" не входит в состав списка')

Слово " есть " входит в состав списка Слово " институт " не входит в состав списка

#Создание списков с фамилиями студентов и их оценками в летнюю и зимнюю сессии:

>>>stud1=['М','Ч','А','Е']

>>>oz1=[4.6,5,4.9,4.5]

1

>>>stud2=['Е','А','Ч','М']

>>>oz2=[4.4,4.5,5,4.9]

#Осуществление вывода оценок на экран в соответствии с введенной фамилией студента:

>>>fam=1

>>>while fam!='':

fam=input('Введите фамилию студента: ') if fam in stud1:

i=stud1.index(fam); k=stud2.index(fam)

print('Средняя оценка студента ', fam,' в летней сессии: ',oz1[i],' в зимней сессии: ',oz2[k]) elif fam=='':

fam=1 break

else: print('Студента нет в списках')

Введите фамилию студента: Е

 

 

 

Средняя оценка студента Е в летней сессии:

4.5

в зимней сессии:

4.4

Введите фамилию студента: М

 

 

 

Средняя оценка студента М в летней сессии:

4.6

в зимней сессии:

4.9

Введите фамилию студента: Ч

 

 

 

Средняя оценка студента Ч в летней сессии:

5

в зимней сессии: 5

 

Введите фамилию студента: Щ

 

 

 

Студента нет в списках

 

 

 

Введите фамилию студента: А

 

 

 

Средняя оценка студента А в летней сессии:

4.9

в зимней сессии:

4.5

Введите фамилию студента:

#В ответ на последний запрос была нажата клавиша Enter, и был осуществлен выход из цикла благодаря инструкции break.

#Ответ на контрольный вопрос:

#4.1. Если бы значение rashod в какой-то момент стало отрицательным (например, в случае декремента rashod-=70), то завершения цикла не произошло бы. Цикл завершится только в случае, если значение на месте условия равно 0, или '', или False, или [] и т.д. Если числовое значение на месте условия отрицательное или положительное (не равное 0), завершения цикла не происходит.

#Индивидуальное контрольное задание № 8:

>>> import random

#Создание кортежа tup с 20 элементами:

>>>i=1; tup=()

>>>while i<=20: tup=tup+(random.uniform(20,98),) i+=1

>>>tup

(97.53892139241323, 51.25221727596299, 56.044974949485834, 61.27813391009774, 87.19662858203152, 97.96621218563456, 55.09769881151509, 39.58141236444801, 68.70460563015294, 50.27600709927012, 21.42550821306036, 74.18390701736652, 54.943067841664366, 90.04185777508704, 88.32436711907026, 43.1223950701811, 83.2818652320419, 23.570987772982424, 23.18099666290485, 96.89221703528439)

#Подсчет суммы и числа элементов, которые находятся в диапазоне значений от 40 до 70:

>>>summa=0; k=0

>>>for n in tup:

if n>=40 and n<=70: summa+=n k+=1

else:

continue

>>>summa; k 440.7191005883302 8

#Проверка наличия элеметов в диапазоне значений от 40 до 70 и вывод среднего значения на экран в случае, если такие элементы есть, иначе вывод сообщения об отсутствии элементов в указанном диапазоне:

>>>if k!=0:

sr=summa/k

print('Среднее значение=',sr)

2

else:

print('Нет чисел в диапазоне от 40 до 70')

Среднее значение= 55.089887573541276

#Протокол по Теме 5

#Пункт 2

>>>porog=3

>>>rashod1=5

>>>rashod2=6

>>>if rashod1>=porog: dohod=12

elif rashod2==porog: dohod=0

else:

dohod=-8

>>>dohod

12

#Значение переменной dohod стало равно 12, так как значение переменной rashod1 больше значения переменной porog.

>>>if rashod1>=3 and rashod2==4:

dohod=rashod1

if rashod2==porog or rashod1<rashod2: dohod=porog

>>>dohod

12

#Значение переменной dohod не изменилось, так как не выполняется условие равенства переменной rashod2 значению 4.

>>>if porog==3:

dohod=1 elif porog==4:

dohod=2 elif porog==5:

dohod=3

else:

dohod=0

>>>dohod

1

#Значение переменной dohod стало равно 1, так как значение переменной porog равно 3.

>>>dohod=2 if porog>=4 else 0

>>>dohod

0

#Значение переменной dohod стало равно 0, так как значение переменной porog меньше 4.

>>> if porog>=5: rashod1=6; rashod2=0

>>>rashod1

5

>>>rashod2

6

#Значения переменых rashod1, rashod2 не изменились, так как значение переменной porog меньше 5.

#Пункт 3.1

>>>temperatura=5

>>>for i in range (3,18,3):

temperatura+=i

>>>temperatura

50

#temperatura=5+3+6+9+12+15=50

#Пункт 3.2

>>>sps=[2,15,14,8]

3

>>> for k in sps:

if len(sps)<=10:sps.append(sps[0]) else: break

>>> sps

[2, 15, 14, 8, 2, 2, 2, 2, 2, 2, 2]

#В списке было 4 исходных элемента, следовательно, число 2 добавилось 7 раз, чтобы число элементов стало больше 10.

>>>sps=[2,15,14,8]

>>>for k in sps[:]:

if len(sps)<=10:sps.append(sps[0]) else: break

>>> sps

[2, 15, 14, 8, 2, 2, 2, 2]

#В новом списке добавлено на 3 значения меньше, чем в предыдущем. Это произошло из-за того, что sps[:] создает копию sps, то есть в sps[:] остается 4 исходных элемента до тех пор, пока не будет произведен выход из условия if, в то время как по условию if число элементов в исходном списке sps увеличивается. Так как значения в sps[:] только 4, то сравнение происходит 4 раза, следовательно в список sps добавлено 4 элемента.

#Пункт 3.3

>>>import random as rn

>>>sps5=[]

>>>for i in range(10): sps5.append(rn.randint(1,100)) ss=sum(sps5)

if ss>500: break

else:

print(ss)

353

>>>sps5=[]

>>>for i in range(10):

sps5.append(rn.randint(1,100))

ss=sum(sps5) if ss>500: break

else:

print(ss)

>>>sps5=[]

>>>for i in range(10): sps5.append(rn.randint(1,100)) ss=sum(sps5)

if ss>500: break

else:

print(ss)

483

>>>sps5=[]

>>>for i in range(10): sps5.append(rn.randint(1,100))

ss=sum(sps5) if ss>500: break

else:

print(ss)

479

#Значение ss не выводится, когда ss>500, то есть если сумма элементов списка sps5 превышает значение 500. Сумма элементов списка каждый раз разная благодаря функции randint. В случаях, когда ss>500, происходит досрочное завершение цикла for посредством break в конце тела цикла, а при прерывании цикла при помощи break блок инструкций для else не выполняется, следовательно, значение ss не выводится.

4

#Пункт 3.4

>>>stroka='Это - автоматизированная система'

>>>stroka1=""

>>>for ss in stroka:

stroka1+=" "+ss

>>> stroka1

' Э т о - а в т о м а т и з и р о в а н н а я с и с т е м а'

#Пункт3.5

>>>import math

>>>sps2=[math.sin(i*math.pi/5+2) for i in range(100)]

>>>import pylab

>>>pylab.plot(range(100),sps2)

[<matplotlib.lines.Line2D object at 0x0000026F6B7EA588>]

>>>pylab.title('График сигнала') Text(0.5, 1.0, 'График сигнала')

>>>pylab.xlabel('время') Text(0.5, 0, 'время')

>>>pylab.ylabel('сигнал') Text(0, 0.5, 'сигнал')

>>>pylab.show()

#График сигнала представлен в файле signal.png.

#Пункт 4.1

>>>rashod=300

>>>while rashod:

print("Расход=",rashod) rashod-=50

Расход= 300 Расход= 250 Расход= 200 Расход= 150 Расход= 100 Расход= 50

#Цикл завершился, когда значение rashod стало равным 50-50=0. Если на месте условия для цикла while оказывается число 0, то результат получается такой же, который был бы, если бы на месте условия логическое выражение дало бы результат False. Так как нет else и соответствующего блока инструкций, произошло завершение цикла без выполнения каких-либо дополнительных инструкций.

#Пункт 4.2

>>>import math

>>>stroka='Расчет процесса в объекте регулирования'

>>>i=0

>>>sps2=[]

>>>while i<len(stroka):

r=1-2/(1+math.exp(0.1*i)) sps2.append(r)

print('Значение в момент',i,"=",r) i+=1

Значение в момент 0 = 0.0

Значение в момент 1 = 0.049958374957880025 Значение в момент 2 = 0.09966799462495568 Значение в момент 3 = 0.14888503362331795 Значение в момент 4 = 0.197375320224904 Значение в момент 5 = 0.2449186624037092 Значение в момент 6 = 0.2913126124515909 Значение в момент 7 = 0.3363755443363322 Значение в момент 8 = 0.3799489622552249 Значение в момент 9 = 0.421899005250008 Значение в момент 10 = 0.4621171572600098 Значение в момент 11 = 0.5005202111902354 Значение в момент 12 = 0.5370495669980353

5

Значение в момент 13 = 0.5716699660851172 Значение в момент 14 = 0.6043677771171636 Значение в момент 15 = 0.6351489523872873 Значение в момент 16 = 0.6640367702678489 Значение в момент 17 = 0.6910694698329307 Значение в момент 18 = 0.7162978701990245 Значение в момент 19 = 0.7397830512740043 Значение в момент 20 = 0.7615941559557649 Значение в момент 21 = 0.7818063576087741 Значение в момент 22 = 0.8004990217606297 Значение в момент 23 = 0.8177540779702878 Значение в момент 24 = 0.8336546070121553 Значение в момент 25 = 0.8482836399575129 Значение в момент 26 = 0.8617231593133063 Значение в момент 27 = 0.874053287886007 Значение в момент 28 = 0.8853516482022625 Значение в момент 29 = 0.8956928738431645 Значение в момент 30 = 0.9051482536448664 Значение в момент 31 = 0.9137854901178277 Значение в момент 32 = 0.9216685544064713 Значение в момент 33 = 0.9288576214547277 Значение в момент 34 = 0.935409070603099 Значение в момент 35 = 0.9413755384972874 Значение в момент 36 = 0.9468060128462683 Значение в момент 37 = 0.9517459571646616 Значение в момент 38 = 0.9562374581277391

>>> pylab.plot(range(i),sps2)

[<matplotlib.lines.Line2D object at 0x0000026F6DF71848>]

>>>pylab.title('Сигнал на выходе инерционного звена') Text(0.5, 1.0, 'Сигнал на выходе инерционного звена')

>>>pylab.xlabel('время')

Text(0.5, 0, 'время')

>>>pylab.ylabel('сигнал') Text(0, 0.5, 'сигнал')

>>>pylab.show()

#График сигнала представлен в файле signal2.png.

#Пункт 4.3

>>>chislo=267

>>>kandidat=chislo//2

>>>while kandidat>1:

if chislo%kandidat==0:

print(chislo,' имеет множитель ',kandidat) break

kandidat-=1

else:

print(chislo,' является простым!')

267 имеет множитель 89

#Дополнение программы для выявления всех простых чисел в диапазоне от 250 до 300:

>>> for chislo in range(250,301,1): kandidat=chislo//2

while kandidat>1:

if chislo%kandidat==0:

print(chislo,' имеет множитель ',kandidat) break

kandidat-=1

else:

print(chislo,' является простым!')

250имеет множитель 125

251является простым!

252имеет множитель 126

253имеет множитель 23

6

254имеет множитель 127

255имеет множитель 85

256имеет множитель 128

257является простым!

258имеет множитель 129

259имеет множитель 37

260имеет множитель 130

261имеет множитель 87

262имеет множитель 131

263является простым!

264имеет множитель 132

265имеет множитель 53

266имеет множитель 133

267имеет множитель 89

268имеет множитель 134

269является простым!

270имеет множитель 135

271является простым!

272имеет множитель 136

273имеет множитель 91

274имеет множитель 137

275имеет множитель 55

276имеет множитель 138

277является простым!

278имеет множитель 139

279имеет множитель 93

280имеет множитель 140

281является простым!

282имеет множитель 141

283является простым!

284имеет множитель 142

285имеет множитель 95

286имеет множитель 143

287имеет множитель 41

288имеет множитель 144

289имеет множитель 17

290имеет множитель 145

291имеет множитель 97

292имеет множитель 146

293является простым!

294имеет множитель 147

295имеет множитель 59

296имеет множитель 148

297имеет множитель 99

298имеет множитель 149

299имеет множитель 23

300имеет множитель 150

7

Соседние файлы в папке Лабораторные_Python