---
# System prepended metadata

title: Team_1

---

---
title: Team_1
---
# Team_1 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.


lenFirst = len(firstName)
lenMid = len(middleName)
lenLast = len(lastName)

#### 1
> lenFirst < 3 and lenFirst > 30 == False
> lenFirst >= 3 and lenFirst <= 30 == True

#### 2
> lenLast < 3 and lenLast >= 50 == False
> lenLast >= 3 and lenLast <= 30 == True

#### 3
> isalpha(firstName) == True 

#### 4
> isalpha(lastName) == True

#### 5
> lenMid == 0 == True or
> lenMid != 0 and lenMid >= 1 and lenMid <= 50 == True

#### 6
> lenMid <= lenFirst == True
> lenMid <= lenLast == True



## 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
    @AMY
    
- How often they meet, how they meet, and what the goals/outcomes of any meetings so far have been
    - 3 times in the past week, due to restrictions to physical meet ups, we have been meeting over WeChat/ Microsoft Teams,
        - flock is bad. my team mates keep dropping (there is always something wrong on logging in it)
    - goals/outcomes of previous meetings:
        - task assignment
        - assignment discussion
        - uncertainty clarification
        - talk about future courses
        - team bonding

- Have they or will they try pair programming
    - no we have not tried pair programming, we might be trying it over the weekend
    

- Any challenges they've faced already after being in a group for a week
    - no?! 
        - harmonious
        - happy teamwork
    
Other group members (in other teams) are encouraged to ask questions and learn from what other groups are doing/saying.
    - efficient work

## week_4
**Requirement Activity**
**Q**. What are attributes of good requirements?

    >>> detailed infomation
    >>> clear statements
    >>> testable 
    
**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 to be 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"

    >>> food materials: Extra pickles, mayo -> mayo : doesn't make the burger bun really wet
    >>> temperature: Keep Warm, but not so hot
    >>> bag：Paper bag > plastic containers
    >>> bag_colour: Brown
    
    >>> Burger should be served with 3 pickles and mayo which doesn't make the burger bun really wet.
    >>> Burger should be warm, less than 5 minutes ago warm, but not so hot.
    >>> Burger should be in a paper bag.
    >>> Burger should be in a brown paper bag.



**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? 
    # it prints "Poor password"
```

```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"))
    
    # prints "Poor Password"
        # password not in horrible password
        # length >= 8 but does not contain digits

```

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.





