Python Solve Python 3 Question Homework: Ear Infection Diagnosis

  • Thread starter Thread starter DustyGeneral
  • Start date Start date
  • Tags Tags
    Python
AI Thread Summary
The discussion centers on creating a medical diagnosis software that efficiently determines a user's condition based on their symptoms. The software should ask a minimum number of questions: whether the user has a fever, rash, stuffy nose, and ear pain, and provide a diagnosis based on their responses. A key point raised is the need to optimize the questioning process to avoid unnecessary inquiries once enough information is gathered for a diagnosis. The initial program structure presented asks all questions regardless of previous answers, which is inefficient. Suggestions include using a loop to ask questions and evaluate responses dynamically, ensuring that each question asked is relevant to narrowing down the possible diagnoses. The order of questions is crucial; starting with the most diagnostic question can significantly reduce the number of potential conditions. The discussion emphasizes that a well-structured approach can streamline the diagnosis process while maintaining flexibility for future modifications.
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.
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top