this post was submitted on 18 Mar 2024
78 points (97.6% liked)

GenZedong

4241 readers
136 users here now

This is a Dengist community in favor of Bashar al-Assad with no information that can lead to the arrest of Hillary Clinton, our fellow liberal and queen. This community is not ironic. We are Marxists-Leninists.

This community is for posts about Marxism and geopolitics (including shitposts to some extent). Serious posts can be posted here or in /c/GenZhou. Reactionary or ultra-leftist cringe posts belong in /c/shitreactionariessay or /c/shitultrassay respectively.

We have a Matrix homeserver and a Matrix space. See this thread for more information. If you believe the server may be down, check the status on status.elara.ws.

Rules:

founded 3 years ago
MODERATORS
 

Welcome again to everybody! Make yourself@home. In the time-honoured tradition of our group, here is the weekly discussion thread.

Matrix homeserver and space
Theory discussion group on Matrix
● Find theory on ProleWiki, marxists.org, Anna's Archive and libgen; audio versions by Socialism For All

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 6 months ago* (last edited 6 months ago) (1 children)

What did I do wrong? I could look up proper solution to this exercise but I would still like to know what exactly is off. I feel like its something super obvious and stupid.

[–] [email protected] 7 points 6 months ago (1 children)

general advice: divide your code into multiple functions (e.g. instead of arbitrarily using '0' to end a loop, put the loop in its own function with a descriptive name and return when appropriate) and check if those functions produce the expected output

also, post your code as a Markdown code block, not a screenshot

[–] [email protected] 4 points 6 months ago* (last edited 6 months ago) (2 children)
num = []
Ms = []
while len(num) <= 5:
    for f in range(1,1000000):
        a = 452021 + f
        mmin = 0
        mmax = 0
        while mmin == 0:
            for n in range(2,a-1):
                if a % n == 0:
                    mmin = n
                if n == a-1 and a % n != 0:
                    mmin = '0'
        while mmax == 0:
            for n in range(a-1,2,-1):
                if a % n == 0:
                    mmax = n
                if n == 2 and a % n !=0:
                    mmax = '0'
        M = int(mmax) + int(mmin)
        if M % 7 == 3:
            num.append(a)
            Ms.append(M)
print(Ms)
print(num)
[–] [email protected] 2 points 6 months ago* (last edited 6 months ago)

As a code block.

I.e:

```
Your code
goes here
```

Your code
goes here
[–] [email protected] 2 points 6 months ago (1 children)

I figured it out! I just needed to use break.

num = []
Ms = []
def Fmmin(va):
    while va == 0:
        for n in range(2, number):
            if number % n == 0:
                va = n
                break
            if n == number - 1 and number - 1 % n != 0:
                va = '0'
    return va
def Fmmax(va):
    while va == 0:
        for n in range(number-1, 1, -1):
            if number % n == 0:
                va = n
                break
            if n == 2 and number % n != 0:
                va = '0'
    return va

for f in range(1,10000000):
    number = 452021 + f
    mmin = 0
    mmax = 0
    mmin = Fmmin(mmin)
    mmax = Fmmax(mmax)
    if int(mmax) > 0 and int(mmin) > 0:
        M = mmax + mmin
        if M % 7 == 3:
            num.append(number)
            Ms.append(M)
    if len(num) >= 5:
        break
print(Ms)
print(num)
[–] [email protected] 2 points 6 months ago (1 children)

You can improve the code by returning n and 0 respectively, no need to use a loop variable. The while va == 0 is either unnecessary (if it runs once) or can cause an endless loop (since nothing changes between iterations)

[–] [email protected] 2 points 6 months ago* (last edited 6 months ago) (1 children)

Fixed it now!

def Fmmin():
    for n in range(2, number):
        if number % n == 0:
            return n
        if n == number - 1 and number - 1 % n != 0:
            return 0
def Fmmax():
    for n in range(number-1, 1, -1):
        if number % n == 0:
            return n
        if n == 2 and number % n != 0:
            return 0
[–] [email protected] 2 points 6 months ago

one more piece of advice: try to avoid global variables when possible (in this case, you could pass number as an argument instead)