25
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/[email protected]

There is an issue with the program when the user correctly guesses the number. The program should end when the break statement executes in the while loop found in main(), but instead it times out.

import random


def main():
    level = get_level()
    number = generate_random_number(level)

    while True:
        guess = get_guess()

        if check_guess(number, guess) == False:
            continue
        else:
            break


def get_level():
    while True:
        level = input("Level: ")

        try:
            int(level)
        except ValueError:
            continue
        if int(level) <= 0:
            continue
        else:
            return int(level)

def generate_random_number(level):
    number = random.randint(1, level)

    return number

def get_guess():
    while True:
        guess = input("Guess: ")

        try:
            int(guess)
        except ValueError:
            continue
        if int(guess) <= 0:
            continue
        else:
            return int(guess)

def check_guess(number, guess):
    if guess > number:
        print("Too large!")

        return False
    if guess < number:
        print("Too small!")

        return False
    if guess == number:
        print("Just right!")

        return True


main()
[-] [email protected] 4 points 2 months ago
[-] [email protected] 7 points 2 months ago* (last edited 2 months ago)

It worked! I uninstalled dnf-automatic, libreoffice, and rpmfusion and then restarted.

Thanks for your help! Will keep your tips in mind for the future and try to avoid layering.

21
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/[email protected]

I am trying to update from Silverblue 41 to 42 (fully updated) but run into issues when attempting to update from both the software app and from CLI.

The problem using the software app is the same as what is described by this other user, who is using Fedora Workstation not Silverblue like I am:

https://discussion.fedoraproject.org/t/update-to-fedora-42-fails-in-gnome-software/148885

When I click the download button, it looks like it's downloading multiple files since the progress bar goes from 0 to 100 several times, and then it gets up to 95% then suddenly returns to the download button. This happens in about 30 seconds.

Using the CLI method, I run the following command:

rpm-ostree rebase fedora:fedora/42/x86_64/silverblue

and get the following errors:

 Problem: conflicting requests
  - package dnf5-plugin-automatic-5.2.12.0-2.fc42.x86_64 from updates requires libcurl-full(x86-64), but none of the providers can be installed
  - package dnf5-plugin-automatic-5.2.12.0-1.fc42.x86_64 from fedora requires libcurl-full(x86-64), but none of the providers can be installed
  - package dnf5-plugin-automatic-5.2.12.0-2.fc42.x86_64 from updates-archive requires libcurl-full(x86-64), but none of the providers can be installed
  - package libcurl-minimal-8.11.1-4.fc42.x86_64 from @System conflicts with libcurl(x86-64) provided by libcurl-8.11.1-4.fc42.x86_64 from fedora

SOLUTION: Uninstalled layered packages in dnf-automatic, libreoffice, and rpmfusion and then restarted. Rebase command successfully completed thereafter.

3
submitted 2 months ago* (last edited 2 months ago) by [email protected] to c/[email protected]

.

[-] [email protected] 3 points 3 months ago

Thank you for the thorough explanation. It makes sense to me why I had the error that I did. I'll keep this in mind next time when I consider using a bitwise operator.

[-] [email protected] 7 points 3 months ago

Thank you for the reply. It seems bitwise operators are somewhat of an advanced concept that I may revisit down the road.

[-] [email protected] 4 points 3 months ago

Thanks. I think I understand why I wouldn't want to use it in this case. But what is an example of where I can use it? This makes me think I should avoid using bitwise operators with integers and keep it to strings only, but I know that's not true from what I've learned.

19
submitted 3 months ago* (last edited 3 months ago) by [email protected] to c/[email protected]

if coin == 25 | 10 | 5:

If I replace the '|' with 'or' the code runs just fine. I'm not sure why I can't use '|' in the same statement.

Doing the following doesn't work either:

if coin == 25 | coin == 10 | coin == 5:

I know bitwise operators can only be used with integers, but other then that is there another difference from logical operators?

21
submitted 4 months ago* (last edited 4 months ago) by [email protected] to c/[email protected]
 # Ask user to enter an expression and display output
def main():
    expression = input("Expression: ")

    print(calculate(splitter(expression)))


# Split expression into components and assign to variables as float values
def splitter(expression):
    x, y, z = expression.split()

    return x, y, z

# Calculate expression result
def calculate(x, y, z):
    x, z = float(x), float(z)

    if y == "+":
        return str(round((x + z), 1))
    elif y == "-":
        return str(round((x - z), 1))
    elif y == "*":
        return str(round((x * z), 1))
    else:
        return str(round((x / z), 1))



