Лабораторные_Python / тема5
.pdfPython, ПОАС, ОКЗ, ИКЗ 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