Of course there's an easier way. Just integrate the state of the art API dedicated for this exact problem. https://isevenapi.xyz/
Programming Horror
Welcome to Programming Horror!
This is a place to share strange or terrible code you come across.
For more general memes about programming there's also Programmer Humor.
Looking for mods. If youre interested in moderating the community feel free to dm @Ategon@programming.dev
Rules
- Keep content in english
- No advertisements (this includes both code in advertisements and advertisement in posts)
- No generated code (a person has to have made it)
Credits
This is confusing. I'm already using the iSeven API to determine if a number is 7. I'm getting a namespace collision error when I try to load this new API. Bug report filed.
You could do this in one line...
By removing all the linebreaks.
Modulo
I'm more of a Gemini myself
print(theJoke % you);
wooosh
modulo
pseudocode:
if number % 2 == 0
return "number is even" (is_num_even = 1 or true)
else
return "number is odd" (is_num_even = 0 or false)
plus you'd want an input validation beforehand
who needs modulo when you can get less characters out of
while (number > 1) {
number -= 2;
}
return number;
very efficient
edit: or theres the trusty iseven api
here is somewhat less:
return (number % 2) == 0;
return !(number & 1);
#You are an input. You have value! You matter!
if number % 2 == 0
return "number is even" (is_num_even = 1 or true)
else
return "number is odd" (is_num_even = 0 or false)
Am I doing it right? /S.
Don't put nbsps in code blocks, they show up literally.
Back when I was learning programming a lot of lessons would make you do something like this, and then show you the real way to do it in the next lesson. My reaction was always "why didn't you lead with this?".
You must see the pain before you confront it.
Because the point of the lesson is to demonstrate that you can solve the same problem multiple ways where some paths are more efficient than others.
Bad programmers are the ones that find the first solution and implement it no matter how inefficient it is.
Good programmers spend time on figuring out the solution with the least amount broken or inefficient code. You don’t learn this by jumping straight to the best answer every time.
My solution in perl back in the day when I was a teenage hobbyist who didn't know about the modulus operator: Divide by 2 and use regex to check for a decimal point.
if ($num / 2 =~ /\./) { return "odd" }
else { return "even" }
Divide by 2 and check for a decimal point.
I mean, it ain't wrong.
You know, I was going to let this slide under the notion that we're just ignoring the limited precision of floating point numbers... But then I thought about it and it's probably not right even if you were computing with real numbers! The decimal representation of real numbers isn't unique, so this could tell me that "2 = 1.9999..." is odd. Maybe your string coercion is guaranteed to return the finite decimal representation, but I think that would be undecidable.
Ackchyually-- IEEE 754 guarantees any integer with absolute value less than 2^24 to be exactly representable as a single precision float. So, the "divide by 2, check for decimals" should be safe as long as the origin of the number being checked is somewhat reasonable.
Of course, but it's somewhat nasty when all of a sudden is_even
doesn't do what you expect :).
This could be optimized by using a recursive function.
This could be made more servicavle by using a switch case
def is_even(n):
match n:
case 1:
return False
case 0:
return True
# fix No1
case n < 0:
return is_even(-1*n)
case _:
return is_even(n-2)
Python added match/case?! Bunch of mypy issues have been closed too. Maybe its time to dust off some old projects.
It was added in 3.10 and is surprisingly complete. The tutorial pep is a good starting point to see what it can accomplish