Skip to content

Commit 6dd25ce

Browse files
authored
Merge branch 'master' into python-function
2 parents a81b17d + b9404c8 commit 6dd25ce

File tree

14 files changed

+201
-0
lines changed

14 files changed

+201
-0
lines changed

python-control-flow/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Control Flow Structures in Python
2+
3+
This folder provides the code examples for the Real Python tutorial [Control Flow Structures in Python](https://realpython.com/python-control-flow/).

python-control-flow/call_api.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import os
2+
import random
3+
4+
5+
def main():
6+
user_key = input("Please enter your API key: ")
7+
os.environ["API_KEY"] = user_key
8+
print(f"Temporary API key set: {os.environ['API_KEY']}")
9+
10+
try:
11+
run_api_call(os.environ["API_KEY"])
12+
except Exception as e:
13+
print(f"Error: {e}")
14+
else:
15+
print("API call completed successfully.")
16+
finally:
17+
del os.environ["API_KEY"]
18+
print("API key cleaned up!")
19+
20+
21+
def run_api_call(api_key):
22+
# Simulate an API call
23+
if random.choice([True, False]):
24+
print(f"Running API call with key: {api_key}")
25+
else:
26+
raise Exception("API call failed.")
27+
28+
29+
if __name__ == "__main__":
30+
main()
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
emails = [
2+
3+
4+
5+
6+
7+
8+
9+
]
10+
11+
# emails = [email.strip().lower() for email in emails]
12+
13+
emails = {email.strip().lower() for email in emails}

python-control-flow/continue.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
for i in range(5):
2+
print("Before continue")
3+
continue
4+
# print("After continue")
5+
6+
for i in range(5):
7+
print("Before break")
8+
break
9+
# print("After break")

python-control-flow/else_loop.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
numbers = [1, 3, 5, 9]
2+
3+
target = 7
4+
for number in numbers:
5+
if number == target:
6+
print("Found!")
7+
break
8+
else:
9+
print("Not found.")
10+
11+
target = 3
12+
for number in numbers:
13+
if number == target:
14+
print("Found!")
15+
break
16+
else:
17+
print("Not found.")

python-control-flow/fizz_buzz.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
def fizzbuzz_bad(number):
2+
if number % 3 == 0:
3+
return "fizz"
4+
elif number % 5 == 0:
5+
return "buzz"
6+
elif number % 15 == 0:
7+
return "fizz buzz"
8+
else:
9+
return number
10+
11+
12+
def fizzbuzz_good(number):
13+
if number % 15 == 0:
14+
return "fizz buzz"
15+
elif number % 3 == 0:
16+
return "fizz"
17+
elif number % 5 == 0:
18+
return "buzz"
19+
else:
20+
return number
21+
22+
23+
def fizzbuzz_better(number):
24+
if number % 15 == 0:
25+
return "fizz buzz"
26+
if number % 3 == 0:
27+
return "fizz"
28+
if number % 5 == 0:
29+
return "buzz"
30+
return number

python-control-flow/matching.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import csv
2+
import json
3+
from pathlib import Path
4+
5+
6+
def read_file(file_path):
7+
path = Path(file_path)
8+
if not path.exists():
9+
print(f"File not found: {file_path}")
10+
return None
11+
12+
with path.open(mode="r", encoding="utf-8") as file:
13+
match path.suffix.lower():
14+
case ".json":
15+
data = json.load(file)
16+
print("Loaded JSON data.")
17+
return data
18+
case ".csv":
19+
reader = csv.DictReader(file)
20+
data = list(reader)
21+
print("Loaded CSV data.")
22+
return data
23+
case _:
24+
print(f"Unsupported file type: {path.suffix}")
25+
return None
26+
27+
28+
for file_path in ["test.json", "test.csv", "test.toml", "test.txt"]:
29+
result = read_file(file_path)
30+
print(result)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from random import randint
2+
3+
LOW, HIGH = 1, 10
4+
5+
secret_number = randint(LOW, HIGH)
6+
clue = ""
7+
8+
# Game loop
9+
while True:
10+
guess = input(f"Guess a number between {LOW} and {HIGH} {clue} ")
11+
number = int(guess)
12+
if number > secret_number:
13+
clue = f"(less than {number})"
14+
elif number < secret_number:
15+
clue = f"(greater than {number})"
16+
else:
17+
break
18+
19+
print(f"You guessed it! The secret number is {number}")

python-control-flow/odd_even.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def odd_even(numbers):
2+
for number in numbers:
3+
if number % 2 == 0:
4+
yield f"{number} is even"
5+
else:
6+
yield f"{number} is odd"
7+
8+
9+
# Example usage
10+
numbers = [2, 2, 3, 11, 4, 5, 7, 4]
11+
for result in odd_even(numbers):
12+
print(result)

python-control-flow/speed.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import random
2+
3+
4+
def check_speed_limit(limit=80):
5+
speed = read_speedometer()
6+
if speed > limit:
7+
print("You are over the speed limit! Slow down.")
8+
9+
10+
def read_speedometer():
11+
speed = random.randint(30, 130)
12+
print(f"Speedometer reading: {speed} km/h")
13+
return speed
14+
15+
16+
check_speed_limit()

0 commit comments

Comments
 (0)