I used one of the templates Paul Pearson created and I wanted to change the "true/false" answers to "yes/no" answers. I got the pop-ups to change to yes/no, but when the correct answers display I see True/false. I tried to change the first part "True"=>"Yes" to "Yes"=>"Yes" and other similar changes, but this did not work. The code is copied below.

DOCUMENT();

loadMacros(

"PGstandard.pl",

"MathObjects.pl",

"PGchoicemacros.pl",

"PGgraders.pl",

);

TEXT(beginproblem());

###########################

# Setup

Context("Numeric");

$den = random(2,9,1);

$c = Compute("4*$den");

# Create and use pop up lists

$tf = new_select_list();

$tf->rf_print_q(~~&pop_up_list_print_q);

# Choices presented to students

$tf->ra_pop_up_list( [

"No answer" => "?",

"True" => "Yes",

"False" => "No",

]);

# Questions and answers

Context()->texStrings;

$tf -> qa (

"You need to divide \($c\) cookies among \($den\) people.",

"False",

"You need to find \(\frac{1}{$den}\) of \($c\) ounces.",

"False",

"You need to find how many \(\frac{1}{$den}\) doses there are in \($c\) ounces.",

"True",

"A sale advertises \(\frac{1}{$den}\) off a \($c\) dollar purchase.",

"False",

"You purchased \( $c\) yards of material. Each kit requires \(\frac{1}{$den}\) yard of material. You need to determine how many kits you can make.",

"True",

"You have \($c\) flowers and you need to determine how many bouquets of \($den\) flowers you can make.",

"False",

"If you do not pay your bill in by the due date you will be charged a fee of \(\frac{1}{$den}\) of the bill which totals \($c\) dollars.",

"False",

);

Context()->normalStrings;

# How many questions to use

$tf->choose(5);

###########################

# Main text

Context()->texStrings;

BEGIN_TEXT

Which of the following describes a situation where division by \(\frac{1}{$den)\) would be needed?

$BR

\{ $tf -> print_q() \}

END_TEXT

Context()->normalStrings;

############################

# Answer evaluation

$showPartialCorrectAnswers = 0;

#

# Incremental grader

#

install_problem_grader(~~&custom_problem_grader_fluid);

$ENV{'grader_numright'} = [2,4,6];

$ENV{'grader_scores'} = [0.3,0.6,1];

$ENV{'grader_message'} = "You can earn " .

"30% partial credit for 2 - 3 correct answers, and " .

"60% partial credit for 4 - 5 correct answers.";

#

# All or nothing grader

#

# install_problem_grader(~~&std_problem_grader);

ANS( str_cmp( $tf->ra_correct_ans() ) );

############################

# Solution

Context()->texStrings;

BEGIN_SOLUTION

${PAR}SOLUTION:${PAR}

You could put an explanation here.

END_SOLUTION

Context()->normalStrings;

COMMENT("MathObject version.");

ENDDOCUMENT();

### changing true/false to yes/no

by Mary Shepherd -
In reply to Mary Shepherd
Saturday, 15 June 2013, 12:06 AM

### Re: changing true/false to yes/no

by Paul Pearson -
Hi Mary,

You will need to change all occurrences of "True" to "Yes" and "False" to "No". You likely had changed them in the $tf->ra_pop_up_list() but not in the $tf -> qa() part.

Also, since you used $tf->choose(5); instead of $tf->choose(6); as was originally written, you will want to change the custom grader at the bottom of the problem:

$ENV{'grader_numright'} = [2,4,5]; # changed [2,4,6] to [2,4,5] since there are 5 problems total

$ENV{'grader_scores'} = [0.3,0.6,1];

$ENV{'grader_message'} = "You can earn " .

"30% partial credit for 2 - 3 correct answers, and " .

"60% partial credit for 4 correct answers."; # changed '4 - 5' to '4'

This custom grader will give 0% for 0-1 correct answers, 30% for 2-3 correct answers, and 60% for 4 correct answers, and 100% for 5 correct answers. If you forget to change [2,4,6] to [2,4,5], then the maximum possible score is 60%.

I also caught a mismatched parentheses error: { ) needed to be changed to { }.

If you want to be able to see which lines in your code are different from my code, I would recommend using a utility such as WinMerge, which is free and easily found using google. WinMerge will allow you to open two files at the same time and view them side-by-side. Also, scrolling will be in sync for both files and lines that are different will be highlighted.

I've provided a working example below.

Have a good evening!

Paul Pearson

#####################################

DOCUMENT();

loadMacros(

"PGstandard.pl",

"MathObjects.pl",

"PGchoicemacros.pl",

"PGgraders.pl",

);

TEXT(beginproblem());

###########################

# Setup

Context("Numeric");

$den = random(2,9,1);

$c = Compute("4*$den");

# Create and use pop up lists

$tf = new_select_list();

$tf->rf_print_q(~~&pop_up_list_print_q);

# Choices presented to students

$tf->ra_pop_up_list( [

"No answer" => "?",

"Yes" => "Yes",

"No" => "No",

]);

# Questions and answers

Context()->texStrings;

$tf -> qa (

"You need to divide \($c\) cookies among \($den\) people.",

"No",

"You need to find \(\frac{1}{$den}\) of \($c\) ounces.",

"No",

"You need to find how many \(\frac{1}{$den}\) doses there are in \($c\) ounces.",

"Yes",

"A sale advertises \(\frac{1}{$den}\) off a \($c\) dollar purchase.",

"No",

"You purchased \( $c\) yards of material. Each kit requires \(\frac{1}{$den}\) yard of material. You need to determine how many kits you can make.",

"Yes",

"You have \($c\) flowers and you need to determine how many bouquets of \($den\) flowers you can make.",

"No",

"If you do not pay your bill in by the due date you will be charged a fee of \(\frac{1}{$den}\) of the bill which totals \($c\) dollars.",

"No",

);

