Solve Python 3 Question Homework: Ear Infection Diagnosis

  • Context: Python 
  • Thread starter Thread starter DustyGeneral
  • Start date Start date
  • Tags Tags
    Python
Click For Summary

Discussion Overview

The discussion revolves around creating a Python program for diagnosing ear infections based on user-reported symptoms. Participants explore how to structure the program to minimize the number of questions asked while still arriving at an accurate diagnosis. The focus is on programming logic and efficiency in question sequencing.

Discussion Character

  • Homework-related
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant describes their current implementation, which asks all four questions regardless of previous answers, and seeks advice on how to optimize this process.
  • Another participant suggests using a loop to ask questions and evaluate answers dynamically, arguing that this approach would provide greater flexibility.
  • A different viewpoint emphasizes that a loop may be unnecessary for this problem, advocating for a structured series of questions that minimizes inquiries based on the order of symptoms.
  • One participant notes the importance of asking questions in a sequence that effectively narrows down the possible diagnoses, suggesting that the first question should ideally eliminate multiple possibilities.

Areas of Agreement / Disagreement

Participants express differing opinions on the best approach to structuring the questioning process. There is no consensus on whether to use a loop or a fixed sequence of questions, indicating ongoing debate about the most efficient method for this task.

Contextual Notes

Some participants mention issues related to code formatting and indentation, which may affect readability and functionality, but do not resolve these concerns.

DustyGeneral
Messages
10
Reaction score
0

Homework Statement



You're going to create some medical diagnoses software. You are going to ask the user if they have a fever, a rash, if they have a stuffy nose, and if their ear hurts, and give one of the following responses:
  1. Don't have a fever and don't have a stuffy nose: Hypochondriac
  2. Don't have a fever and have a stuffy nose: Head Cold
  3. Have a fever, don't have a rash, and ear hurts: Ear Infection
  4. Have a fever, don't have a rash, and ear doesn't hurt: Flu
  5. Have a fever and have a rash: Measles
Sample output:
Do you have a fever? (y/n): y
Do you have a rash? (y/n): n
Does your ear hurt? (y/n): y
Diagnosis: You have an ear infection.

Note that the user should only ever have to enter lower case y or lower case n. Deviation from this will result in loss of points. The user will only ever enter 'y' or 'n', and you should ASK THE MINIMUM NUMBER OF QUESTIONS REQUIRED.

The Attempt at a Solution


[/B]
I have the program written so it asks all four questions (fever, rash, stuffy nose, and ear pain) all of the time and makes he diagnosis. For example for the sample output above in part 1 mine would say:

Do you have a fever? (y/n): y
Do you have a rash? (y/n): n
Does your ear hurt? (y/n): y
Do you have a stuffy nose? (y/n): (Input doesn't matter)
Diagnosis: You have an ear infection.

How would I go about telling it that if it has enough info to make a diagnosis to not ask any more questions. For example, if you put "y" for fever and "y" for rash it won't ask for ear pain and stuffy nose?

Here is what I have:def main ():

#User answers questions
fever = input("Do you have a fever? (y/n): ")
rash = input("Do you have a rash? (y/n): ")
ear = input("Does your ear hurt? (y/n): ")
nose = input("Do you have a stuffy nose? (y/n): ")

#Replies to the user about medical issues
if (fever == "n" and nose == "n"):
print("Diagnosis: You are a hypochondriac.")
elif (fever == "n" and nose =="y"):
print("Diagnosis: You have a head cold.")
elif (fever == "y" and rash == "n" and ear == "y"):
print("Diagnosis: You have an ear infection.")
elif (fever == "y" and rash == "n" and ear == "n"):
print("Diagnosis: You have the flu.")
elif (fever == "y" and rash == "y"):
print("Diagnosis: You have measles.")

main ()

Thanks in advance for your input.
 
Technology news on Phys.org
Sorry about the spacing and conventions. In the program window all of the spacing and and indentations are correct.
 
You should ask questions in the loop and after reading each single input you have to test the answers against known list of symptoms.

I feel like using simple system of == like you are trying to do goes against the flexibility of the Python and its built in data types (and makes later modifications a nightmare).

Best way of formatting code is with code tags. Sorry, can't show you how, I am getting Java errors ATM. System is still not 100% stable after the move.
 
Borek said:
You should ask questions in the loop and after reading each single input you have to test the answers against known list of symptoms.
That's a bit overkill for this simple problem. It's easy to hand-construct a series of questions and responses that minimizes the number of questions to be asked. There's no need for a loop.

DustyGeneral, you need to ask questions in an order such that each question is pertinent to remaining possibilities. The order in which you ask questions is important. The optimal first question will do the best job of reducing the number of possible diagnoses by 1/2. With five diagnoses, you can't quite do that; the best you can do is eliminate two or three of the diagnoses. On the other hand, making stuffy nose the first question is a bad idea. This will eliminate at most one possibility.
 

Similar threads

  • · Replies 15 ·
Replies
15
Views
2K
  • · Replies 18 ·
Replies
18
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 17 ·
Replies
17
Views
4K
  • · Replies 17 ·
Replies
17
Views
3K
Replies
2
Views
3K
  • · Replies 89 ·
3
Replies
89
Views
6K
  • · Replies 7 ·
Replies
7
Views
4K
  • · Replies 12 ·
Replies
12
Views
3K