Range Over Built in Miranda

Based on the instructions and the provided Go code, I will translate the example into Python.


**Range over Built-in Types**

`range` iterates over elements in a variety of built-in data structures. Let's see how to use `range` with some of the data structures we've already learned.

Here we use `range` to sum the numbers in a list. Arrays work like this too.

```python
nums = [2, 3, 4]
sum = 0
for num in nums:
    sum += num
print("sum:", sum)

range on lists provides both the index and value for each entry. Above we didn’t need the index, so we ignored it. Sometimes we actually want the indexes though.

for i, num in enumerate(nums):
    if num == 3:
        print("index:", i)

range on dictionaries iterates over key/value pairs.

kvs = {"a": "apple", "b": "banana"}
for k, v in kvs.items():
    print(f"{k} -> {v}")

range can also iterate over just the keys of a dictionary.

for k in kvs.keys():
    print("key:", k)

range on strings iterates over Unicode code points. The first value is the starting byte index of the rune and the second the rune itself.

for i, c in enumerate("go"):
    print(i, ord(c))

To run the script, save it in a file (for example, range_over_built_in_types.py) and execute it with Python.

$ python range_over_built_in_types.py
sum: 9
index: 1
a -> apple
b -> banana
key: a
key: b
0 103
1 111

Next example: Pointers.