顯示具有 Python 標籤的文章。 顯示所有文章
顯示具有 Python 標籤的文章。 顯示所有文章

2025年8月4日 星期一

Python Unit 3 Lesson 4: Loop control flow 的 Challenge: Infectious diseases

 import virus


population = 10000

infected = 1

can_catch_virus = population - infected

contacts_per_day = 10

newly_recovered = 0


for day in range(90): # day 從 0 開始,到 89。如果要從 1 開始到 90,就要寫成 range(1,91)。

    # Infected chickens spread the virus to those who haven't already had it.

    if day > 13: # 因為 day 是從 0 起算,所以 13 代表 day 14。

        contacts_per_day = 3

    newly_infected = virus.spread(

        infected, can_catch_virus, population, contacts_per_day

    )


    newly_recovered = virus.recover(infected)

    infected = infected + newly_infected - newly_recovered

    can_catch_virus = can_catch_virus - newly_infected


    print(str(infected) + " chickens infected.")


    if infected == 0 :

        break


print("----------")

print(str(population - can_catch_virus) + " chickens caught the virus.")


2025年7月21日 星期一

Python Unit 3 Lesson 3 - For loops - Challenge: Waiting times

 Challenge

import random


num_cashiers = 1

num_cooks = 2


waiting_to_order = 0

waiting_for_food = 0

num_customers_served = 0


for minutes in range(300):

    # Customers arrive every minute and line up to order.

    waiting_to_order = waiting_to_order + random.randint(0, 6)

    

    # Each cashier can take up to three orders per minute.

    new_orders = min(num_cashiers * 3, waiting_to_order)

    

    # After ordering, customers wait for their food to be made.

    waiting_to_order = waiting_to_order - new_orders

    waiting_for_food = waiting_for_food + new_orders


    # Each cook can make up to 1 food per minute.

    new_food = min(num_cooks*1, waiting_for_food)

    num_customers_served = num_customers_served + new_food


    # After providing food, 

    # the customer moves out of the waiting_for_food state.

    waiting_for_food = waiting_for_food - new_food

    

    print(str(waiting_to_order) + " customers waiting to order.")

    print(str(waiting_for_food) + " customers waiting for food.")

print("The total number of customers served is " + \

      str(num_customers_served) + "!")

Bonus

import random

num_cashiers = 2
num_cooks = 5

waiting_to_order = 0
waiting_for_food = 0
num_customers_served = 0

# from 12-2pm the customer arrival rate ever minute = (3, 6)
for minutes in range(120):
    # Customers arrive every minute and line up to order.
    waiting_to_order = waiting_to_order + random.randint(3, 6)
    
    # Each cashier can take up to three orders per minute.
    new_orders = min(num_cashiers * 3, waiting_to_order)
    
    # After ordering, customers wait for their food to be made.
    waiting_to_order = waiting_to_order - new_orders
    waiting_for_food = waiting_for_food + new_orders

    # Each cook can make up to 1 food per minute.
    new_food = min(num_cooks*1, waiting_for_food)
    num_customers_served = num_customers_served + new_food

    # After providing food, 
    # the customer moves out of the waiting_for_food state.
    waiting_for_food = waiting_for_food - new_food
    
    print(str(waiting_to_order) + " customers waiting to order.")
    print(str(waiting_for_food) + " customers waiting for food.")

# Rearrange the staff
num_cashiers = 1
num_cooks = 2
waiting_to_order = 0
waiting_for_food = 0
print("The total number of customers served is " + \
      str(num_customers_served) + "!")
print("----------------------------")
print("----------------------------")
print("----------------------------")
# from 2-5pm the customer arrival rate ever minute = (0, 3)
for minutes in range(180):
    # Customers arrive every minute and line up to order.
    waiting_to_order = waiting_to_order + random.randint(0, 3)
    
    # Each cashier can take up to three orders per minute.
    new_orders = min(num_cashiers * 3, waiting_to_order)
    
    # After ordering, customers wait for their food to be made.
    waiting_to_order = waiting_to_order - new_orders
    waiting_for_food = waiting_for_food + new_orders

    # Each cook can make up to 1 food per minute.
    new_food = min(num_cooks*1, waiting_for_food)
    num_customers_served = num_customers_served + new_food

    # After providing food, 
    # the customer moves out of the waiting_for_food state.
    waiting_for_food = waiting_for_food - new_food
    
    print(str(waiting_to_order) + " customers waiting to order.")
    print(str(waiting_for_food) + " customers waiting for food.")

print("The total number of customers served is " + \
      str(num_customers_served) + "!")

Python Unit 3 Lesson 2 - While loops - Challenge: Dice rolls

Step 1, 2 

import random

dice_total = 0

i = 1 # for counting while loop

while i <= 10:

    # Roll two six-sided dice.

    first_die = random.randint(1, 6)

    second_die = random.randint(1, 6)

    dice_sum = first_die + second_die

    print("You rolled a " + str(dice_sum) + "!")

    dice_total = dice_total + dice_sum

    i = i + 1

dice_average = dice_total / 10

print("The average of dice roll is " + str(dice_average))

Step 3

import random

experiment_times = int(input("How many times do you want \
to repeat the experiment? "))
dice_total = 0
i = 1 # for counting while loop
while i <= experiment_times:
    # Roll two six-sided dice.
    first_die = random.randint(1, 6)
    second_die = random.randint(1, 6)

    dice_sum = first_die + second_die
    print("You rolled a " + str(dice_sum) + "!")
    dice_total = dice_total + dice_sum
    i = i + 1

