Бірөлшемді массивте деректерді енгізу және шығару

► Python программалау тілінде біртипті деректерді енгізу мен шығару жұмысын қалай ұйымдастыруға болады?

Массивте деректерді енгізудің түрлері

-1-

Массивте деректерді енгізудің қажеттілігіне қарай үш түрі бар (1-сызба). Массивке енгізілетін деректердің саны 20-30-дан аспаса, пернетақта арқылы енгізу тиімді. Массив көмегімен файлға алдын ала жазылған үлкен көлемдегі деректерді өңдеуде файлдан оқыту әдісін қолданған тиімді. Көп жағдайларда құрған жаңа программаның жұмыс қабілетін ең жоғарғы және ең төменгі шекті мәндерде тестілеу қажеттілігі туындайды. Мұндай жағдайда деректерді кездейсоқ сандар операторымен енгізу тиімді. Мысалы, программа жұмысын 2 млн. әртүрлі бүтін санмен тексеру жағдайын алатын болсақ, мұндай көп санды теріп отыруға көп уақыт кетеді.

-2-

Мұндай жағдайда кездейсоқ сандар операторы Range-нің көмегімен 2 секунд ішінде біртипті деректердің үлкен көлемін жасауға болады.

Программада кездейсоқ сандардың генерациясын алу үшін Random модулі қолданылады. Random модуліндегі Randint функциясы берілген аралықта кездейсоқ сандарды алады. Мысалы, 1-ден 100-ге дейін немесе 300-ден 770-ке дейін.

Ойлан

♦ Компьютерге деректерді енгізудің қандай жолдары бар? Есіңе түсір!

#Программада random модулін іске қосады
​from random import randint
​N = 10
​A = [0]*N
​#1 ... 100 аралығындағы кездейсоқ санды жүктейді
​for i in range(N):
​A[i] = randint(1, 100) print(А)
​Нәтиже : [69, 34, 50, 95, 57, 52, 43, 57, 46, 27]
​Сонымен қатар кестені толтырудың мынандай түрлері бар:
​A = [ i for i in range (10) ] нәтижесі: А = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
​A = [ i*i for i in range (10) ] нәтижесі:А = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
​A = [ randint (1,10) for x in range (10)] нәтижесі: А = [5, 1, 3, 4, 9, 8, 1, 7, 1, 2]

Үш жағдайда массивке деректер енгізу

Программада жоғарыда аталған үш жағдайда массивке деректер енгізуді қарастырайық. Массивке деректерді енгізуге қажетті оператор – бұл цикл операторлары. 8-сыныпта танысқан 2 түрлі цикл операторы (for, while) көмегімен массивтерді енгізуге және экранға шығаруға, деректерді өңдеуге болады. Енді енгізу, деректерді өңдеу және нәтижені экранға шығаруды орындауға мысалдар қарастырайық.

Жеке жұмыс

Ұзындығы N-ге тең болатын А[N] тізімі берілген (Аі<101). Осы тізімдегі барлық жұп элементтерді экранға шығар.

1-код

N = 5 #Массивтің ұзындығы 5-ке тең
​A = [0]*N #Массивте 5 элементке орын бөледі
​for i in range(0,N): #і мәні 0-ден 5-ке дейін өзгереді
​A[i] = int( input()) #Массив элементтерін қолмен енгізу
​for i in range(0,N):
​if A[i] % 2==0 : #Массивтегі жұп элементтерді анықтау
​print ( 'A[',i,']=',A[i])

2-код

from random import randint #Кездейсоқ сандар модулін
​N = 5 іске қосады
​A = [0]*N
​for i in range(0,N):
​A[i] = randint(1,100) #1 мен 100 аралығындағы кездейсоқ сандарды массивке жүктейді
​for i in range(0,N):
​if A[i] % 2==0 :
​print ( 'A[',i,']==',A[i])

Деректер 3 түрлі енгі-зілгенмен 3 программа кодының орындау нәти-жесі бірдей болады. RUN командасын орындап пернетақтада енгізсек:

A[1] = 8;

A[2] = 58;

A[3] = 83;

A[4] = 17;

A[5] = 2;

Онда төмендегідей нәтиже аламыз:

