Мундариҷа[Пинҳон кардан][Намоиш]
Ин лексия муҳим хоҳад буд, агар шумо бо барномаҳои калон сарукор дошта бошед.
Шумо идора кардани хатогиҳоро тавассути блокҳои истисноӣ ва истифодаи шарҳҳо дар Python меомӯзед.
истисноҳо
Мо мефаҳмем, ки чӣ гуна хатогиҳоро дар барномаҳои Python идора кунем. Биёед аз навиштани як барномаи хурд оғоз кунем, то синну соли корбарро аз терминал ба даст орем.
age = int(input('Age'))
print(age)
Биёед онро иҷро кунем.
Акнун, ба рамзи баромади ин барнома нигаред. Рамзи баромадан 0 маънои онро дорад, ки барномаи мо бомуваффақият қатъ шудааст ва ҳеҷ гуна хатогӣ вуҷуд надошт. Аммо агар мо ин барномаро бори дигар иҷро кунем ва ба ҷои ворид кардани арзиши ададӣ, сатр ворид кунем?
Мо хатои арзишро бо паёми ӯ ба даст меорем "беэътибор literal for int() with base 10" Аслан он чизе ки ин паём ба мо мегӯяд, ин сатри "qwe" рақами дурусти хонагиро дар бар намегирад, ки онро ба бутун табдил додан мумкин аст. Акнун, ба рамзи баромади ин барнома нигаред. Рамзи баромади 1 маънои онро дорад, ки рамзи баромади мо суқут кардааст, аз ин рӯ 0 ҳамеша муваффақиятро дорад ва ҳар чизе, ки 0 маънои суқутро дорад. Дар барномасозӣ, мо ин гуна хаторо ҳамчун истисно истинод мекунем.
Ҳамчун як барномасози хуби python, шумо бояд ин вазъиятро пешбинӣ кунед. Шумо намехоҳед, ки тамоми барномаи шумо танҳо аз сабаби он ки корбар арзиши беэътибор ворид кардааст, ба садама дучор шавад. Пас, ба ҷои он ки ба садама дучор шавад, шумо бояд вазъиятро ҳал кунед ва паёми хатогии дурустро чоп кунед. Ин аст он чизе ки ман дар ин лексия ба шумо нишон медиҳам.
Дар Python, мо сохторе дорем, ки номида мешавад try except
барои мубориза бо ҳолатҳои хато истифода мешавад.
try:
age = int(input('Age'))
print(age)
Ин ду сатри код як қисми мо мебошанд try:
блок. илова мекунем except
пас аз он бо навъи хатогие, ки мо интизорем, блок кунед.
except ValueError:
print('Invalid Value')
Он ҳоло сатри "Арзиши беэътибор" -ро дар сурати хатогии арзиш бармегардонад.
Биёед як намуди дигари хаторо бо тағир додани барномаи қаблӣ тафтиш кунем.
try:
age = int(input('Age'))
income = 20000
risk = income / age
print(age)
except ValueError:
print('Invalid Value')
Ҳоло, агар мо ин барномаро иҷро кунем ва '0' -ро дар синну сол ворид кунем, арзиши ададӣ. Аз ин рӯ, аз ҷиҳати техникӣ, мо набояд ягон истисноро ба даст орем.
Биёед онро иҷро кунем.
Нигоҳ кунед. Барномаи мо шикаст хӯрд ва мо "Хатои тақсимоти сифр" кардем, зеро мо ададро ба 0 тақсим карда наметавонем. Бори дигар ба рамзи баромад нигаред. Мо ин гуна хато ё ин гуна истисноро бо ин ба ҷуз блок дарёфт карда натавонистем.
Ин ба истиснои блок танҳо истисноҳои хатои арзиши навъиро нигоҳ медорад ва ба мо барои коркарди хатои тақсимоти сифр блоки нав лозим мешавад. Биёед барномаро мувофиқи он тағир диҳем.
try:
age = int(input('Age'))
income = 20000
risk = income / age
print(age)
except ZeroDivisionError:
print('Age cannot be 0')
except ValueError:
print('Invalid Value')
Мушкилот ҳал шуд!
- Хатои синтаксис
- Хатогии чопӣ
- Хатогии ном
- Индексатор
- Хатои арзиш
- Хатои сифрдивизион
- Хатои аттрибутӣ
- Хатогии вақти иҷро
- Хатогии калидӣ
- Хотиракунанда
- Хатои тасдиқ
- Хатогии воридшавӣ
- Хато
- Хатогии шинокунанда
- Хатогии изофабор
- Хатои мантиқӣ
- Хатогии система
- Хатогии огоҳӣ
- Осер
- Хато
- Истинод
- Unicodeerror
- Хатогии арифметикӣ
- Хатои уникодедекодер
- Хатои коди Юникод
- Хатои Unicodetranslateer
- Хатогиҳои вақти корӣ
Ҳамчун барномасоз, шумо бояд аз ҳама истисноҳо дар барномаи худ огоҳ бошед ва шумо бояд онҳоро мувофиқи он ҳал кунед.
Назарҳо
Ҳоло, мо дар бораи шарҳҳо дар python сӯҳбат мекунем. Мо шарҳҳоро барои илова кардани қайдҳо ё шарҳҳо ба барномаҳои худ истифода мебарем, то хонданро беҳтар созем ва ба касе, ки коди моро мехонад, паём расонем.
Шарҳҳоро дар барнома бо истифода аз аломати # навиштан мумкин аст. Ҳар чизе ки шумо пас аз # менависед, аз ҷониби компилятори Python нодида гирифта мешавад ва иҷро намешавад. Шумо метавонед шарҳҳоро дар сатрҳои алоҳида ва инчунин пас аз як сатри код илова кунед.
Бо ин шарҳҳо, мо метавонем чизеро дар бораи рамзи худ шарҳ диҳем, мо метавонем онҳоро ҳамчун ёдраскуниҳо барои ислоҳ кардани чизҳо ё тоза кардани чизҳо истифода барем ё мо метавонем онҳоро барои муошират бо дигар таҳиягарон, ки коди моро мехонанд ё фаҳмонем, ки чаро ин кодро дар роҳи муайян. Инҳо ҳолатҳои хуби истифода барои истифодаи шарҳҳо мебошанд. мо инчунин метавонем дар болои сатрҳои гуногун шарҳҳо дошта бошем. Ҳар як сатр бояд бо # аломати нав оғоз шавад. Ҳоло як чизе, ки шумо бояд ҳангоми истифодаи шарҳҳо худдорӣ кунед, шарҳ додани он аст, ки код чӣ кор мекунад.
Ин аст як мисоли шарҳи бад:
Ин як шарҳи бад аст, зеро он ба ман чизи аёнро мегӯяд. Ин ба ман мегӯяд, ки сатри навбатӣ «Офтоб дар Ғарб ғуруб мекунад» -ро чоп мекунад. Ҳоло мушкили ин шарҳ дар он аст, ки агар шумо ба ин ҷо биёед ва Ғарбро ба Шарқ иваз кунед, ба ҷуз ин ки муфассал ва такрорӣ будан, ин шарҳ кӯҳна мешавад. Ҳамин тавр, ҳар дафъае, ки мо рамзи худро навсозӣ мекунем, мо бояд баргардем ва шарҳи мувофиқро тағир диҳем.
Хулоса, шарҳҳои худро истифода баред, то ба ҷои он ки чӣ тавр ва чаро ҷавоб диҳед.
Ин аст як мисоли шарҳи хуб:
Дар шарҳи аввал, ман ба худ хотиррасон мекунам, ки ман бояд пеш аз ба итмом расонидани барнома ин арзиши даромадро навсозӣ кунам ва арзиши дуввум ба таҳиягароне, ки коди маро мехонанд, мегӯяд, ки ҳама хатогиҳо дар ин барнома коркард намешаванд.
Хулоса, шумо бояд аз шарҳҳои зиёдатӣ канорагирӣ кунед ва шарҳҳои шумо бояд ба рамзи шумо арзиши каме илова кунанд.
Ба натиҷа расидан!
Истисноҳо ва шарҳҳо ду ҷанбаи барномасозӣ мебошанд, ки аксар вақт нодида гирифта мешаванд ва аҳамияти онҳо одатан нодида гирифта мешавад.
Барбод додани барномаи шумо тақрибан ба қадре бад аст, ки дар он ҷое, ки лозим аст, шарҳ надодан дар бораи рамзи шумо. Дар лекцияи навбатй ба синфхо ва конструкторхо бахшида мешавад.
Дин ва мазҳаб