main()

I am getting traceback errors for any expression (1 + 1) I enter.

[-] [email protected] 2 points 2 years ago

Yes - I finally caught that part about n as it's just moving in reverse so it gets decremented. Now I'm not sure about i. In the debugger when the program gets to the for loop both n and i are equal to 1. The n I understand but i?

[-] [email protected] 2 points 2 years ago

Why does the for loop return when it hits the end of the function? Isn't the recursive portion already completed in draw(n - 1)? The rest of it is just normal non-recursive code if I understand it correctly.

[-] [email protected] 2 points 2 years ago

It's supposed to be a pyramid but not my code. It's an example of a recursive function from a CS50 lecture and I'm just trying to understand how the code works line by line.

32
submitted 2 years ago by [email protected] to c/[email protected]

I used the debugger to examine this code but not understanding a couple areas.

  1. Why does the for loop repeat after it exits to print a new line? If it exits the loop, shouldn't it be done with it?
  2. Why is n incremented and not i as stated with i++?

int main(void)
{
    int height = get_int("Height: ");

    draw(height);
}

void draw(int n)
{
    if (n &lt;= 0)
    {
        return;
    }

    draw(n - 1);

    for (int i = 0; i &lt; n; i++)
    {
        printf("#");
    }
    printf("\n");
}
[-] [email protected] 2 points 2 years ago
[-] [email protected] 4 points 2 years ago* (last edited 2 years ago)

Ah ha! Yes, I did check the docs but I think I just glanced over that portion. Be more careful next time. Now that I took another look at the other ctype.h functions, they all return 1 or 0. I think I confused equivalent python built-in functions as those evaluated to true/false. The < is a less than sign but it seems it doesn't render correctly on Lemmy.

[-] [email protected] 3 points 2 years ago

Sorry. It's in C. Updated post. Yes those are titles. I just included the relevant portions rather than the entire code.

8
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]

This is in C language. When I call rotate() in main, the function returns false for isalpha() even though the string entered for plaintext uses alphabetic characters. Perhaps it's identifying an alphabetic character by its ASCII value ('A' = 65)? I tried to test that out and used (char) with the letter variable in rotate() but it didn't change anything.

PORTION OF MAIN

string plaintext = get_string("plaintext:  ");

    int length = strlen(plaintext);
    char ciphertext[length];

    for (int i = 0; i &lt; length; i++)
    {
        ciphertext[i] = rotate(plaintext[i], key);
    }

ROTATE FUNCTION

char rotate(char letter, int key)
{
    if (isalpha(letter) == true)
    { ...
[-] [email protected] 2 points 2 years ago

Ah I see. I had a bad habit of using else if statements instead of else statements because I thought else if could be better in seeing the condition it's testing for so it was clearer. I get the logic is actually different now.

10
submitted 2 years ago by [email protected] to c/[email protected]

In VS I am told this function "does not return a value in all control paths." A bot told me specifically the issue is with this line: else if (letter + key <= 90). It said that if the outcome results in letter + key equally exactly 90 then a value is not returned, but I thought that was covered where '<=' means 'less than or equals.'

char rotate(char letter, int key)
{
    if (isalpha(letter) == true)
    {
        if (letter + key > 90)
        {
            int overage = letter + key - 90;
            letter = 64 + overage;

            while (letter > 90)
            {
                overage = letter - 90;
                letter += overage;
            }

            return letter;
        }

        else if (letter + key &lt;= 90)
        {
            letter += key;
            return letter;
        }
    }

    else if (isalpha(letter) == false)
    {
        return letter;
    }
13
submitted 2 years ago* (last edited 2 years ago) by [email protected] to c/[email protected]

What is %.2f? Why is it not just %f? Is there some additional calculation happening? The half function already does all the calculations including splitting the bill, so I'm not sure what %.2f is. (Btw why is this code not formatting correctly in lemmy?)


#include 
#include 

float half(float bill, float tax, int tip);

int main(void)
{
    float bill_amount = get_float("Bill before tax and tip: ");
    float tax_percent = get_float("Sale Tax Percent: ");
    int tip_percent = get_int("Tip percent: ");

    printf("You will owe $%.2f each!\n", half(bill_amount, tax_percent, tip_percent));
}

// TODO: Complete the function
float half(float bill, float tax, int tip)
{
    bill += (bill * (tax / 100.0));
    bill += (bill * (tip / 100.0));

    bill /= 2;

    return bill;
}
view more: next ›

milon

0 post score
0 comment score
joined 2 years ago