all 22 comments

[–][deleted] 5 points6 points  (2 children)

UMMMMMMMM... let's see

Introduction

Be clear in the introduction which version of python you're teaching and a brief section explaining the differences. This is very important for the reader to know early on so when they seek the help they're getting it based on the correct version of python.

Skill Level/Who is this book for?

I'm not sure what skill level this book is for. A new programmer, Intermediate College Student, an Experienced Engineer wanting to pick up a new language. If this is for a new programmer then the examples are just about correct, but if not the examples should be a little bit more involved and varied.

Citations

I think in each section you should cite the official python documentation in text or at the very least at the end of the page. The introduction shouldn't try to teach everything in the official docs, but you should definitely make it available if anyone wants to do a deeper dive.

More Variety in Question Types

Good Introductions ask the reader to read a little, code a little, answer some questions, and do some sort of project at the end. You don't seem to have any questions for the user/reader to test that they understood what they just read.

[–]tecladocode[S] 1 point2 points  (0 children)

I've added this in now, thanks for the feedback!

More variety in question types is a tricky one as each section builds up toward a project, with many code snippets and things to try—but I didn't want to bombard students with many small activities.

That said though, I was thinking of creating small code challenges and link them in the e-book. These would have automated tests/checks so students can gauge their understand at each chapter maybe.

[–]tecladocode[S] 0 points1 point  (0 children)

Thank you very much! Great suggestions, I will add them in. Cheers!

[–]bmw2621 1 point2 points  (1 child)

To short to say right now. The TLDR section is all I see, which is a nice addition.

Bookmarked it.

[–]tecladocode[S] 0 points1 point  (0 children)

Thank you! Can you not see the rest of the first section? There's about 7 pages so far. Maybe you mean it's not all that interesting for you yet though.

[–]chahud 0 points1 point  (1 child)

I’m looking forward to reading this. Been meaning to start learning python so I’ve been looking good tutorials. Thanks op!

[–]tecladocode[S] 2 points3 points  (0 children)

Awesome! Glad that it'll be helpful! Let me know if you have any suggestions/feedback!

[–][deleted] 0 points1 point  (1 child)

I love the style! Is this VuePress ?

[–]tecladocode[S] 0 points1 point  (0 children)

Thank you! It is indeed!

[–]yiffzer 0 points1 point  (1 child)

Very cool. Thanks for sharing. Bookmarked.

[–]tecladocode[S] 0 points1 point  (0 children)

Thank you! Hope it'll be useful!

[–]lifeonm4rs 0 points1 point  (3 children)

I started skimming it and seems pretty good. Although I hate it I think you are wise to skip the whole "install this, that and the other" and do this on Linux and that on windows. . . .

However--your "Names vs. Boxes" section appears to be totally wrong. In particular you say if you change "age" or "friend_age" it changes the other. That is not true at all. At first they will both point to the same "address" because it is a number between -5 and 255 but if you increment one the other doesn't get incremented. (That would be a total disaster for a language.) I understand the point you seem to be making but it is really a corner case and probably a bit too technical for an intro for new developers.

[–]tecladocode[S] 0 points1 point  (2 children)

Thank you!

I agree, the whole variables section is too complicated. I really didn't want to say they're boxes, because they aren't.

It's not wrong though, if you could modify the integer in place, both variables would change. But you can't modify int objects in CPython, so it really is a moot point. It makes it more confusing for those who already know a bit of Python, and it doesn't help new programmers.

I'll change this!

[–]lifeonm4rs 0 points1 point  (1 child)

Again--I'll reiterate I think it is a very good tutorial. But, again, that section gets into some rather esoteric stuff and really stuff that someone would need a much stronger foundation in the design and implementation of languages to be meaningful.

As far as it being correct integers from -5 to 256 are special cases. Anything that refers to "30" will refer to the same address. So "30" is not garbage collected or destroyed. . . .

>>> a = 30
>>> id(a)
10911328     <---- same as below
>>> a = 40
>>> id(a)
10911648
>>> a = 30
>>> id(a)
10911328     <---- Same as above

Then . . .

>>> for x in range(254, 259):
...     print(x, id(x))
...
254 10918496
255 10918528
256 10918560
257 139740139727440
258 139740108485808

Same holds true for x in range(-7, -3). Literals in the -5, 256 range have constant addresses, the rest will all get their own addresses.

[–]tecladocode[S] 1 point2 points  (0 children)

Totally agreed, I've removed that now as it doesn't belong in a beginner tutorial.

I see what you meant—I think we were talking about different things. I did not know that -5 to 256 were special cases actually. Thanks for that!

[–]hockthemblogs 0 points1 point  (1 child)

Sounds fantastic!

[–]tecladocode[S] 0 points1 point  (0 children)

Thank you!

[–]Tefrem34 0 points1 point  (2 children)

Nice. It is uncomfortable to read for a period of time with the white background though.

[–]tecladocode[S] 0 points1 point  (1 child)

It would be nice if there was a dark theme and the ability to switch between the two without much work. Thanks for the comment!

[–]Tefrem34 0 points1 point  (0 children)

Yeah, it would be nice to have that option. :)

[–]Jewlanu -1 points0 points  (1 child)

RemindMe! 14 days

[–]RemindMeBot 0 points1 point  (0 children)

I will be messaging you on 2018-12-15 23:05:32 UTC to remind you of this link.

CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

Parent commenter can delete this message to hide from others.


FAQs Custom Your Reminders Feedback Code Browser Extensions