?

Log in

No account? Create an account
программирование для начинающих - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

программирование для начинающих [авг. 30, 2016|01:23 am]
Anatoly Vorobey
[Tags|]

Мне понравился комментарий в дискуссии на Hacker News о предподавании программирования:

"I've been teaching kids to code for 19 years now, and I still make them do it the hard way.
Just two days ago this year's crop of 83 students wrote their first Java programs in Notepad and compiled and ran it from the command-line.
[...]
And my curriculum goes through the basics of Java very slowly. As I've said on HN before, I make my students code FizzBuzz, but they will have literally done 106 complete programming projects before it."

(речь идет о старшеклассниках с нулевым опытом программирования)

Автор также объясняет, почему Notepad: важно объяснить ученикам, что программа это просто текст, и в нем нет ничего особенного. Через несколько дней после начала, когда это усвоено, ученики переходят на Notepad++ с подсветкой синтаксиса итп.

Примеры заданий, которые дает автор, есть на этом его сайте: https://programmingbydoing.com/. Действительно, перед FizzBuzz есть пусть на 106, но 70 более простых заданий.
СсылкаОтветить

Comments:
[User Picture]From: akimka
2016-08-31 09:25 pm
Кстати вот скажите опять таки, как опытный человек, то, что решение задачи "напишите функцию, которая считает медиану, первый и третий квантиль" заняло у меня около 30-40 минут это нормально или плохо?

n=int(input())
X = list(map(int, input().split()))

X= sorted(X)

def median(list):
 n=len(list)
  if n%2==0:
   return(sum(list[n // 2 - 1:n // 2 + 1]) // 2,list[:n // 2 ],list[n // 2 :])
  else:
   return(list[n // 2],list[:n//2],list[n//2+1:])

print (median(median(X)[1])[0])
print(median(X)[0])
print(median(median(X)[2])[0])


Edited at 2016-08-31 21:31 (UTC)
(Ответить) (Thread)
[User Picture]From: avva
2016-09-01 07:09 am
Ну это долго, конечно, для интервью например. Я бы хотел максимум 10 минут. Но если вы только начали учить программирование, то вполне нормально.

Я бы это по-другому написал, мне немного не нравится, во-первых, что у вас функция называется median но де-факто занимается не только этим, и во-вторых код не очень легко понять. Я бы наверное написал (предполагая то же определение первого и третьего квантиля, как у вас, а то они бывают разные) что-то типа:

def median(list):
  n = len(list)
  if n%2 == 0:
    return (list[n/2-1]+list[n/2])/2.0
   else:
     return list[(n-1)/2]

X=...
X = sorted(X)
n = len(X)
half_n = n // 2

print(median(X[:half_n])
print(median(X))
print(median(X[n-half_n:]))


(Ответить) (Parent) (Thread)