Статья Python от МФТИ

Hi ребя!! На ютубе есть лекции --- алгоритмы на Python от преподавателя кафедры информатики МФТИ (Тимофей Хирьянов)
Думаю такой путь начать изучать программирование (а не синтаксис) - правильный.В самом начале 1 лекции преподаватель говорит,что мол на кафедре есть книга Симмерфилда,но она вам не нужна.А еще есть практические задания Давайте решать.
 
O

obsidian_destroyer

Полностью согласен, отличные лекции, первую с огромным удовольствием просмотрел)
Так что да, можно попробовать порешать и задачи которые даются в 'лабах'
 
  • Нравится
Реакции: Bachyla и russian404

russian404

Green Team
20.02.2018
24
18
BIT
3
Hi ребя!! На ютубе есть лекции --- алгоритмы на Python от преподавателя кафедры информатики МФТИ (Тимофей Хирьянов)
Думаю такой путь начать изучать программирование (а не синтаксис) - правильный.В самом начале 1 лекции преподаватель говорит,что мол на кафедре есть книга Симмерфилда,но она вам не нужна.А еще есть практические задания Давайте решать.

Лабы 2015-16гг mipt-cs/course-site-python3
 

UKROP

Member
23.01.2020
16
0
BIT
0
Hi ребя!! На ютубе есть лекции --- алгоритмы на Python от преподавателя кафедры информатики МФТИ (Тимофей Хирьянов)
Думаю такой путь начать изучать программирование (а не синтаксис) - правильный.В самом начале 1 лекции преподаватель говорит,что мол на кафедре есть книга Симмерфилда,но она вам не нужна.А еще есть практические задания Давайте решать.

Код:
Исполнитель "Черепаха"
https://metaschool.ru/pub/konkurs/python/turtle/index.php


Первые два упражнения не подразумевают решения на python, поэтому кода не будет.

Упражнение №3: квадрат
Нарисуйте квадрат.
Решение:
Python:
#-*- coding: utf-8-*-
import turtle
t = turtle.Turtle()
t.shape('turtle')
x = 1
while True:
    t.forward(100)
    t.left(90)
    x = x + 1
    if (x % 4) == 1:
        t.clear()

Упражнение №4: окружность

Нарисуйте окружность.
Воспользуйтесь тем фактом, что правильный многоугольник с большим числом сторон будет выглядеть как окружность.
Решение:
Python:
#-*- coding: utf-8-*-
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.speed(0)
x = 1
while True:
    t.forward(2)
    t.left(1)
    if (x%360) == 1:
        t.clear()
    x += 1

Упражнение №5: больше квадратов
Нарисуйте 10 вложенных квадратов.
Решекние:
Python:
#-*- coding: utf-8-*-
import turtle
t = turtle.Turtle()
t.shape("turtle")

x = 1
y = 20

while x <= 10:
    t.left(225)
    t.penup()
    t.forward((y**2/2)**0.5)
    t.left(135)
    t.pendown()
    t.forward(y*x)
    t.left(90)
    t.forward(y * x)
    t.left(90)
    t.forward(y*x)
    t.left(90)
    t.forward(y*x)
    t.left(90)
    x += 1
turtle.exitonclick()

Упражнение №6: паук
Нарисуйте паука с n лапами. Пример n = 12:
Решение:
Python:
#-*- coding: utf-8-*-
import turtle
t = turtle.Turtle()
t.shape('turtle')
x = 1
while True:
    t.forward(100)
    t.stamp()
    t.backward(100)
    t.right(360 / 12)
    x += 1
    if (x%12) == 1:
        t.clear()

Упражнение № 7.
Нарисуйте спираль.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
import math
window = turtle.Screen()
window.title(u"Черепаха по спирали!")
turtle.shape("turtle")
turtle.speed(0)
# y - количество поворотов спирали
# кривизну спирали можно изменять значением постоянного множиеля (5) в функции forward
x = 0
while True:
    turtle.forward(x / 2 *  math.pi)
    turtle.left(2 * math.pi)
    x += 0.01
window.exitonclick()

