Create a Program to Create Rectangles with Ints in Python Assignment Solution

July 09, 2024
Dr. Nicole
🇬🇧 United Kingdom
Python
Dr. Nicole, an accomplished professional with 6 years of experience, obtained her Ph.D. from Princeton University. Having completed over 400 Python assignments, she brings a wealth of expertise and insight to the table. With a focus on clarity and precision, Dr. Nicole is committed to providing comprehensive support to students seeking assistance with their Python projects.
Key Topics
• Instructions
• Requirements and Specifications
Tip of the day
News

Instructions

Objective

Write a program to create rectangles with ints in python language.

Requirements and Specifications

You are each given the number of rows and the number of columns of a rectangle, the starting number at the upper left of the rectangle - see the PowerPoint, “num rows, num columns, starting num in upper left” posted in the project folder. The numbers are all integers.

The project is to use the turtle module to draw a rectangle of consecutive ints, with the given starting number in the upper left of the rectangle and an ending number in the lower right of the rectangle.

In each row, numbers increase sequentially from left to right, then continue on at the beginning of the next row. Both the number of rows and the number of columns of the rectangle are odd ints.

1. [5%] Write code to count the number of prime numbers from the smallest int (in the upper left) to the largest int (in the lower right). Print out the number of primes as a labeled output.
2. [5%] Write code to count the number of twin prime numbers from the smallest int (in the upper left) to the largest int (in the lower right). Print out the number of pairs of twin primes as a labeled output. [TWIN PRIMES is a pair of prime numbers that differ by 2. The first several twin primes are: 3, 5; 5, 7; 11, 13; 17, 19.]
3. [5%] Write code to count the number of primes per row in the rectangle. Print this out. Check that the sum of the number of primes in each row is the same as the number of primes.
4. [5%] Write code to count the number of primes per column in the rectangle. Print this out. Check that the sum of the number of primes in each column is the same as the number of primes.
5. [10%] A prime gap is the difference between two successive prime numbers. For your range of ints, find:
1. the average prime gap
2. the maximum prime gap
3. the most common gaps (there may be more than one most common gap). I recommend using dictionaries – see chapter 20. What is the most number of occurrences of these more common gaps? [Hint: make a dictionary whose keys are gaps and whose corresponding values are the number of times the corresponding gap occurs. Find the largest gap occurrence number using dict.values(). Then find the gap or gaps that have that max number of occurrences.]
6. [40%] Write code using the turtle module to draw a rectangle of consecutive ints from the int in the upper left to the int in the lower right. If the int is one of a pair of twin primes, the twin primes should be red. If the int is a prime (but not a twin prime), the int should be blue. Otherwise, the int is black.
7. [10%] Write your code using appropriate helper functions – you must use helper functions. This will make your code easier to write and easier to explain.
8. [10%] Every function must have a docstring just below the function header.

Source Code

```import turtle UL = 4275 numRows = 31 numCols = 59 # Calcualte the final number to be shown BR = UL + numRows*numCols - 1 # number at bottom right corner # Define a function to know if a number is prime def isPrime(n): if n%2 == 0 and n != 2: # if the number is pair but it is now 2, then it is not prime return False for i in range(2, int(n/2)+1): if n%i == 0: return False return True """ QUESTION 1 """ # All prime numbers are odd, so check only for odd numbers between UL and BR primes = 0 for i in range(UL, BR+1): if i%2 != 0 and isPrime(i): primes += 1 print("Number of primes within range is", primes) """ QUESTION 2 """ print() def getTwinPrimes(a, b): """ This function get all twin primes between a and b, with a gap of 2 :param a: Initial number :param b: Final number :return: Set with twin primes """ twin_primes = list() for i in range(a, b- 1): pair = (i, i + 2) if pair[0] % 2 != 0 and pair[1] % 2 != 0 and isPrime(pair[0]) and isPrime(pair[1]): twin_primes.append(pair[0]) twin_primes.append(pair[1]) return set(twin_primes) # Now, get all twin primes twin_primes = getTwinPrimes(UL, BR) print("Number of twin primes within range is", len(twin_primes)) """ QUESTION 3 """ print() n = UL sum_primes = 0 row_primes = list() for row in range(numRows): row_primes_n = 0 sum_row = 0 for col in range(numCols): if n%2 != 0 and isPrime(n): row_primes_n += 1 n += 1 row_primes.append(row_primes_n) sum_primes += row_primes_n print("The number of primes in each row is:") print(row_primes) print("As a check, the total number of primes is", sum_primes) """ ```

