Hints
Hints can be provided to the learner via the hints() method. Whether
or not the learner is allowed to request hints and how many depends on the
configuration. Multiple hints can be given using
Python’s yield statement.
import random
class Gauss(pyrope.Exercise):
def parameters(self):
n = random.randint(10, 99)
return dict(n=n, thesum=n * (n + 1) / 2)
def problem(self):
return pyrope.Problem(
r'$1+2+3+\cdots+<<n:latex>>=$ <<thesum_>>',
thesum_=pyrope.Natural()
)
def hints(self, n):
yield '''
The order of terms in a sum does not matter.
Find a clever one.
'''
yield '''
Sum in pairs: First and last, second and second-to-last,
and so on.
'''
yield 'How many pairs do you have?'
if n % 2 == 0:
yield f'You have {n // 2} pairs.'
else:
yield f'After {n // 2} pairs a single number is left: {(n + 1) // 2}.'