dice_average = dice_total / experiment_times
print("The average of dice roll for " + \
      str(experiment_times) + " times is " + str(dice_average))

2021年2月10日 星期三

The Python Tutorial

  •  1. Whetting Your Appetite
  • 2. Using the Python Interpreter
    • 2.1. Invoking the Interpreter
      • 2.1.1. Argument Passing
      • 2.1.2. Interactive Mode
    • 2.2. The Interpreter and Its Environment
      • 2.2.1. Source Code Encoding
  • 3. An Informal Introduction to Python
    • 3.1. Using Python as a Calculator
      • 3.1.1. Numbers
      • 3.1.2. Strings
      • 3.1.3. Lists
    • 3.2. First Steps Towards Programming
  • 4. More Control Flow Tools
    • 4.1. if Statements
    • 4.2. for Statements
    • 4.3. The range() Function
    • 4.4. break and continue Statements, and else Clauses on Loops
    • 4.5. pass Statements
    • 4.6. Defining Functions
    • 4.7. More on Defining Functions
      • 4.7.1. Default Argument Values
      • 4.7.2. Keyword Arguments
      • 4.7.3. Special parameters
        • 4.7.3.1. Positional-or-Keyword Arguments
        • 4.7.3.2. Positional-Only Parameters
        • 4.7.3.3. Keyword-Only Arguments
        • 4.7.3.4. Function Examples
        • 4.7.3.5. Recap
      • 4.7.4. Arbitrary Argument Lists
      • 4.7.5. Unpacking Argument Lists
      • 4.7.6. Lambda Expressions
      • 4.7.7. Documentation Strings
      • 4.7.8. Function Annotations
    • 4.8. Intermezzo: Coding Style
  • 5. Data Structures
    • 5.1. More on Lists
      • 5.1.1. Using Lists as Stacks
      • 5.1.2. Using Lists as Queues
      • 5.1.3. List Comprehensions
      • 5.1.4. Nested List Comprehensions
    • 5.2. The del statement
    • 5.3. Tuples and Sequences
    • 5.4. Sets
    • 5.5. Dictionaries
    • 5.6. Looping Techniques
    • 5.7. More on Conditions
    • 5.8. Comparing Sequences and Other Types
  • 6. Modules
    • 6.1. More on Modules
      • 6.1.1. Executing modules as scripts
      • 6.1.2. The Module Search Path
      • 6.1.3. “Compiled” Python files
    • 6.2. Standard Modules
    • 6.3. The dir() Function
    • 6.4. Packages
    • 6.4.1. Importing * From a Package
    • 6.4.2. Intra-package References
    • 6.4.3. Packages in Multiple Directories
  • 7. Input and Output
    • 7.1. Fancier Output Formatting
      • 7.1.1. Formatted String Literals
      • 7.1.2. The String format() Method
      • 7.1.3. Manual String Formatting
      • 7.1.4. Old string formatting
    • 7.2. Reading and Writing Files
      • 7.2.1. Methods of File Objects
      • 7.2.2. Saving structured data with json
  • 8. Errors and Exceptions
    • 8.1. Syntax Errors
    • 8.2. Exceptions
    • 8.3. Handling Exceptions
    • 8.4. Raising Exceptions
    • 8.5. Exception Chaining
    • 8.6. User-defined Exceptions
    • 8.7. Defining Clean-up Actions
    • 8.8. Predefined Clean-up Actions
  • 9. Classes
    • 9.1. A Word About Names and Objects
    • 9.2. Python Scopes and Namespaces
      • 9.2.1. Scopes and Namespaces Example
    • 9.3. A First Look at Classes
      • 9.3.1. Class Definition Syntax
      • 9.3.2. Class Objects
      • 9.3.3. Instance Objects
      • 9.3.4. Method Objects
      • 9.3.5. Class and Instance Variables
    • 9.4. Random Remarks
    • 9.5. Inheritance
      • 9.5.1. Multiple Inheritance
    • 9.6. Private Variables
    • 9.7. Odds and Ends
    • 9.8. Iterators
    • 9.9. Generators
    • 9.10. Generator Expressions
  • 10. Brief Tour of the Standard Library
    • 10.1. Operating System Interface
    • 10.2. File Wildcards
    • 10.3. Command Line Arguments
    • 10.4. Error Output Redirection and Program Termination
    • 10.5. String Pattern Matching
    • 10.6. Mathematics
    • 10.7. Internet Access
    • 10.8. Dates and Times
    • 10.9. Data Compression
    • 10.10. Performance Measurement
    • 10.11. Quality Control
    • 10.12. Batteries Included
  • 11. Brief Tour of the Standard Library — Part II
    • 11.1. Output Formatting
    • 11.2. Templating
    • 11.3. Working with Binary Data Record Layouts
    • 11.4. Multi-threading
    • 11.5. Logging
    • 11.6. Weak References
    • 11.7. Tools for Working with Lists
    • 11.8. Decimal Floating Point Arithmetic
  • 12. Virtual Environments and Packages
    • 12.1. Introduction
    • 12.2. Creating Virtual Environments
    • 12.3. Managing Packages with pip
  • 13. What Now?
  • 14. Interactive Input Editing and History Substitution
    • 14.1. Tab Completion and History Editing
    • 14.2. Alternatives to the Interactive Interpreter
  • 15. Floating Point Arithmetic: Issues and Limitations
    • 15.1. Representation Error
  • 16. Appendix
    • 16.1. Interactive Mode
      • 16.1.1. Error Handling
      • 16.1.2. Executable Python Scripts
      • 16.1.3. The Interactive Startup File
      • 16.1.4. The Customization Modules

Python 3.9.1 documentation