Форум сайта python.su
0
Операторы нужно переставить в нужном порядке и вставить необходимые отступы.
Программа спрашивает у пользователя, сколько фигур нарисовать, и рисует с помощью средств модуля turtle квадраты и окружности. Координаты начала, сторона квадрата/диаметр окружности выбираются случайно, также как и вид фигуры.
Данные каждой фигуры записываются в файл. В конец файла выводится самая большая сторона квадрата и самый большой диаметр окружности с пояснительным текстом.
Дополнительно
Изменить программу так, чтобы она рисовала и равносторонние треугольники.
Дополнить программу так, чтобы пределы случайных чисел для координат и размеров читались из текстового файла .
Отредактировано vadimzlobin (Ноя. 19, 2014 10:25:46)
Прикреплённый файлы:
K.r.py (926 байт)
Офлайн
0
http://pastebin.com/fEJHkfWT - начало
Отредактировано vadimzlobin (Ноя. 19, 2014 10:41:06)
Офлайн
26
Зачем создавать темы? обраматить код в теги надо
Офлайн
0
from random import randint from turtle import * print('Please enter a number') Answer=input('How many figures to draw? ') def draw(x,y,length,shape): up() setpos(x,y) x=randint(-100,100) y=randint(-100,100) down() def polygon(L): for i in range(N): draw(x,y,L,shape) for i in range(4): forward(L),left(90) if Answer.isdigit(): L=randint(50,100) while True: N=int(Answer) if f==0: if len(circles)>0: circle(length/2) circles.append(L) circles=[] if len(squares)>0: if shape=='circle': squares=[] shape='circle' if shape=='square': shape='square' squares.append(L) squares=[] break f=randint(0,1) polygon(length) squares.append(L) shape='circle' shape='square' else: else: else: else: return False return True #OK MyFile = open("kt31.txt", "w") MyFile.write('The largest square is '+str(max(squares))+'\n') MyFile.write('The largest circle is '+str(max(circles))+'\n') MyFile.write(str(x)+'\t'+str(y)+'\t'+str(L)+'\t'+shape+'\n') MyFile.close()
Отредактировано vadimzlobin (Ноя. 19, 2014 11:49:13)
Офлайн
5
Дело было вечером, делать было нечего…
Код для сохранения начальных пределов:
import pickle coord_max=(800,600) max_len_figure={"circle":40,"square":42,"triangle":38} data=[coord_max,max_len_figure] filename="C:/Users/User/Desktop/file_figures_max.ff" filesaves=open(filename, "wb") pickle.dump(data, filesaves) filesaves.close()
import pickle import turtle import random import math def turtle_circle(diameter,x,y): turtle.up() turtle.goto(x+diameter/2,y+diameter) turtle.down() turtle.circle(-diameter/2) def turtle_square(length,x,y): turtle.up() turtle.goto(x,y) turtle.down() for counter in range(4): turtle.forward(length) turtle.left(90) def turtle_triangle(length,x,y): turtle.up() turtle.goto(x,y) turtle.down() for counter in range(3): turtle.forward(length) turtle.left(120) filenameset="C:/Users/User/Desktop/file_figures_max.ff" filenamesave="C:/Users/User/Desktop/figures.txt" fileopen=open(filenameset, "rb") filesaves=open(filenamesave, "w") coord_max,max_len_figure=pickle.load(fileopen) fileopen.close() window=turtle.Screen() window.setup (width=coord_max[0]+40, height=coord_max[1]+40) turtle.up() turtle.goto(-coord_max[0]/2,-coord_max[1]/2) turtle.down() turtle.goto(coord_max[0]/2,-coord_max[1]/2) turtle.goto(coord_max[0]/2,coord_max[1]/2) turtle.goto(-coord_max[0]/2,coord_max[1]/2) turtle.goto(-coord_max[0]/2,-coord_max[1]/2) figure=("circle","square","triangle") max=[0,0,0] while True: try: number=int(input("Введите количество фигур: ")) if number>0: break else: print ("Неправильный ввод, введите цифру не меньше 1") except ValueError: print ("Это не число, введите, пожалуйста, цифру не меньше 1.") 200 for index in range(number): temp_fig=random.choice(figure) length=random.randint(1,max_len_figure.get(temp_fig)) x_coor=random.randint(-coord_max[0]/2,coord_max[0]/2-length) if temp_fig=="triangle": y_coor=random.randint(-coord_max[1]/2,coord_max[1]/2-math.ceil(math.sqrt(3)/2*length)) else: y_coor=random.randint(-coord_max[1]/2,coord_max[1]/2-length) if temp_fig=="circle": turtle_circle(length,x_coor,y_coor) if length/2>max[0]: max[0]=length/2 filesaves.write(str(index+1)+". Построен круг радиусом: "+str(length/2)+", с координатами центра: "+str(x_coor+length/2)+", "+str(y_coor+length/2)+"\n") elif temp_fig=="square": turtle_square(length,x_coor,y_coor) if length>max[1]: max[1]=length filesaves.write(str(index+1)+". Построен квадрат со сторонами: "+str(length)+", с координатами левого нижнего угла: "+str(x_coor)+", "+str(y_coor)+"\n") elif temp_fig=="triangle": turtle_triangle(length,x_coor,y_coor) if length>max[2]: max[2]=length filesaves.write(str(index+1)+". Построен равнобедренный треугольник со сторонами: "+str(length)+", с координатами левого нижнего угла: "+str(x_coor)+", "+str(y_coor)+"\n") else: print("Нет функции постройки фигуры: ",temp_fig) filesaves.write(str(index+1)+". Не построена фигура: "+temp_fig+"\n") filesaves.write("-"*40+"\n") filesaves.write("Максимальный радиус круга: "+str(max[0])+"\nМаксимальная сторона квадрата: "+str(max[1])+"\nМаксимальная сторона треугольника: "+str(max[2])) filesaves.close()
Офлайн