A[1] = 8;

A[2] = 58;

A[5] = 2;

3-код

f = open('input.txt',"r") (Файлды оқу үшін ашады)
​N = int(f.readline()) (Файлдан тізімнің ұзындығын оқиды)
​h = open('output.txt',"w") (Файлды жазу үшін құрады)
​S = 0
​A = [0]*N
​t = f.readline().split() (Бір қатарға жазылған элементтерді жол түрінде оқиды)
​for i in range(0,N):
​A[i] = int(t[i]) (t жолдағы элементтерді бос орындарды тастап
​for i in range(0,N): бүтін сан ретінде тізімге жүктейді)
​if A[i] % 2==0 :
​h.write(str(A[i])+"\n") (Жұп элементтерді жолға айналдырып жазады)
​h.close() (Файлды жабады, егер жабылмаса нәтиже файлда сақталмайды)

Практикалық жұмыс

"Үлгерім" жобасы

9-сыныпта N параллель сыныптар білім алады. 3-тоқсан бойынша осы сыныптардың жалпы үлгерім пайызы А[N] массив түрінде берілген (N<102). 9-сыныптардағы білім сапасы орташа және білім сапасы ең төмен сыныптың пайызын экранға шығар. Білім сапасы ең төмен сынып өз білімін 9-сыныптар бойынша орташа білім сапасына жеткізу үшін қанша пайыз көтеру керек екенін анықтайтын программа құрастыр.

Енгізу

Нәтиже

Synyptarsany
​8
​Synyptar ulgerimin engiz(%)
​80
​90
​40
​65
​70
​68
​60
​50

Orta ulgerim = 67.375%
​Ulgerimi tómen synyp = 40 %
​Kóteru paіуzy=25.375%

Есепті шешу алгоритмі:

Оқушылардың үлгерімін Аі массив элементтері ретінде аламыз. Массивтің арифметикалық ортасын төмендегі формуламен табамыз:

Сонымен қатар массивтің минимал элементін анықтап, нәтиже ретінде (S - min)-ді беруге болады.

end="" – меңзерді жаңа қатарға өткізбейді.

«Үлгерім» жобасының программа коды
​print ('Synyptar sany=', end="")
​N=int( input() )
​S=0
​A=[0]*N
​print ('Synyptar ulgerimin engiz=')
​for i in range(0,N):
​A[i] = int( input() )
​min=A[0]
​for i in range(0,N):
​S+=A[i]
​if A[i]
​min=A[i]
​S=S/N
​print ('Orta ulgerim=', S,'%')
​print ('Bilim sapasy eń tómen synyp =',min)
​print ('Kóteru paiуzy=', S-min)

Сұрақтар

Топтық жұмыс

Массив элементтерін енгізудің 3 түріне салыстырмалы талдау жасаңдар. Осы үшеуінің қайсысын көп қолдануымыз мүмкін? Себебін мысалдар арқылы түсіндіріңдер.

Жеке жұмыс

Бір өлшемді массивтерге есептер шығару

1. Сыныптастарыңның телефон нөмірлері А[20] массивінде берілген. Осы телефон нөмірлері арасынан 5 цифрымен аяқта-латындарының санын анықта.

2. B[20] массив элементтерінің мәнін 20...50 арасындағы кездей-соқ сандардан құрастыр. Массивтегі тақ орында тұрған жұп элементтерді экранға шығар.

3. Мектептің баскетбол командасына тізім бойынша іріктеу жүр-гізілуде. Командаға мүше болғысы келетін K (К>12) оқушының бойларының ұзындығы берілген. Баскетбол командасына бойының ұзындығы Р-дан үлкен 12 оқушы ғана қабылданады. Егер жоғарыдағы шартты қанағаттандыратын оқушылардың саны жиналмаса, онда «Команданы құру мүмкін емес» жауабы шықсын. Ал команданы құруға болатын жағдайда командаға қабылданған оқушылардың тізімдегі орындарын көрсету керек. Жасақталған команда мүшелерінің орташа, ең ұзын және ең қысқа бойларының ұзындықтарын нәтиже ретінде шығар.

Өтінемін күте тұрыңыз