Прошу оценить код генерации рандомных пришельцев
Всем привет! На днях написал программу на python3 которая генерирует 10 пришельцев случайного вида. Всего видов два (красные и зеленые). Ну а после генерации выводит сколько пришельцев определенного вида сгенерировалось. Прошу оценить мой код, и если подобную функцию можно было написать гораздо проще, то буду благодарен если просветите))
import random
aliens = []
max_aliens = 10
red_aliens = 0
for alien_number in range(0, max_aliens):
new_alien_1 = {'color': 'red', 'points': '10'}
new_alien_2 = {'color': 'green', 'points': '5'}
r_numb = random.randint(1, 2)
if r_numb == 1:
aliens.append(new_alien_1)
red_aliens += 1
else:
aliens.append(new_alien_2)
for alien in aliens:
print(alien)
print(f'\nRed aliens - {red_aliens}')
print(f'Green aliens - {max_aliens - red_aliens}')
Ответы (3 шт):
Автор решения: MBo
→ Ссылка
al_kinds = ({'color': 'red', 'points': '10'},{'color': 'green', 'points': '5'})
for _ in range(max_aliens):
t = random.randint(0,1)
aliens.append(al_kinds[t])
if t==0:
red_aliens += 1
Без подсчета красных можно сделать однострочник с генератором списка
Автор решения: Mango
→ Ссылка
как вариант
import random
aliens = []
max_aliens = 10
red_aliens = 0
new_aliens = [{'color': 'red', 'points': '10'}, {'color': 'green', 'points': '5'}]
for alien_number in range(max_aliens) :
r = random.choice(new_aliens)
if r == new_aliens[0]:
aliens.append(new_aliens[0])
red_aliens += 1
else:
aliens.append(new_aliens[1])
for alien in aliens:
print(alien)
print(f'\nRed aliens - {red_aliens}')
print(f'Green aliens - {max_aliens - red_aliens}')
Автор решения: JopaBoga
→ Ссылка
import secrets
aliens = []
max_aliens = 10
for a in range(max_aliens):
born = Aliens()
born.genetic_mutations()
born.take_over_another_planet()
aliens.append(born)
class Aliens():
def __init__(self):
color_ = ['red', 'green']
self.color = secrets.choice(color_)
self.points = 0
def take_over_another_planet(self):
print('%s alien sat in a starship and flight to destroy the earth' % (self.color))
def genetic_mutations(self):
self.points = 5
if self.color == 'red':
self.points = 10