Guide to High School Computer Science
  • šŸ’»Introduction
    • windows & Python Development
    • macOS & Python Development
    • Visual Studio Code Settings
    • Set up Github
    • Author Page
  • 🧠Prerequisite Skills
    • Keyboard Typing
    • Files & Directories
    • Use of Command Line
    • Git & GitHub
    • Markdown
    • Starting Your Python Project
  • šŸPython Programming
    • šŸŽPython Basics
      • What is Python?
      • Procedural Programming & Programming Paradigms
      • String Formatting
      • Data Types
      • Input & Output to Console
      • Working with Numbers
      • Useful Built-in Functions
      • Math & Random Module
      • Boolean Data Object
      • Comparison, Logical, and Membership Operators
      • If Statements
      • Binary Decisions
      • Multiple Decisions
      • Nested Conditions
      • [EXTRA] Bitwise Operators
      • [EXTRA] Python Style Guide
    • ā®ļøIterations
      • Introduction to While Loops
      • Infinite Loop
      • Controlling Your While Loops
      • Introduction to For Loops
      • For Loops w/ Numeric Sequences
      • For Loops w/ Strings & Lists
      • Iterable Functions w/ For Loops
    • šŸ“¦Collections
      • Strings
        • String Basics
        • String Indexing
        • String Slicing
        • String Operators & Functions
        • Basic String Methods
        • String Methods Extended
        • String Methods Document
      • Tuples & Lists
        • Tuples
        • List Basics
        • List are Mutable
        • Adding Items to a List
        • Removing Items from a List
        • Search & Reverse a List
        • List Comprehension
        • List Methods Document
      • Sets
      • Dictionary
      • How to Store Multiple Data Items
    • šŸ’”Defining Functions
      • Functions
      • print() vs return
      • Pre-determined Arguments
      • Nested Functions
      • Map & Filter
      • [Extra] Dynamic Arguments
    • šŸ’¾File I/O
      • How to Save Text to an External File
      • Reading CSV in Python
      • Reading JSON in Python
    • šŸ”ØBasic Python Projects
      • Basic Calculator
        • Improving the calculator
        • Exercise Set 1
        • Exercise Set 2
        • šŸ’ŽStreamlit Application #1
      • Basic Password Generator
        • Exercise Set 3
        • Exercises Related to Math
        • šŸ’ŽStreamlit Application #2
      • A To-Do Task List
    • ā³Introduction to Algorithmic Thinking
      • Big-O Notation
      • Basic Algorithms
        • Linear Search
        • Binary Search
        • Basic Sorting Algorithms
      • Recursion
      • Brute Force Algorithms
      • Greedy Algorithm
        • Time on Task (CCC 2013 J4)
        • Dijkstra’s Algorithm
      • Divide and Conquer
        • Merge Sort
      • Dynamic Programming
    • 🤯Object Oriented Programming
      • Class & Objects (Definitions)
      • OOP in Python
      • Encapsulation
      • Polymorphism
      • Inheritance & Overriding
      • Override Magic Methods
      • Case Study: 2D Vectors
      • Case Study: Deck of Cards
      • Exercise
      • Abstract Data Types
      • Case Study: Static 1D Array From Java
    • Competitive Programming
      • Is This Sum Possible?
        • Is the dataset sorted?
        • Searching for a value
        • Determine if the difference between an integer from the array and the target value exists
        • Sorting Algorithms
        • Using Two Pointers
      • Two Sum - LeetCode
        • Generate all possible pairs of values
        • Subtract each value from the target, see if the difference exists in the list
      • Longest Common Prefix - LeetCode
        • Compare all possible prefixes
        • Create the longest common prefix with the direct neighbour
      • Length of Last Word - LeetCode
        • Compare all possible prefixes
      • Where can I go from one point to another?
      • Sample Outline
    • IB Recipe Book
  • šŸ’¾Python & Databases
    • Intro to Databases & Data Modeling
      • Common Data Types in SQL
      • Introduction to ERDs
      • Primary Keys and Foreign Keys
      • Database Normalization
    • What is SQL?
      • Getting Started
      • SELECT Queries
        • Selection with Conditions
        • Selection with Fuzziness
        • Selection and Sorting in Order
        • Selection without Duplicates
        • Selection with Limited Number of Outputs
      • AGGREGATE Queries
        • Counting Rows
        • Sum, Average, Min/Max Queries
        • Working with Aggregate Queries
        • Power of using Groups
        • Exercise
      • Interacting with Multiple Table
      • Inserting Data
      • External Resource
  • ā˜•Java Essentials
    • Basics
      • Starting Java
      • Data & Variables
      • Handling User Inputs & Type Conversion
      • Arithmetic
      • IPO Model
      • Basic Built-in Methods
      • Exercise Questions
    • Conditionals
      • Boolean Operators
      • Compare Strings
      • If Statements
      • If Else Statements
      • Making Multiple Decisions
      • Using Switch
      • Flowchart Symbols
      • Exercise Questions
    • Iterations
      • While Loops
      • For Loop
      • Exercises
    • Java Type Casting
    • Strings
      • Common String Practices
      • String Formatting
      • Java Special Characters
    • Collection
      • Arrays
      • For Each Loop
      • ArrayList
      • Exercise Questions
    • Static Methods
      • (Aside) Clearing your Console
    • Randomness in Java
    • Delayed Output in Java
    • Java Output Formatting
    • Java Style Guide
  • šŸ› ļøJavaScript Programming
    • Our Programming Editor & Workflow
      • Hello, world!
      • Commenting & Variables
      • Data in JavaScript
      • Operators
      • String Formatting
      • Getting User Input
    • JavaScript Exercise Set 1
    • Making Decisions
      • Comparing Values
      • Combining Boolean Comparisons
      • Creating Branches
    • JavaScript Exercise Set 2
    • While Loops
      • Infinite While Loop
      • While Loops and Numbers
      • While Loops and Flags
      • While loops w/ Strings
    • JavaScript Exercise Set 3
    • Subprograms & Functions
      • Creating a Function in JavaScript
      • Function with Input and Assignable Output
    • JavaScript Exercise Set 4
  • šŸ’¾Topics in CS
    • Computer Environments & Systems
      • Computer Components
        • In-depth Explanations
      • File Maintenance
      • Computer & Safety
      • Software Development
      • Bits & Binary
    • Careers related to Computer Science
    • Postsecondary Opportunities