Упражнение №8: квадратная спираль.
Нарисуйте «квадратную» спираль.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
window = turtle.Screen()
window.title(u"Черепаха по спирали!")
turtle.shape("turtle")
# y - количество поворотов спирали
# кривизну спирали можно изменять значением постоянного множиеля (5) в функции forward
x = 1
y = int(turtle.textinput(u"Количество поворотов спирали", "Введите желаемое количество поворотов спирали"))
while x <= y:
    turtle.forward(5*x)
    turtle.left(90)
    x += 1
window.exitonclick()

Упражнение № 9. Правильные многоугольники.
Нарисуйте 10 вложенных правильных многоугольников.
Используйте функцию, рисующую правильный n-угольник.
Формулы для нахождения радиуса описанной окружности.
Решение:
Python:
#-*- coding: utf-8 -*-                                
import turtle                                         
import math                                           
t = turtle.Turtle()                                   
t.shape('turtle')                                     
R = 30                                                
x = 1                                                 
n = 3                                                 
t.up()                                                
t.goto(R, 0)                                          
t.down()                                              
def polygon(x):                                       
    while x <= n:                                     
        t.left((180 - 360 / n) / 2)                   
        t.left(360 / n)                               
        t.forward(2 * R * math.sin(math.pi/n))        
        x += 1                                        
        t.right((180 - 360 / n) / 2)                  
while n <= 11:                                        
    polygon(x)                                        
    n += 1                                            
    R += 18                                           
    t.up()                                            
    t.goto(R, 0)                                      
    t.down()                                          
turtle.exitonclick()

Упражнение №10: «цветок»
Нарисуйте «цветок» из окружностей. Используйте функцию, рисующую окружность.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
t = turtle.Turtle()
t.shape('turtle')

n = int(turtle.textinput(u"Введите количество лепестков.", "Введите количество окружностей: "))
x = 1
def flower(x):
    while x <= n:
        t.circle(50)
        t.left(360 / n)
        x += 1

flower (x)
turtle.exitonclick()

Упражнение №11: «бабочка»
Нарисуйте «бабочку» из окружностей. Используйте функцию, рисующую окружность.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.left(90)
n = 50

def butterfly(n):
    t.circle(n)
    t.circle(-n)

x = 1
while x <= 20:
    butterfly(n)
    n += 5
    x += 1
turtle.exitonclick()

Упражнение № 12: пружина.
Нарисуйте пружину. Используйте функцию, рисующую дугу.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
t = turtle.Pen()
t.shape('turtle')
t.speed(10)
t.left(90)
x = 1
while x <= 6:
    t.circle(-50, 180, 100)
    t.circle(-10, 180, 100)
    x += 1
turtle.exitonclick()

Упражнение №13: «смайлик»
Нарисуйте смайлик с помощью написанных функций рисования круга и дуги.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle        
t = turtle.Pen()     
t.shape('turtle')    
t.color('black')     
t.up()               
t.goto (100, 0)      
t.left(90)           
t.down()             
t.fillcolor('yellow')
t.begin_fill()       
t.circle(100)        
t.end_fill()         
t.up()               
t.goto(-30, 50)      
t.down()             
t.fillcolor('blue')  
t.begin_fill()       
t.circle(15)         
t.end_fill()         
t.up()               
t.goto(60, 50)       
t.down()             
t.fillcolor('blue')  
t.begin_fill()       
t.circle(15)         
t.end_fill()         
t.up()               
t.goto(0, 30)        
t.down()             
t.color('black')     
t.pensize(8)         
t.left(180)          
t.forward(50)        
t.up()               
t.goto(70, -10)      
t.color('red')       
t.down()             
t.circle(-70, 180, 30)                     
turtle.exitonclick()

Упражнение №14: звезды
Нарисуйте две звезды: одну с 5 вершинами, другую — с 11. Используйте функцию, рисующую звезду с n вершинами.
Решение:
Python:
#-*- coding: utf-8 -*-
import turtle
t = turtle.Turtle()
t.shape('turtle')
n = int(turtle.textinput(u'Введите количество вершин', 'Введите количество вершин: '))
def stars(n):
    t.left(180 - (180 / n))
    t.forward(200)
x = 1
while x <= n:
    stars(n)
    x += 1
turtle.exitonclick()
 
Последнее редактирование:

Max Ivamoto

New member
24.03.2020
1
0
BIT
0
Предлагаю свой вариант рисует смайлик заданного размера в заданной точке
Упражнение №13


