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.
 
Thread 'Star maps using Blender'
Blender just recently dropped a new version, 4.5(with 5.0 on the horizon), and within it was a new feature for which I immediately thought of a use for. The new feature was a .csv importer for Geometry nodes. Geometry nodes are a method of modelling that uses a node tree to create 3D models which offers more flexibility than straight modeling does. The .csv importer node allows you to bring in a .csv file and use the data in it to control aspects of your model. So for example, if you...
I tried a web search "the loss of programming ", and found an article saying that all aspects of writing, developing, and testing software programs will one day all be handled through artificial intelligence. One must wonder then, who is responsible. WHO is responsible for any problems, bugs, deficiencies, or whatever malfunctions which the programs make their users endure? Things may work wrong however the "wrong" happens. AI needs to fix the problems for the users. Any way to...
I am trying to run an .ipynb file and have installed Miniconda as well as created an environment as such -conda create -n <env_name> python=3.7 ipykernel jupyter I am assuming this is successful as I can activate this environment via the anaconda prompt and following command -conda activate <env_name> Then I downloaded and installed VS code and I am trying to edit an .ipynb file. I want to select a kernel, via VS Code but when I press the button on the upper right corner I am greeted...
Back
Top