Powered by GitBook
On this page
  • Our Application Preview
  • Explanation
  • Code
  1. Python Programming
  2. Basic Python Projects
  3. Basic Password Generator

Streamlit Application #2

PreviousExercises Related to MathNextA To-Do Task List

Last updated 8 months ago

Our Application Preview

Explanation

External Dependencies

import streamlit as st
import random
  • Streamlit is imported to create the web interface.

  • Random is imported to generate random characters for the password.

Initializations

lowercase = list(range(97, 123))
uppercase = list(range(65, 91))
digits = list(range(48, 58))
special = list(range(33, 48)) + list(range(58,65)) + list(range(91,97)) + list(range(123,127))
  • These lists represent ASCII values for different character sets:

    • lowercase: ASCII values for ā€˜a’ to ā€˜z’.

    • uppercase: ASCII values for ā€˜A’ to ā€˜Z’.

    • digits: ASCII values for ā€˜0’ to ā€˜9’.

    • special: ASCII values for special characters like !, @, #, etc.

Streamlit App

st.header("Password Maker")
st.write("This application will generate a password based on the desired criteria.")
  • Sets up the header and description for the app.

User Inputs

size = st.number_input(label="Enter the length of the password. (Minimum 8)", min_value=8, step=1, key="pwd_size")
has_upper = st.toggle(label="Contain Uppercase letters?", key="pwd_upper")
has_digit = st.toggle(label="Contain numbers?", key="pwd_digit")
has_special = st.toggle(label="Contain Special Characters?", key="pwd_special")
make_pwd = st.button("Generate Password")
  • size: Input for the length of the password (minimum 8 characters).

  • has_upper: Toggle for including uppercase letters.

  • has_digit: Toggle for including digits.

  • has_special: Toggle for including special characters.

  • make_pwd: Button to generate the password.

Password Generation

if make_pwd and size >= 8:
    if has_upper:
        options.extend(uppercase)
    if has_digit:
        options.extend(digits)
    if has_special:
        options.extend(special)
    
    while len(password) <= size:
        password += chr(random.choice(options))
    
    st.write(f"The generated password is: {password}")
    options = lowercase.copy()
  • Condition: Checks if the button is clicked and the size is at least 8.

  • Options Update: Adds selected character sets to the options list.

  • Password Loop: Generates a password by randomly selecting characters from the options list until it reaches the desired length.

  • Display: Shows the generated password.

  • Reset: Resets the options list for reuse.

Code

# Password Creator in Streamlit

# External Dependencies
import streamlit as st

# Internal Imports
import random

# Initializations
# ASCII Table Decimal to Characters
lowercase = list(range(97, 123))
uppercase = list(range(65, 91))
digits = list(range(48, 58))
special = list(range(33, 48)) + list(range(58,65)) + list(range(91,97)) + list(range(123,127))

# initialize empty password
password = "" # Empty String
options = lowercase.copy()

# Streamlit App starts here
st.header("Password Maker")
st.write("This application will generate a password based on the desired criteria.")

size = st.number_input(
    label="Enter the length of the password. (Minimum 8)",
    min_value=8,
    step=1,
    key="pwd_size"
)

has_upper = st.toggle(
    label="Contain Uppercase letters?",
    key="pwd_upper"
)

has_digit = st.toggle(
    label="Contain numbers?",
    key="pwd_digit"
)

has_special = st.toggle(
    label="Contain Special Characters?",
    key="pwd_special"
)

make_pwd = st.button("Generate Password")

if make_pwd and size >= 8:
    # This means the the button has been clicked.

    # Step 1: Based on the criteria, add in the options
    if has_upper:
        options.extend(uppercase)
    
    if has_digit:
        options.extend(digits)
    
    if has_special:
        options.extend(special)
    
    # Step 2: Loop until the password variable is long as the given length
    while len(password) <= size:
        password += chr(random.choice(options))
    
    # Step 3: Display Password
    st.write(f"The generated password is: {password}")

    # Step 4: Reset options list back to just lowercase for reusability
    options = lowercase.copy()

AI-generated code. Review and use carefully. .

šŸ
šŸ”Ø
šŸ’Ž
More info on FAQ
Screenshot of our app