Context()->normalStrings;

# How many questions to use

$tf->choose(5);

###########################

# Main text

Context()->texStrings;

BEGIN_TEXT

Which of the following describes a situation where division by \(\frac{1}{$den}\) would be needed?

$BR

\{ $tf -> print_q() \}

END_TEXT

Context()->normalStrings;

############################

# Answer evaluation

$showPartialCorrectAnswers = 0;

#

# Incremental grader

#

install_problem_grader(~~&custom_problem_grader_fluid);

$ENV{'grader_numright'} = [2,4,5];

$ENV{'grader_scores'} = [0.3,0.6,1];

$ENV{'grader_message'} = "You can earn " .

"30% partial credit for 2 - 3 correct answers, and " .

"60% partial credit for 4 correct answers.";

#

# All or nothing grader

#

# install_problem_grader(~~&std_problem_grader);

ANS( str_cmp( $tf->ra_correct_ans() ) );

############################

# Solution

Context()->texStrings;

BEGIN_SOLUTION

${PAR}SOLUTION:${PAR}

You could put an explanation here.

END_SOLUTION

Context()->normalStrings;

COMMENT("MathObject version.");

ENDDOCUMENT();

You will need to change all occurrences of "True" to "Yes" and "False" to "No". You likely had changed them in the $tf->ra_pop_up_list() but not in the $tf -> qa() part.

Also, since you used $tf->choose(5); instead of $tf->choose(6); as was originally written, you will want to change the custom grader at the bottom of the problem:

$ENV{'grader_numright'} = [2,4,5]; # changed [2,4,6] to [2,4,5] since there are 5 problems total

$ENV{'grader_scores'} = [0.3,0.6,1];

$ENV{'grader_message'} = "You can earn " .

"30% partial credit for 2 - 3 correct answers, and " .

"60% partial credit for 4 correct answers."; # changed '4 - 5' to '4'

This custom grader will give 0% for 0-1 correct answers, 30% for 2-3 correct answers, and 60% for 4 correct answers, and 100% for 5 correct answers. If you forget to change [2,4,6] to [2,4,5], then the maximum possible score is 60%.

I also caught a mismatched parentheses error: { ) needed to be changed to { }.

If you want to be able to see which lines in your code are different from my code, I would recommend using a utility such as WinMerge, which is free and easily found using google. WinMerge will allow you to open two files at the same time and view them side-by-side. Also, scrolling will be in sync for both files and lines that are different will be highlighted.

I've provided a working example below.

Have a good evening!

Paul Pearson

#####################################

DOCUMENT();

loadMacros(

"PGstandard.pl",

"MathObjects.pl",

"PGchoicemacros.pl",

"PGgraders.pl",

);

TEXT(beginproblem());

###########################

# Setup

Context("Numeric");

$den = random(2,9,1);

$c = Compute("4*$den");

# Create and use pop up lists

$tf = new_select_list();

$tf->rf_print_q(~~&pop_up_list_print_q);

# Choices presented to students

$tf->ra_pop_up_list( [

"No answer" => "?",

"Yes" => "Yes",

"No" => "No",

]);

# Questions and answers

Context()->texStrings;

$tf -> qa (

"You need to divide \($c\) cookies among \($den\) people.",

"No",

"You need to find \(\frac{1}{$den}\) of \($c\) ounces.",

"No",

"You need to find how many \(\frac{1}{$den}\) doses there are in \($c\) ounces.",

"Yes",

"A sale advertises \(\frac{1}{$den}\) off a \($c\) dollar purchase.",

"No",

"You purchased \( $c\) yards of material. Each kit requires \(\frac{1}{$den}\) yard of material. You need to determine how many kits you can make.",

"Yes",

"You have \($c\) flowers and you need to determine how many bouquets of \($den\) flowers you can make.",

"No",

"If you do not pay your bill in by the due date you will be charged a fee of \(\frac{1}{$den}\) of the bill which totals \($c\) dollars.",

"No",

);

Context()->normalStrings;

# How many questions to use

$tf->choose(5);

###########################

# Main text

Context()->texStrings;

BEGIN_TEXT

Which of the following describes a situation where division by \(\frac{1}{$den}\) would be needed?

$BR

\{ $tf -> print_q() \}

END_TEXT

Context()->normalStrings;

############################

# Answer evaluation

$showPartialCorrectAnswers = 0;

#

# Incremental grader

#

install_problem_grader(~~&custom_problem_grader_fluid);

$ENV{'grader_numright'} = [2,4,5];

$ENV{'grader_scores'} = [0.3,0.6,1];

$ENV{'grader_message'} = "You can earn " .

"30% partial credit for 2 - 3 correct answers, and " .

"60% partial credit for 4 correct answers.";

#

# All or nothing grader

#

# install_problem_grader(~~&std_problem_grader);

ANS( str_cmp( $tf->ra_correct_ans() ) );

############################

# Solution

Context()->texStrings;

BEGIN_SOLUTION

${PAR}SOLUTION:${PAR}

You could put an explanation here.

END_SOLUTION

Context()->normalStrings;

COMMENT("MathObject version.");

ENDDOCUMENT();