QUESTION 4

```""" print() n = UL sum_primes = 0 column_primes = list() for col in range(numCols): col_primes = 0 sum_col = 0 for row in range(numRows): if n%2 != 0 and isPrime(n): col_primes += 1 n += 1 column_primes.append(col_primes) sum_primes += col_primes print("The number of primes in each column is:") print(column_primes) print("As a check, the total number of primes is", sum_primes) """ ```

QUESTION 5

```""" print() avg_gap = 0.0 max_gap = 0.0 gaps = dict() # to count the most frequent gap gaps_lst = list() n_gaps = 0 # count number of gaps prev = None for n in range(UL, BR+1): if n%2 != 0 and isPrime(n): if prev != None: gap = abs(n-prev) if gap > max_gap: max_gap = gap avg_gap += gap # append gap gaps_lst.append(gap) # store in dict gaps[gap] = gaps.get(gap, 0) + 1 # increment counter n_gaps += 1 prev = n avg_gap = avg_gap / n_gaps # Print print("Average prime gap is", avg_gap) print("Max prime gap is", max_gap) print("Prime gaps:") print(gaps) # Sort dict by values gaps = {k: v for k, v in sorted(gaps.items(), key = lambda item: item[1], reverse = True)} gaps = list(gaps.items()) print("Most common gap is", gaps[0][1]) print(f"The corresponding gaps are [{gaps[0][0]}]") """ ```

QUESTION 6

```""" # Create turtle screen turtle.tracer(0,0) turtle.speed("fastest") wn = turtle.Screen() # Calculate width and height size = 20 HEIGHT = (numRows + 1)*size WIDTH = (numCols + 1)*size # set size wn.setup(WIDTH, HEIGHT) wn.bgcolor("white") wn.title("Numbers grid") turtle.pencolor("black") turtle.pensize(3) def drawSquare(pen, x, y, size): """ This function draws a square starting at position (x,y) with size :param pen: Turtle object :param x: X-position :param y: Y-position :param size: Size of square :return: None """ pen.penup() pen.goto(x,y) pen.pendown() pen.pencolor("black") for i in range(4): pen.forward(size) pen.right(90) def drawNumber(pen, n, x, y, pen_color): """ This function draws a number n at positions (x,y) :param pen: Turtle object :param n: number to be drawn :param x: X-position :param y: Y-position :param pen_color: font color :return: None """ pen.penup() pen.goto(x+3, y-10) pen.pendown() pen.pencolor(pen_color) pen.write(str(n), font=("Arial", 5, "normal")) def drawGrid(pen, UL, BR, numRows, numColumns, size): """ This function receives a turtle object and draw a grid given the number of rows and columns :param pen: Turtle object :param UL: Initial number at upper-left corner :param BR: Final number at bottom-right corner :param numRows: Integer that defines the number of rows :param numColumns: Integer that defines the number of columns :param size: Integer that defines the size of each square :return: None """ # Calculate width and height HEIGHT = (numRows + 1) * size WIDTH = (numCols + 1) * size # Draw each square with each number x, y = 0,HEIGHT/2# Starting positions num = UL font_color = "black" # Get all twin primes twin_primes = getTwinPrimes(UL, BR) for row in range(numRows): x = -WIDTH/2 for col in range(numCols): drawSquare(pen, x, y, size) # Check is the number is twin prime if num in twin_primes: font_color = "red" elif isPrime(num): # check if it is just a prime font_color = "blue" else: font_color = "black" drawNumber(pen, num, x, y, font_color) x += size num += 1 y -= size drawGrid(turtle, UL, BR, numRows, numCols, size) wn.exitonclick() ```

Related Samples

At ProgrammingHomeworkHelp.com, we understand the challenges students face with Python assignments. That's why we offer a comprehensive range of sample Python assignments to help guide and inspire your work. Our expertly crafted samples cover various topics, from basic syntax and data structures to advanced algorithms and web development. Whether you're struggling with code debugging or project implementation, our samples provide clear, practical examples to enhance your understanding and improve your grades. Trust us to support your Python learning journey with quality resources tailored to your needs.