ProgrammingSeptember 2, 20267 min read

PCAP Certification Guide 2026: Cost, Format, and the OOP Half Nobody Prepares For

Forty questions, 65 minutes, 70% to pass, from $295. PCAP is where Python certification stops being about syntax and starts being about modules, exceptions and classes - here is the part candidates underestimate.

  • 40Questions
  • 65 minTime
  • from $295Cost
  • 5 yearsValid
PCAP - Certified Associate in Python Programming exam question breakdown and practice drills

The PCAP - Certified Associate in Python Programming paper is 40 questions in 65 minutes and costs from $295. 70% of 40 questions means 28 correct - you can afford 12 mistakes. The exam is single-select, multiple-select and scenario items, so a multiple-select question you half-know is worth no marks at all.

What follows is the question split by domain, then five practice questions written to Python Institute’s published objectives, each with the reasoning for the right answer and for every wrong one. These are original practice items, not real exam content – the point is to show you how the questions are shaped and where the traps sit.

How the 40 questions split

Python Institute lists the exam sections but does not publish percentage weights for this exam, so nobody can tell you an exact question count per domain. The honest version is below: the sections, and what an even split across a 40-question paper would look like.

DomainWeightIf even
Modules and packagesnot published~8
Exceptionsnot published~8
Strings and string processingnot published~8
Object-oriented programmingnot published~8
Miscellaneous: generators, iterators, closures, file processingnot published~8

Be sceptical of precise weightings. Sites quoting exact percentages for this exam are inventing them. Python Institute has not published them, so revise the sections evenly and spend your extra time on whichever one you can least explain out loud.

Five practice questions

Answer each one before reading the key underneath it.

Question 1 · Object-oriented programming

Given a class hierarchy where class C inherits from B, and B inherits from A, and all three define a method run(), what determines which run() executes when a C instance calls it?

  • A The order the classes were defined in the file
  • B The method resolution order, which checks C, then B, then A
  • C The class with the most recently modified source file
  • D Python raises an error because run() is defined three times

Answer: B

Python resolves attributes through the method resolution order. For a simple chain C to B to A, the first run() found walking that order wins, so C's own definition executes.

Why the others fail

A Definition order in a file is irrelevant to attribute lookup on an instance.

C File modification time has no bearing on runtime behaviour.

D Overriding a method in a subclass is normal Python, not an error.

Question 2 · Exceptions

A try block raises ValueError. The code has except Exception first, then except ValueError. What happens?

  • A The ValueError branch runs because it is the more specific match
  • B The Exception branch runs because it is tested first and ValueError is a subclass of Exception
  • C Both branches run in order
  • D Python raises a SyntaxError for ordering the handlers incorrectly

Answer: B

Except clauses are tested top to bottom and the first matching one wins. ValueError is a subclass of Exception, so the broad handler catches it and the specific handler below is unreachable.

Why the others fail

A Python does not search for the most specific handler. It takes the first one that matches.

C Exactly one except branch runs for a given exception.

D The ordering is legal Python. It is a logic problem, not a syntax error - which is precisely why it appears on the exam.

Question 3 · Modules and packages

What does a file named __init__.py do in a directory?

  • A It runs automatically whenever any file in the directory is executed
  • B It marks the directory as a package and runs when the package is first imported
  • C It defines the constructor for every class in the directory
  • D It is required for Python to find any module in the directory

Answer: B

__init__.py identifies the directory as a package and its code executes on first import of that package, which is where packages commonly expose names from their submodules.

Why the others fail

A It runs on import of the package, not on execution of an unrelated file in the folder.

C Class constructors are __init__ methods inside a class. The similar name is a deliberate distractor.

D Namespace packages let Python import from directories without it, so it is not strictly required in modern Python.

Question 4 · Miscellaneous: generators, iterators, closures, file processing

What is the practical difference between a function that returns a list of a million values and a generator that yields them?

  • A The generator is faster because it uses compiled C internally
  • B The generator produces values one at a time on demand, so it does not hold all million in memory
  • C The list version cannot be iterated with a for loop
  • D There is no difference; yield is syntactic sugar for return

Answer: B

A generator produces each value lazily when requested, so memory holds one value and the generator's state rather than the whole sequence. That is the entire reason generators exist.

Why the others fail

A Generators are not implemented as a C fast path, and laziness is about memory rather than raw speed.

C A list is perfectly iterable with a for loop.

D yield suspends and resumes the function, which is fundamentally different from return ending it.

Question 5 · Strings and string processing

Which statement about Python strings is correct?

  • A Strings are mutable, so a method like upper() changes the original in place
  • B Strings are immutable, so upper() returns a new string and leaves the original unchanged
  • C Strings are mutable only when created with double quotes
  • D Strings become mutable once stored in a list

Answer: B

Python strings are immutable. Every string method returns a new object, which is why calling upper() without assigning the result is a common bug the exam likes to test.

Why the others fail

A No string method modifies the original object.

C Quote style has no effect on mutability; single and double quotes produce identical strings.

D Putting a string in a list stores a reference to the same immutable object.

What catches people out

  • PCAP-31-03 is the version in the field, with PCAP-31-04 announced for a Q3 2026 release. Check which version your voucher covers before you book.
  • The published price starts at $295 and the exam-plus-retake bundle at $345. For a 70% pass mark, the retake bundle is worth pricing rather than dismissing.
  • Multiple-select questions award nothing for a partly correct answer. If you are unsure how many options are right, that question is likely lost.
  • OOP and modules carry the paper. Candidates who prepared by writing scripts rather than classes and packages are the ones who fail.

What it really costs to pass

The sticker price is from $295, but that is the cost of passing first time. The number worth budgeting is different.

  • First attempt: from $295.
  • Resit: Python Institute sells an exam-plus-retake bundle from $345, which is $245 cheaper than buying two separate attempts. On a 70% pass mark that bundle is worth pricing.
  • Renewal: the credential lasts 5 years, so the honest cost is the fee divided across that period, plus whatever renewal Python Institute requires at the end of it.
  • Your time: 65 minutes in the chair, and realistically several weeks of preparation before it. That is the largest cost on this list and the only one you cannot pay to avoid.

The margin you are playing with. A 70% pass mark on 40 scored questions means about 28 correct answers, so you can afford in the region of 12 mistakes. Going in at exactly that level is how people fail on a bad day.

Who should sit it: there are no formal prerequisites, though PCEP is recommended first. Going in well under that bar is usually how people end up paying the fee twice.

How to prepare

A workable sequence for this exam, assuming you already work near the material:

  1. Read the official guide first. Everything on this page is secondary to what Python Institute publishes at the link in the sidebar, and guides get revised.
  2. Work the heaviest domain until you can teach it. Use the table above to decide which one that is.
  3. Practise under the clock. 65 minutes for 40 questions is roughly 98 seconds each. Knowing the material and being able to apply it at that pace are different skills.
  4. Review every wrong answer to the level of the distractor. Being able to say why the other three options fail is what turns a 60% into a pass.

Frequently asked questions

What is the passing score for PCAP?

70%. With 40 questions that is 28 correct answers, leaving room for 12 mistakes.

How much does the PCAP exam cost?

From $295 for the exam alone. Python Institute also publishes bundles from $345 with a retake and from $359 with a retake plus practice test.

How long is PCAP valid?

Five years, which is longer than most vendor certifications.

Do I need PCEP before taking PCAP?

No. PCEP is recommended rather than required, and you can sit PCAP directly if you already work in Python.

Sources

Every figure on this page comes from the certifying body rather than a third-party summary:

Checked September 2, 2026. Formats and fees change – confirm against Python Institute before you pay for anything.