2015-10-08 7 views
-1

Мне нужно знать, как сделать заполненный круг. У меня есть полый круг, но мне нужно, чтобы он был заполнен. Я не могу понять, как это сделать. Кто-то знает, как сделать из этого заполненный круг. также я связан условиями.Рисование заполненного круга в python

Допустимые ключевые слова, операторы и т. Д. Являются: if, elif, else, while, for ... in range, =, variables, values, **, *, /, +, -,%, math.sqrt() , и, или, не, ==,! =, <, < =,>,> =, + =, def и return

Однако вам не разрешено использовать * -оператор для строки и int. Так, например, '' *** '' * 3 не разрешено, но 3 * 4 - , есть функция abs и функция линии соединения, там кто-то знает альтернативу для этого?

width, height = 11, 11 
a, b = 5, 5 
r = 5 
EPSILON = 2.2 

map_= [[' ' for x in range(width)]for y in range(height)] 

for y in range(height): 
    for x in range(width): 
     if abs((x-a)**2 + (y-b)**2 - r**2) < EPSILON**2: 
      map_[y][x] = "#" 
for line in map_: 
    print ' '.join(line) 

ответ

0

Измените условное положение так, чтобы оно принимало все координаты, расстояние до центра которых меньше или равно радиусу.

if (x-a)**2 + (y-b)**2 <= r**2: 
3

Вы почти все поняли. Я думаю, это именно то, что вы ищете:

width, height = 11, 11 
a, b = 5, 5 
r = 5 
EPSILON = 2.2 

map_= [[' ' for x in range(width)]for y in range(height)] 

for y in range(height): 
    for x in range(width): 
     if (x-a)**2 + (y-b)**2 <= (r**2 - EPSILON**2): 
      map_[y][x] = "#" 
for line in map_: 
    print(' '.join(line)) 

Goodluck!

+0

о извините. я забыл спросить в своем вопросе, мне также нужно, чтобы пользователи могли вводить ситце, а затем я должен масштабироваться до этого числа. Также знаете ли вы еще один вариант для функции .join (line))? Мне не разрешено использовать этот – John

+0

oeps не был финиширован, но я не уверен, что функция .join (line) я не уверен, что мне разрешено использовать ее. Он говорит, что oparators и ключевые слова есть. функции не совпадают с ключевыми словами или oparators? поэтому я мог бы использовать эту функцию? – John

1

Сумасшедший путь (найти индекс первого вхождения и последнего совпадения и список заправить # между этими элементами:

def first_occ(l): 
    return l.index('#') 

def last_occ(l): 
    return len(l) - 1 - l[::-1].index('#') 

for i, el in enumerate(map_): 
    map_[i][first_occ(el):last_occ(el)] = ['#'] * (last_occ(el) - first_occ(el)) 

for line in map_: 
    print ' '.join(line) 

* Да и это не удовлетворяет вашим ограничениям

 # # # # # 
    # # # # # # # 
    # # # # # # # # # 
# # # # # # # # # # # 
# # # # # # # # # # # 
# # # # # # # # # # # 
# # # # # # # # # # # 
# # # # # # # # # # # 
    # # # # # # # # # 
    # # # # # # # 
     # # # # # 
Смежные вопросы