Python:
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import turtle as t
from math import sin, cos, pi, radians

NOSE_HEIGHT = 0.3
NOSE_WIDTH = 0.1

SMILE_WIDTH = 0.1
SMILE_RADIUS = 0.4
SMILE_LENGTH = 180
SMILE_OFFSET = 0.3

EYE_ALFA = 45
EYE_RIDIUS = 0.15
EYE_OFFSET = 0.65

def main():
    r0 = int(t.textinput("Введите радиус: ", "Введите радиус: "))
    x0 = int(t.textinput("Введите x центра: ", "Ввелите x центра: "))
    y0 = int(t.textinput("Введите y центра: ", "Ввелите y центра: "))
    t.penup
    morda_draw(x0, y0, r0)
    draw_yeies(x0, y0, r0)
    draw_nose(x0, y0, r0)
    draw_smile(x0, y0, r0)
    t.exitonclick()
    return 0

def morda_draw(x, y, r):
    t.color('yellow')
    t.begin_fill()
    arc_my(x, y, r)
    t.end_fill()
    return 0

def arc_my(x, y, r, a = 0, l = 0):
    t.penup()
    t.goto(x, y - r)
    t.pendown()
    t.circle(r)  
    return 0


def draw_yeies(x0, y0, r0):
    a = EYE_ALFA
    x1 = x0 + cos(pi/180*a) * (r0 * EYE_OFFSET)
    x2 = x0 - cos(pi/180*a) * (r0 * EYE_OFFSET)
    y1 = y0 + sin(pi/180*a) * (r0 * EYE_OFFSET)
    r = r0 * EYE_RIDIUS
    t.color('blue')
    t.begin_fill()
    arc_my(x1, y1, r)
    t.end_fill()
    t.begin_fill()
    arc_my(x2, y1, r)
    t.end_fill()
    return 0

def draw_nose(x0, y0, r0):
    w = r0 * NOSE_WIDTH
    h = r0 * NOSE_HEIGHT
    t.penup()
    t.left(90)
    t.goto(x0,y0)
    t.color('black')
    t.pendown()
    t.width(w)
    t.forward(h/2)
    t.backward(h)
    return 0

def draw_smile(x0, y0, r0):
    w = r0 * SMILE_WIDTH
    r = r0 * SMILE_RADIUS
    a = r0 * SMILE_OFFSET
    x = x0 + r
    y = y0 - a
    l = SMILE_LENGTH
    t.width(w)
    t.penup()
    t.goto(x,y)
    t.color('red')
    t.pendown()
    t.circle(r, -l)
    return 0

main()
 

Шахзод

New member
03.05.2020
1
0
BIT
0
И мы должны уметь решать эти задачки после 1 лекции?) Это же вообще не реально. Знаний что давали на 1 лекции очевидно недостаточно чтобы решить эти задачки!
 

Zhivnast

New member
24.06.2020
1
0
BIT
0
((y**2/2)**0.5)
скажите пожалуйста как эта формула нашлась в 5 упражнении?
почему именно она правильная?
 

oppa

New member
26.08.2020
1
0
BIT
0
Немного запутался, сейчас первая работа это робот , не совсем понятно сколько лекций нужно посмотреть чтобы решить задачи. У когонибудь остались решения. Выложите сюда если вам не сложно. Новичкам будет, вроде меня, будет полезно! Спасибо.
 
23.01.2021
2
0
BIT
0
import turtle
turtle.shape("turtle")
for t in range(360):
turtle.forward(1)
turtle.left(1)
turtle.speed(10)


Для окружности.

import turtle
turtle.shape("turtle")
for t in range(4):
turtle.forward(100)
turtle.left(90)

для квадрата. Первый день на питоне
 
13.03.2021
1
0
BIT
0
Код для "паука"
Код:
import turtle
turtle.shape("turtle")
b = 30
turtle.left(90)
turtle.speed(1)
while True:
    for s in range (12):
        turtle.forward(100)
        turtle.stamp()
        turtle.backward(100)
        turtle.left(b)
    turtle.clear()
 

MaxNemo

New member
21.05.2022
1
2
BIT
0
упр.4 окружность
Python:
import turtle
t=turtle
t.shape('turtle')
for i in range(120):
    t.forward(10)
    t.left(3)
