this post was submitted on 12 Jun 2025
554 points (98.6% liked)

Programmer Humor

24245 readers
1817 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
top 50 comments
sorted by: hot top controversial new old
[–] entropicdrift@lemmy.sdf.org 131 points 4 days ago (4 children)
print("odd" if num % 2 else "even")

That's the native python version, for those curious

[–] DreadPirateShawn@lemmy.blahaj.zone 86 points 4 days ago (2 children)

The ternary syntax is really my only real gripe with python design -- putting the conditional BETWEEN the true and false values feels so very messy to me.

[–] rbos@lemmy.ca 10 points 4 days ago (2 children)

It's kinda natural to me having used Perl a lot.

[–] SpaceNoodle@lemmy.world 21 points 4 days ago (1 children)

That's not quite the argument you might think it is

[–] rbos@lemmy.ca 3 points 4 days ago (1 children)
[–] SpaceNoodle@lemmy.world 14 points 4 days ago (8 children)
load more comments (8 replies)
[–] l3mming@lemmy.world 2 points 4 days ago* (last edited 4 days ago) (2 children)

You clearly haven't used Perl a lot. Perl's ternary looks like:

$even = $num % 2 ? "nay" : "yay";

Incidentally, it is also the same as PHP's, but mainly because PHP stole it.

[–] psud@aussie.zone 2 points 4 days ago (1 children)

You do get the if in the middle of stuff though in the form print(debug message) if $debug

[–] palordrolap@fedia.io 5 points 4 days ago (1 children)

Wait until you learn that postfix conditionals are syntactic sugar and the compiler* turns that line into the equivalent of $debug and print(debug message), putting the conditional in first place, a lot like the ternary operator.

* Perl compiles to bytecode before running.

The ternary operator itself isn't implemented in terms of and (and or) but it could be.

[–] psud@aussie.zone 4 points 4 days ago

Luckily I don't need to read or write bytecode and all that matters to me is the syntax

load more comments (1 replies)
[–] idunnololz@lemmy.world 3 points 4 days ago (1 children)

At least you guys have ternary syntax cries in kotlin.

[–] Aqarius@lemmy.world 1 points 3 days ago

It's really special to not have ternary, but have Elvis.

[–] Gork@sopuli.xyz 9 points 4 days ago (1 children)

That's way too non-convoluted enough

[–] entropicdrift@lemmy.sdf.org 16 points 4 days ago (2 children)

Python is kinda like that in general, unless you try to make it read like ass

[–] wise_pancake@lemmy.ca 6 points 4 days ago (1 children)

You would not believe the number of people I’ve interviewed who excel at making Python read like ass.

[–] entropicdrift@lemmy.sdf.org 5 points 4 days ago

I mean, it does have enough ways to write the same thing that it can really allow for some funny code golf, but some people just have no sense of readability whatsoever.

[–] Colloidal@programming.dev 5 points 4 days ago

Clearly an inferior language. /s

[–] Kaboom@reddthat.com 7 points 4 days ago (2 children)
[–] jacksilver@lemmy.world 18 points 4 days ago (2 children)

I think the idea is it reads more naturally, so you can read it like this return A if statement is true else return B

[–] Nalivai@discuss.tchncs.de 1 points 2 days ago (1 children)

Is it really more natural for a non-programmer than "if statement is true than a else b"? I can't evaluate because of decades of C, so for me the python logic is still bizarre.

[–] jacksilver@lemmy.world 1 points 2 days ago

Maybe?

For C at least it doesn't have the actual words, so you need to know what the specific symbols are var = condition ? a : b. In that expression we don't know what a or b are in regards to the condition.

Python literally is a if condition else b, so it reads out what is being done.

[–] entropicdrift@lemmy.sdf.org 3 points 4 days ago

Yep, it's this

[–] BassTurd@lemmy.world 9 points 4 days ago* (last edited 4 days ago)

Edit... I reread your comment and realized that python does it differently and that everything I typed was irrelevant... I'm still gonna leave it if anyone is interested in ternary expressions, but I suppose the answer to your question is, that's just how python does it.

That's how ternary operators are designed to work. In essence, if you're looking to do a single line if/then, you can directly assign a variable from the result of a ternary expression.

As an example, I was scripting something earlier where there may or may not be a value returned from a function, but I still had to do something with that return value later. For this thing, I was using JavaScript.

I ended up with:

return platform == "name"  ? "Option 1" : "Option 2"

If I were to write that out in a typical if/then it would be:

if (platform == "name") {
    return "option 1"
} else {
    return "option 2"
}

A ternary starts with a boolean expression, then the if true value, else the false value. That's returned to either a variable or if in a function like my example, to the object calling the function. It's just a way to write less code that in many cases is easier to read.

[–] laurelraven@lemmy.zip 2 points 3 days ago

Oh wow, I think I hate that... Condition between the results? Yuck.

[–] SpaceNoodle@lemmy.world 57 points 4 days ago (1 children)

Please. That's C's ternary operator. JS is just a pile of garbage cosplaying as a programming language

[–] victorz@lemmy.world 4 points 4 days ago (1 children)

Why do you say it's a pile of garbage?

[–] SpaceNoodle@lemmy.world 18 points 4 days ago (2 children)

Because of all the garbage

[–] Fillicia@sh.itjust.works 7 points 4 days ago (1 children)

Clearly the garbage collector is too effective

[–] filcuk@lemmy.zip 4 points 4 days ago (1 children)

No they're not supposed to be piling it up

[–] piccolo@sh.itjust.works 7 points 4 days ago

Is a garbage collector not a garbage disposal. Smh.

[–] victorz@lemmy.world 1 points 3 days ago

One example that's giving you problems? Maybe even on a daily basis if you use it for work? What's garbage about it?

[–] mdhughes@lemmy.sdf.org 35 points 4 days ago (1 children)

print( ["even", "odd"][num % 2] )

If you need to avoid evaluating the wrong branch:

print( [lambda: "even", lambda: "odd"][num % 2]() )

[–] FireIced@lemmy.super.ynh.fr 7 points 4 days ago (1 children)
[–] gamma@programming.dev 9 points 3 days ago (1 children)

Not as cursed as

print("eovdedn"[n%2::2]) 
[–] owl@infosec.pub 17 points 4 days ago

Just send pseudo code to AI and compile straight to binary.

Peak programming

[–] PattyMcB@lemmy.world 9 points 4 days ago (1 children)

Yeah... I played that "serial killer or programming language inventor" game.

The only one I was completely in disagreement with was the inventor of Python. He's definitely a mass-murderer

[–] conditional_soup@lemm.ee 6 points 4 days ago* (last edited 4 days ago)

Are you sure it isn't just that he's Dutch?

[–] capuccino@lemmy.world 9 points 4 days ago (2 children)

I love something = condition and result1 or result2 in lua

load more comments
view more: next ›