# %%

with open('poeme.txt') as f:
    i = 1
    line = f.readline()
    print(i, ':', line.strip())
    while line != "":
        i+=1
        line = f.readline()
        print(i, ':', line.strip())

# %%

i = 1
with open('poeme.txt') as f:
    line = f.readline()
    while line != "":
        line = f.readline()
        if (line.strip() != ""):
            i+=1
print(i)
# %%

def count_r_in_line(line):
    count_r = 0
    for letter in line:
        if letter == "r":
            count_r += 1
    return count_r

nb_of_r = 0
with open('poeme.txt') as f:
    line = f.readline()
    nb_of_r_in_line = count_r_in_line(line)
    nb_of_r += nb_of_r_in_line
    while line != "":
        line = f.readline()
        nb_of_r_in_line = count_r_in_line(line)
        nb_of_r += nb_of_r_in_line

print(nb_of_r)

# %%

with open('poeme.txt', mode="a") as f:
    print("\nVictor Hugo", file=f)

# %%

with open('poeme.txt', mode="a") as f:
    f.write("\nVictor Hugo")
print("This is done")

# %%

with open('poeme.txt', mode='r') as f:
    with open('poeme_lower.txt', mode="w") as lower_f:
        line = f.readline()
        lower_f.write(line.lower())
        while line != "":
            line = f.readline()
            lower_f.write(line.lower())

# %%
def manage_passwords(username, password, filename):
    with open(filename, mode='a') as f:
        f.write(f"{username}:{password}\n")

manage_passwords("Alice", "password", "password.txt")
manage_passwords("Bob", "password", "password.txt")
manage_passwords("Chloe", "password", "password.txt")
# %%
import hashlib

def manage_passwords(username, password, filename):
    hashed_password = hashlib.sha256(password.encode('UTF-8')).hexdigest() 
    
    with open(filename, mode='a') as f:
        f.write(f"{username}:{hashed_password}\n")

manage_passwords("Alice", "password", "password.txt")
manage_passwords("Bob", "password", "password.txt")
manage_passwords("Chloe", "password", "password.txt")
# %%

def is_username_defined(line, # string
                         username): # string
    return line.split(":")[0] == username

def manage_passwords(username, password, filename):
    hashed_password = hashlib.sha256(password.encode('UTF-8')).hexdigest() 
    
    with open(filename, mode='r') as f:
        line = f.readline()
        username_defined = is_username_defined(line, username)
        while line != "":
            line = f.readline()
            username_defined = username_defined or is_username_defined(line, username)

        if username_defined:
            return(0) # 0 means failure

    with open(filename, mode='a') as f:
        f.write(f"{username}:{hashed_password}\n")

    return(1) # 1 means success

if (manage_passwords("Alice", "password", "password.txt") == 1):
    print("Success")
else:
    print("Failure")

# %%

name = "Alice"
sentence = f"Hello my name is {name}."

print(sentence)

# %%

def manage_passwords(username, password, filename):
    hashed_password = hashlib.sha256(password.encode('UTF-8')).hexdigest() 

    with open(filename, mode='r') as f:
        lines = f.readlines()

        line_to_change = None
        for i in range(len(lines)):
            line = lines[i]
            if is_username_defined(line, username):
                line_to_change = i

        if line_to_change is not None:
            change_pwd = input("The password is already defined, do you want to change it? [y/n]")
            if (change_pwd == "n"):
                return(0)
            else:
                lines[line_to_change] = f"{username}:{hashed_password}\n"

        else: # username not found
            lines.append(f"{username}:{hashed_password}\n")

        with open(filename, mode='w') as fw:
            fw.writelines(lines)

    return(1) # 1 means success

if (manage_passwords("Alice", "0101", "password.txt") == 1):
    print("Success")
else:
    print("Failure")
# %%