t.done()
упр.5 квадрат
Python:
import turtle
t=turtle
t.shape('turtle')
n=1
while n<=10:
    t.forward(20*n)
    t.left(90)
    t.forward(20*n)
    t.left(90)
    t.forward(20*n)
    t.left(90)
    t.forward(20*n)
    t.left(90)
    t.penup()
    t.goto(-10*n,-10*n)
    t.pendown()
    n+=1
упр.6 паук
Python:
import turtle
t=turtle
t.shape('turtle')
for i in range(12):
    t.right(30)
    t.forward(100)
    t.stamp()
    t.backward(100)
упр.7 спираль
Python:
import turtle
t=turtle
t.shape('turtle')

k=1
fi_rad=0.1
fi_degr=fi_rad*(180/3.14)
for i in range (0,1000):
    ro=k*fi_rad
    t.forward(ro)
    t.left(fi_degr)
    fi_rad+=0.1
упр.8 квадратная спираль
Python:
import turtle
t=turtle
t.shape('turtle')

for i in range(150):
    t.forward(10*i)
    t.left(90)
упр.9 правильные многоугольники
Python:
import turtle,math
t=turtle
t.shape('turtle')
def prav_mu(R,rx,n):
    t.left(30) #zero angle
    n_obj=1
    n_edg=3
    a=2*R*math.sin(math.pi/n_edg)
    ang=360/n_edg
    while n_obj<n:
        ang_temp1=(n_edg-2)*180/n_edg
        a=2*R*math.sin(math.pi/n_edg)
        for i in range(n_edg):
            t.left(ang)
            t.forward(a)
        t.penup()
        t.goto(rx*n_obj,0)
        t.pendown()
        R+=rx
        n_edg+=1
        n_obj+=1
        ang=360/n_edg
        ang_temp2=(n_edg-2)*180/n_edg
        ang2=(ang_temp2-ang_temp1)/2
        t.left(ang2)
prav_mu(40,25,11)
t.done()
упр.10 цветок
Python:
import turtle,math
t=turtle
t.shape('turtle')
def okr(R,n,w):
    a=R*2*math.sin(math.pi/n)
    if w == 'l':
        for i in range(n):
            t.forward(a)
            t.left(360/n)
    elif w == 'r':
        for i in range(n):
            t.forward(a)
            t.right(360/n)
okr(50,60,'l')
okr(50,60,'r')
t.left(60)
okr(50,60,'l')
okr(50,60,'r')
t.left(60)
okr(50,60,'l')
okr(50,60,'r')
t.done()
упр.11 бабочка
Python:
import turtle,math
t=turtle
t.shape('turtle')
def okr(R,n,w):
    a=R*2*math.sin(math.pi/n)
    if w == 'l':
        for i in range(n):
            t.forward(a)
            t.left(360/n)
    elif w == 'r':
        for i in range(n):
            t.forward(a)
            t.right(360/n)
t.left(90)
ii=0
xx=0
while ii<6:
    okr(50+xx,30,'l')
    okr(50+xx,30,'r')
    xx+=10
    ii+=1
t.done()
упр.12 пружина
Python:
import turtle,math
t=turtle
t.shape('turtle')
def dug(R,n,w):
    a=R*2*math.sin(math.pi/n)
    if w == 'l':
        for i in range(n):
            t.forward(a)
            t.left(180/n)
    elif w == 'r':
        for i in range(n):
            t.forward(a)
            t.right(180/n)
t.right(-90)
ii=0
while ii<5:
    dug(25, 30, 'r')
    dug(5, 6, 'r')
    ii+=1
t.done()
упр.13 смайлик
- тут я завис, т.к. потребовали сделать смайлик "с помощью написанных функций рисования круга", а в описании лабораторной №1 круга и заполнение окружности не было
 
  • Нравится
Реакции: scuro34 и Zholo

Jimmy Acha

New member
26.05.2022
1
0
BIT
0
Упражнение 6. Паук

Python:
import turtle
t=turtle
t.shape('turtle')
n=1
while n <= 12:
    t.right(30)
    t.forward(100)
    t.stamp()
    t.right(180)
    t.forward(100)
    t.right(180)
    n += 1
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!