Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions src/random_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,43 @@
# Output:
# The random number is: 4
#
import random
import sys


def random_positive_int() -> int:
return random.randint(0, sys.maxsize)


# maybe limited_random... is a better name?
def random_limited_positive_int(upper_limit):
assert isinstance(upper_limit, int)
try:
assert upper_limit > 0 and upper_limit <= sys.maxsize
except AssertionError as e:
raise ValueError("input a positive non-zero number") from e
return random.randint(0, upper_limit)


def main():
print(random_positive_int())

user_input = None
while user_input is None:
try:
user_input = int(
input(
"Inserisci un limite superiore INTERO e POSITIVO per il range di generazione: "
)
)
print(random_limited_positive_int(user_input))
except KeyboardInterrupt:
print(" ")
sys.exit(1)
except Exception as e:
print(e)
user_input = None


if __name__ == "__main__":
main()
21 changes: 21 additions & 0 deletions tests/test_random_number.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from src.random_number import random_positive_int, random_limited_positive_int
import sys
import pytest


def test_random_number():
random_int = random_positive_int()
assert isinstance(random_int, int)
assert random_int >= 0
assert random_int <= sys.maxsize


@pytest.mark.parametrize("upper_limit", [0, -3, sys.maxsize, "a", 4.5, 5000, 1])
def test_random_limited(upper_limit):
try:
random_limited_int = random_limited_positive_int(upper_limit)
assert isinstance(random_limited_int, int)
assert random_limited_int >= 0 and random_limited_int <= upper_limit

except Exception:
assert True
Loading