Pybites Logo

Bloodtypes

Level: Beginner (score: 2)

Check red blood cell compatibility between donor and recipient.

For simplicity, only eight basic types of blood are considered.

The input of blood type can be in the form of:

  • Bloodtype enumeration
  • An integer value between 0 and 7
  • Textual representation e.g. "0-", "B+", "AB+", ...

There are 8 basic blood types based on presence or absence of three antigens: A, B, and Rh-D.

  • 0- no antigens
  • 0+ Rh-D antigen
  • A- antigen A
  • A+ antigen A and Rh-D
  • B- antigen B
  • B+ antigen B and Rh-D
  • AB- antigen A and B
  • AB+ all 3 antigens (A, B, Rh-D)

General rule:

An individual who does not have a certain antigen cannot receive a blood from someone who has that antigen.

Blood group 0 individuals do not have A or B antigens. Therefore, a group 0 individual can receive blood only from a group 0 individual, but can donate blood to individual with types A, B, 0 or AB.

Blood group A individuals have the A antigen. Therefore, a group A individual can receive blood only from individuals of groups A or 0, and can donate blood to individuals with type A or AB.

Blood group B individuals have the B antigen. Therefore, a group B individual can receive blood only from individuals of groups B or 0, and can donate blood to individuals with type B or AB.

Blood group AB individuals have both A and B antigens. Therefore, an individual with type AB blood can receive blood from AB0, but cannot donate blood to any group other than AB.

Rh-D negative individuals do not have Rh-D antigen. Therefore, Rh-D negative can receive blood only from other Rh-D negative individuals.

Rh-D positive individuals have Rh-D antigen. Therefore, Rh-D positive individual can receive blood from both Rh-D negative or positive individuals.

Individuals with 0- are universal donors. Individuals with AB+ are universal recipients.

The rules described are general. In practice, there are over 340 different blood-group antigens.


Tasks Complete the function check_bt()

The function should check red blood cell compatibility between a donor and a recipient.

Return True for compatibility between the donor and the recipient, False otherwise.

If the input value is not a required type raise TypeError .

If the input value is not in the defined interval raise ValueError .