Сөздіктер. Питондаы сздіктер (ассоциативті массивтер)
Скачать 95.04 Kb.
|
Python тілінің синтаксисіPython тілінің синтаксисі тілдің өзі сияқты өте қарапайым. Күрделі неинитивті емес құрылымдарды қамтымайды, сондықтан зерттеу өте оңай. Python синтаксисінің негізгі принциптері1)Жолдың соңы Нұсқаулықтың соңы болып табылады (үтірмен нүкте талап етілмейді). Мысал a = 5 b = 3 print(a + b) 2)Ішкі нұсқаулар шегініс көлемі бойынша блоктарға біріктіріледі. Шегініс кез келген болуы мүмкін, ең бастысы, бір ішкі блоктың ішінде шегініс жалғыз болуы мүмкін. Мысал if a == 5: print('yes') a += 1 3)Python ішіне енгізілген нұсқаулар негізгі нұсқаулық қос нүктемен аяқталғанда, сол үлгіге сәйкес жазылады, содан кейін ішкі код блогы орналасқан, әдетте негізгі нұсқаулық жолының астында шегініспен. Python негізгі сөздер мен идентификаторлар Идентификаторлар Анықтау Идентификатор-бағдарламадағы кейбір нысанның атауы, оны басқа объектілерден ажыратуға мүмкіндік беретін бірегей белгі. Piton идентификаторлары ұзындығы бойынша шектелмейді және регистрге сезімтал. Яғни, А және а — айнымалы немесе функциялардың әр түрлі атаулары. Идентификаторда тек жоғарғы және төменгі регистрдегі "A" - дан "Z" - ға дейінгі таңбалар, " _ " астын сызу және идентификатордың бірінші символынан басқа "0" - дан "9" - ға дейінгі сандар рұқсат етіледі. Мысалы, __aAb12_as111_1_4_5 — дұрыс идентификатор, ал1z — некорректный, т. б. басталып, сандар. 3 нұсқасының Питонындағы идентификаторлар үшін ASCII таңбаларын ғана емес, Unicode таңбаларын да пайдалануға болады. Іс жүзінде бұл айнымалыларды орысша атауға болады. Бірақ бұлай істеу керек емес, өйткені сіздің кодыңыз басқа елдерден әзірлеушілердің қолына түсуі мүмкін: егер сіз пайдаланғыңыз келетін кітапханада қытай иероглифтері жазылған атаулары бар функциялар табылса, сізге ыңғайлы бола ма? Түйін сөздер Келесі идентификаторлар тілдің сақталған немесе кілт сөздері болып табылады және әдеттегі идентификаторлар (айнымалылардың немесе функциялардың атаулары) ретінде қолданыла алмайды. False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise Python деректерді енгізуСтандартты енгізуден жолды оқу үшін input(), ол пернетақтадан жолды оқиды және айнымалыға бірден тағайындауға болатын оқылған жолдың мәнін қайтарады: a = input() b = input() Шынымен, input функциясы мәтін жолын қайтарады. Егер айнымалылардың бүтін мәндері болуы керек болса, онда оқу кейін бірден int функциясы арқылы типтерді түрлендіруді орындайды және жаңа мәндерді A және B айнымалыларына жазыңыз: a = int(a) b = int(b) Input функциясы қайтарылатын мән үшін int функциясын шақырса, жолдарды оқу мен түрді түрлендіру жақсы(): a = int(input()) b = int(input()) Жеке жолда жазылған болса, айнымалылардың мәндерін есептеу қиын. Мұнда есептелген жолға әдіс қолдану керек split(), бір немесе бірнеше бос орын (сондай-ақ табуляциялар және т.б. бос орын символдары) бойынша бөлікке бөледі. Содан кейін бұл функцияның нәтижесін екі немесе бірнеше айнымалыға тағайындаймыз. Мысалы, егер жолда бос орын арқылы екі Сан енгізілсе, онда оларды осылай есептеуге болады: a, b = input().split() a = int(a) b = int(b) Сол сияқты, үш айнымалыны қосу операторының сол жағында үш айнымалыдан кортеж жазу арқылы есептеуге болады: a, b, c = input().split() Сондай-ақ, тізімнің әрбір элементіне берілген функцияны қолданатын map функциясын пайдалансаңыз, санаулы мәндерді сандық түрге (мысалы, int) бірден түрлендіруге болады (int түріне түрлендіру үшін, тиісінше, әрбір элементке қолдану үшін int функциясын орнату қажет). Бастау үшін бұл құрылымды есте сақтауға болады: a, b, c = map(int, input().split()) Python деректерді шығаруДеректерді шығару үшін print, айнымалылардың мәндерін ғана емес, кез келген өрнектердің мәндерін де шығара алатын функция қолданылады. Мысалы, жазуға болады print(2 + 2 * 2). Сондай-ақ, print көмегімен бір емес, бірнеше өрнектің мәнін шығаруға болады, бұл үшін оларды үтір арқылы тізімдеу керек: a = 1 b = 2 print(a, '+', b, '=', a + b) Бұл жағдайда 1 + 2 = 3 мәтін басылады: алдымен a айнымалысының мәні шығарылады, содан кейін " + "белгісінен жол, содан кейін B айнымалысының мәні, содан кейін" = " белгісінен жол, соңында a + b сомасының мәні. Назар аударыңыз: шығарылатын мән бір бос орынмен бөлінеді. Бірақ мұндай мінез-құлықты өзгертуге болады: шығарылатын мәндерді екі бос орынмен, кез келген басқа символмен, кез келген басқа жолмен бөлуге, оларды бөлек жолдарда шығаруға немесе бөлуге болмайды. Ол үшін print функциясы деп аталатын арнайы атаулы параметрді жіберу керек sep (ағылш. separator-бөлгіш), бөлгіш ретінде пайдаланылатын жолға тең. Әдепкі бойынша, sep параметрі бір бос орынның жолына тең және мәндер арасында бос орын шығады. Қос нүкте белгісі сияқты бөлгіш ретінде пайдалану үшін жолға тең sep параметрін жіберу керек ‘:’: print(a, b, c, sep = ':') Сол сияқты, бөлгішті толығымен алып тастау үшін, бос жолға тең sep параметрін жіберу керек: print(a, '+', b, '=', a + b, sep = '') Мәндерді жаңа жолдан шығару үшін, sep параметрі ретінде жаңа жолдың арнайы таңбасынан тұратын жолды жіберу керек: print(a, b, sep = '\n') Мәтіндік жолдардағы кері слэш символы одан кейін қандай символ жазылуына байланысты арнайы символды белгілеу болып табылады. Ең жиі жаңа жолдың символы қолданылады ‘\n’. Жолға кері слэш символын қою үшін оны екі рет қайталау керек: ‘\\’. Printf функциясының екінші пайдалы параметрі-параметр end, бұл print функциясында көрсетілген барлық мәндерді шығарғаннан кейін пайда болатынын көрсетеді. Әдепкі бойынша end параметрі '\n' тең, яғни келесі қорытынды жаңа жолдан шығады. Сондай-ақ, бұл параметрді түзетуге болады, мысалы, барлық қосымша шығарылған таңбаларды алып тастау үшін print функциясын осылайша шақыруға болады: print(a, b, c, sep = '', end = '') print(d) A, b, c, d айнымалы мәндері бос орынсыз бір жолға басылады. Python-да кортеждер мен жиындарға арналған тапсырмалар (ЕГЭ-27) 1-тапсырма - "Тетрис-онлайн" ойыны бойынша жарыстар» "Тетрис-онлайн" ойыны бойынша жарыстар келесі ережелер бойынша өткізіледі. Әр қатысушы ойын сайтында белгілі бір ойын атауымен тіркеледі. Қатысушылардың есімдері қайталанбайды. Чемпионат белгілі бір уақыт ішінде өткізіледі. Осы уақыттың кез-келген сәтінде кез-келген тіркелген қатысушы чемпионаттың веб-сайтына кіріп, сынақ ойынын бастай алады. Ойын аяқталғаннан кейін оның нәтижесі (жиналған ұпайлар саны) тіркеледі және хаттамаға енгізіледі. Қатысушылар бірнеше рет ойнауға құқылы. Бір қатысушының әрекет саны шектелмейді. қатысушының соңғы нәтижесі осы қатысушы үшін ең жақсы бір ойын бойынша анықталады. жарыста үздік нәтиже көрсеткен қатысушы жоғары орын алады. нәтижелер тең болған жағдайда бұрын үздік нәтиже көрсеткен қатысушы жоғары орын алады. Жарыс барысында хаттама толтырылады, оның әр жолында бір ойын сипатталады және қатысушының нәтижесі мен оның ойын атауы болады. Хаттама чемпионатты өткізу барысында нақты уақытта жасалады, сондықтан ондағы жолдар ойындар тәртібінде орналасқан: хаттамада жол неғұрлым ертерек болса, соғұрлым осы жолға сәйкес ойын ертерек аяқталады. хаттама мәліметтері бойынша жеңімпаз бен жүлдегерлерді анықтайтын тиімді, соның ішінде жад бойынша бағдарлама жазыңыз. Чемпионатқа кемінде үш ойыншы қатысатынына кепілдік беріледі. бағдарлама мәтінінің алдында есепті шешу алгоритмін қысқаша сипаттап, қолданылатын бағдарламалау тілі мен оның нұсқасын көрсетіңіз. Кіріс деректерінің сипаттамасы бірінші жолда n саны бар - хаттама жолдарының жалпы саны. Келесі N жолдарының әрқайсысында бос орын арқылы жазылған қатысушының нәтижесі (100 миллионнан аспайтын бүтін теріс емес сан) және ойын атауы (атауда бос орын болмайды) бар. Бастапқы деректердің жолдары хаттаманың жолдарына сәйкес келеді және хаттамадағыдай тәртіппен орналасқан. жарысқа қатысушылардың саны 3-тен кем болмайтынына кепілдік беріледі. Шығу сипаттамасы бағдарлама төменде келтірілген үлгі бойынша үздік үш ойыншының аты-жөні мен нәтижелерін көрсетуі керек. Кіру мысалы: 9 69485 Джек 95715 qwerty 95715 Alex 83647 m 197128 qwerty 95715 Jack 93289 Alex 95715 Алекс және 95715 m Жоғарыда келтірілген кіріс мысалдары үшін Шығыс мысалы: 1 орын. qwerty (197128) 2 орын. Алекс(95715) 3 орын. Jack (95715) Шешім: score_table = {} N = int(input()) for time in range(N): ball, name = input().split() ball = int(ball) if name in score_table: if ball > score_table[name][0]: score_table[name][0] = ball score_table[name][1] = time else: score_table[name] = [ball, time] scores = list(score_table.items()) def score_key(a): return a[1][0]*100000000 - a[1][1] scores.sort(key=score_key, reverse = True) for winner_index in 0, 1, 2: print(winner_index + 1, 'место.', scores[winner_index][0], end =' ') print('(', scores[winner_index][1][0], ')', sep='') 2-тапсырма-жүкті сақтау камерасына өткізу< / h4> бағдарламаға кіруге өз багажын сақтау камерасына түн ортасына дейін алдын ала белгілі уақытқа тапсырғысы келетін жолаушылар туралы мәліметтер беріледі. Бірінші жолда N жолаушылар саны хабарланады, ол 3 – тен кем емес, бірақ 1000-нан аспайды; екінші жолда-K сақтау камерасындағы ұяшықтар саны, ол 10-нан кем емес, бірақ 1000-нан аспайды. Мынадай N жолдардың әрқайсысының мынадай форматы болады: <тегі> <багажды тапсыру уақыты> <ұяшықты босату уақыты>, мұнда <тегі> – 20 сынамасыз таңбадан аспайтын жолдан тұратын жол; & lt;багажды тапсыру уақыты & gt;; - қос нүкте арқылы сағаттарға (00 – ден 23 – ке дейін-дәл 2 таңба) және минуттарға (00-ден 59-ға дейін-дәл 2 таңба) сәйкес келетін екі бүтін сан; & LT; ұяшықты босату уақыты & gt; бірдей пішімге ие. < тегі >және & lt; багажды тапсыру уақыты & gt;, сондай-ақ< багажды тапсыру уақыты >және< ұяшықты босату уақыты & gt; бір бос орынмен бөлінген. Босату уақыты тапсыру уақытынан көп. мәліметтер багажды тапсыру уақыты тәртібімен сұрыпталған. Сақтау камерасындағы жолаушылардың әрқайсысына ең аз нөмірі бар бос ұяшық бөлінеді. Егер багажды тапсыру кезінде бос ұяшықтар болмаса, онда жолаушы олардың біреуінің босатылуын күтпей кетеді. бағдарлама жазу керек (Borland Pascal 7.0 сияқты бағдарламалау тілінің пайдаланылған нұсқасын көрсетіңіз), ол әр жолаушы үшін берілген ұяшықтың нөмірін көрсетеді (келесі жолаушының деректерін енгізгеннен кейін бірден мүмкін болады). Егер жолаушыға ұяшық берілмесе, онда оның тегі басылмайды. кіріс деректерінің мысалы: 3 10 Иванов 09:45 12:00 Петров 10: 00 11:00 Сидоров 12:00 13: 12 бағдарламаның осы кіріс деректеріндегі жұмысының нәтижесі: Иванов 1 < br>Петров 2 < br>Сидоров 1 Решение: N = int(input()) K = int(input()) time_outs = [None for x in range(K)] for i in range(N): name, time_in, time_out = input().split() for yachejka in range(K): if time_outs[yachejka] < time_in or \ time_outs[yachejka] == None: print(name, yachejka) time_outs[yachejka] = time_out break 3-тапсырма-сөзбен жазылған сандарды тану Сіз сөзбен жазылған сандарды тану бағдарламасын жазуыңыз керек. Алдымен бағдарламаға кіру үшін 27 жолдан тұратын оқу блогы беріледі. Алғашқы 9 жолда "бір", "екі", ..., "тоғыз" деген сөздер, келесі 9 жолда "он бір", "он екі", ... "он тоғыз" деген сөздер, келесі 9 жолда "он", "жиырма", ..., "тоқсан"деген сөздер бар. Барлық сөздер жолдың басында және соңында қосымша бос орынсыз кішкентай орыс әріптерімен жазылады. Содан кейін бағдарламаға кіру үшін N мәні беріледі – өңделетін жазбалар саны. Келесі N жолдарында сөзбен жазылған сандар бар. Әр Сан орыс тілінде, кішкентай әріптермен, қатесіз жазылады. Егер Сан бірнеше сөзден тұрса, сөздердің арасында дәл бір бос орын бар, жолдың басында және соңында қосымша бос орын жоқ. 1 - ден 99-ға дейінгі аралықта болатын кіріс сандарының қосындысын анықтайтын тиімді бағдарлама жазыңыз.< br>сіздің бағдарламаңыз қолданатын жад мөлшері бастапқы тізімнің ұзындығына байланысты болмауы керек.< br > бағдарлама мәтінінің алдында сіз қолданатын мәселені шешу алгоритмін қысқаша сипаттаңыз. кіріс үлгісі (оқу блогы мысалда көрсетілген сокращениями): бір екі үш төрт бес алты жеті сегіз тоғыз он бір он екі он үш он төрт он бес он алты он жеті он сегіз он тоғыз он жиырма отыз қырық елу алпыс жетпіс сексен тоқсан 5 жиырма сегіз екі миллион он төрт жүз жиырма үш мың тоғыз жүз сексен төрт Жоғарыда келтірілген кіріс мысалына арналған Шығыс мысалы: 42 Шешім: Number = {} for num in range(1,10): Number[input()] = num for num in range(11,20): Number[input()] = num for num in range(10, 100, 10): Number[input()] = num N = int(input()) s = 0 for k in range(N): x = 0 num = input().split() for written_num in num: if written_num in Number: x += Number[written_num] else: x = 0 break s += x print(s) Python-да файлдармен және каталогтармен операциялар Файлды көшіру import shutil shutil.copyfile("C:\\mydoc.doc", "C:\\My Documents\\mydoc_2.doc") Файл атын өзгерту import os os.rename("/home/user/testfile.txt", "/home/user/test.txt") Файлды жою import os os.remove("/home/user/testfile.txt") Мәтіндік файлдан қажетті жолды оқу Белгілі бір нөмірдегі жолды оқу үшін Сіз параққа стандартты файлды оқуды да, linecache модулін де пайдалана аласыз: line = linecache.getline("C:\\boot.ini", 2) # or line = open("C:\\boot.ini").readlines()[1] Каталогтағы файлдарды санау for filename in os.listdir("../plugins"): print(filename) Маска каталогындағы файлдарды санау import glob for filename in glob.glob("../plugins/*.zip"): print(filename) Файлдарды салыстыру Файлдарды мазмұнмен де, олардың қасиеттерімен де салыстыруға болады, бұл әлдеқайда жылдам. Filecmp көмегімен екі нұсқа да мүмкін import filecmp similar = filecmp.cmp('C:\\file1.txt', 'C:\\file2.txt') print(similar) Питондағы математикалық функциялар Математикалық функциялармен жұмыс істеу үшін кітапхананы импорттау керекmath: import math Осыдан кейін, осы кітапханадағы функцияларға келесідей қол жеткізуге болады: math.функция_Атауы(…) |