Forum tips

Writing in Hebrew
If you post a forum message in Hebrew (or English mixed with Hebrew), add[[div style="direction:rtl;"]]
before your message, and[[/div]]
after it (each on a separate line).

Including Python code
When including python code in your message, if you don't want to lose the indentation, and also benefit from syntax highlighting, add[[code type="python"]]
before the code, and[[/code]]
after it (each on a separate line).

BoldPut ** before and after the text: a**b**c —> abc

UnderlinePut __ before and after the text: a__b__c —> abc

Raw textPut @@ before and after the text, to ignore formatting: @@a**b**c@@ --> a**b**c

We prefer that you don't compare to the empty string, since it is a legal string and we asked not to compare between strings.
A good alternative is using Python's "not" operator: Empty sequences (strings, lists, tuples) are evaluated as False.

In 2c, can we use "global"? and if not, can we define a counter outside the recursion? I might be missing something, but defining a counter to keep track of our current location inside the recursion is not applicable ("counter = 0" will reset it every recurrence)

We prefer you don't use global in Q2 since it take some of the challenge out.
Instead think how you could use an envelope (Ma'atefet) function here to propagate additional information to the recursive calls.

Thanks for the help, Palarya, but this is not the case.
You *are* allowed to use any kind of loop in part 5 of Q2 (but not in any other part of this question).
It explicitly says, regarding char_first_index:

ממשו את הפונקציה מסעיף 4 … באמצעות לולאה יחידה

and then regarding any_char_present:

ממשו גם את הפונקציה מסעיף 3 ללא שימוש ברקורסיה

in the latter case we require that you use loops but not necessarily a single, simple loop.