---
# System prepended metadata

title: Team_4

---

---
title: Team_4
---
# Team_4 Group Activity 
## week_2

1. First Name must be at least 3 characters, and no more than 30.
2. Last Name must be at least 3 characters, and no more than 50.
3. First Name can only contain letters (uppercase or lowercase), and dashes.
4. Last Name can only contain letters (uppercase or lowercase), spaces, and dashes.
5. Middle Name can be None, but if it's not none, it can be between 1 and 50 characters.
6. Middle Name cannot be longer than the first name, and it cannot be longer than the last name.

#### Edge cases
##### 1
- len(Firstname) < 3 => Return False
- len(Firstname) > 30 => Return False
##### 2
- len(Lastname) < 3 => Return False
- len(Lastname) > 50 => Return False

##### 3
- isalpha(First Name) == False => Return False

##### 4
- isalpha(Lastname) == False => Return False

##### 5
- len(MiddleName) == 0 => Return False
- len(MiddleName) > 50 => Return False

##### 6 
- len(Middlename) > len(firstname) or len(Middlename) > len(lastname)
    =>return false
    
    
## week_3
Each group in the tutorial should share a summary of their teams plans and progress in relation to:

- When (or if) they are running standups and whether they are synchronous or asynchronous
I guess we've been asynchronous?

- How often they meet, how they meet, and what the goals/outcomes of any meetings so far have been
we have 3 times meeting, but not by flock which is big suck.
- Have they or will they try pair programming
Haven't tried it yet. Not sure if we will try it?
Could probably use it, I'e written some frightening horrible code that could use some oversight
Could be useful to clarify implementations as welll

- Any challenges they've faced already after being in a group for a week
Having some programming be dependent on other code being written

Other group members (in other teams) are encouraged to ask questions and learn from what other groups are doing/saying.

## week_4
**Requirement Activity**
**Q**. What are attributes of good requirements?
**Q**. How could we clean this up into well described requirements? 
>"I want a burger with lots of pickles and mayo but I need to make sure that the mayo doesn't make the burger bun really wet. Oh, and it needs t obe warm, like, made less than 5 minutes ago warm but not so hot that I burn myself. I'm also not a big fan of plastic containers so if it could be in a paper bag that would be good. Actually, make that a brown paper bag, I like the colour of that"

Attributes of good requirements:
- Specific? 
- Easily Readable
- Clear
- Comprehensive
- Testable

Clean up requirements:
- One burger object in a brown paper bag?
    - material: paper
    - color: brown
- Specified burger has attributes:
    - created less than 5 minutes ago
    - not burning hot (If burger came in contact with human skin, person would make no audible sound)
        - datetime.datetime.strptime('01','%M') < create_time < datetime.datetime.strptime('05','%M') *dab*
    - includes a whole dill pickle
    - includes 2 tablespoons of mayonaisse (not enough to make the burger wet (or 1L if its a really big burger))
    - succulent meat (optional)



**Code Reviewing activity**
```python=
def check_password(password):
    
    if password == "password" or password == "iloveyou" or password == "123456":
        return "Horrible password"
    elif (len(password) >= 12 and any(x.isupper() for x in password) and
        any(x.isdigit() for x in password) and 
        any(x.islower() for x in password)):
        return "Strong password"
    elif len(password) >= 8 and any(x.isdigit() for x in password):
        return "Moderate password"
    else:
        return "Poor password"
   
if __name__ == '__main__':
    print(check_password("ihearttrimesters"))
    # What does this do? 

```

```python
def check_password(password):
    '''
    Takes in a password, and returns a string based on the strength of that password.

    The returned value should be:
    * "Strong password", if at least 12 characters, contains at least one number, at least one uppercase letter, at least one lowercase letter.
    * "Moderate password", if at least 8 characters, contains at least one number.
    * "Poor password", for anything else
    * "Horrible password", if the user enters "password", "iloveyou", or "123456"
    '''
    horrible_pw = ["password", "iloveyou", "123456"]
    digit = False
    upper = False

    if password in horrible_pw:
        return "Horrible Password"
    elif len(password) >= 8:
        for char in password:
            if char.isdigit():
                digit = True
            elif char.isupper():
                upper = True
        if digit and upper and len(password) >= 12:
            return "Strong Password"
        elif digit:
            return "Moderate Password"
    
    return "Poor Password"

if __name__ == '__main__':
    print(check_password("ihearttrimesters"))
    # What does this do?

```

Compare these two pieces of code from a pythonic, style, and readability point of view and choose which one you prefer. When you choose one, you must justify your reasonining in teh shared documnet your tutor gives you.