#python
#python
Вопрос:
вот мой код:
import random
y = 0
while True:
input('press enter to generate')
for x in range(25):
y = random.randint(0,1)
if x == 5 or x == 10 or x == 15 or x == 20 or x == 25:
print(f'{y}')
else:
print(f'{y}',end='')
и вот результирующий результат:
press enter to generate
011011
11011
00000
01101
1011press enter to generate
я пытаюсь сделать его чистым и в формате 5×5, и я попытался изменить количество повторов в цикле и положение новых строк.
желаемый результат:
00000
00000
00000
00000
00000
числа могут быть 1/0
Комментарии:
1. можете ли вы показать нам, каков желаемый результат? как бы вы хотели, чтобы это выглядело?
2. @snatchysquid добавит редактирование
3. вот чистая версия вашего кода на данный момент, возможно, вы захотите использовать это вместо
4. Это проще с двумя циклами (строки и столбцы).
Ответ №1:
Количество, которое вы проверяете, отклонено на единицу. range(25)
выполняется от 0
до 24
, поэтому последний элемент каждой строки встречается в 4, 9, 14, 19 и 24. Вы можете исправить это с помощью:
if x == 4 or x == 9 or x == 14 or x == 19 or x == 24:
или проще:
if x in (4, 9, 14, 19, 24):
Вы также могли бы сделать:
if (x 1) % 5 == 0:
Комментарии:
1. почему бы не использовать
%
(modulu)?
Ответ №2:
Вы можете вообще избежать цикла for, используя numpy.
import numpy as np
while True:
input('npress enter to generate')
y = np.random.randint(0,2,25).reshape(5,5)
print(np.array2string(y).
replace('[',' ').replace(']','').replace(' ',''))
Вывод:
press enter to generate
10001
01010
10100
01010
10111
Ответ №3:
Изменить range
на range(1, 26)
:
y = 0
while True:
input('press enter to generate')
for x in range(1, 26):
y = random.randint(0, 1)
if x % 5 == 0:
print(f'{y}')
else:
print(f'{y}', end='')
Вы можете использовать x % 5 == 0
вместо того, что у вас есть.
Комментарии:
1. нажмите enter, чтобы сгенерировать 0 00010 00110 11100 01110 11101 нажмите enter, чтобы сгенерировать вывод из этого кода
2. @7abc778 Что вы имеете в виду? Приведенный выше код работает так, как ожидалось.