Печать 5 цифр подряд - PullRequest
       5

Печать 5 цифр подряд

0 голосов
/ 19 ноября 2009

Мне нужно написать программу для печати чисел от 1 до 50, но с 5 числами подряд, например:

1,2,3,4,5
6,7,8,9,10

так до 50 без списков

for i in range(2,51):
   if i%5==0:
      print i

это дает мне 5,10,15,20

Пожалуйста, помогите мне

Ответы [ 10 ]

6 голосов
/ 19 ноября 2009

Несколько подсказок:

  • Первый параметр для функции range () неверен. Должно быть 1, а не 2. Начальный индекс включен, конечный исключен. Это, кстати, очень хорошая практика, чтобы избежать ошибок.
  • С помощью оператора по модулю вы нашли способ определения каждых 5 значений; Вы можете использовать это, чтобы напечатать строку, когда это произойдет. Тогда вам придется найти способ не выводить строку, когда вы выводите одно значение за раз; ищите в документации на python способ заставить функцию print () сделать это. (внимание, что в области печати с Python 3.0 все изменилось, но вы, похоже, используете версию 2.x, приведенную в вашем примере)
  • Альтернативный подход заключается в использовании третьего аргумента функции range () для перехода по последовательности с шагом 5). Такой диапазон даст вам 1, 6, 11, 16 и т. Д. По порядку, и вы можете использовать этот номер в качестве первой в каждой строке и в качестве простого добавления для следующих.
2 голосов
/ 19 ноября 2009

Вы можете начать почти так же, как и вы (за исключением того, что вам нужно начать с 1 - это 2 действительно странно! -):

for i in range(1,51):
   if i % 5 == 0:
      print i

но затем вам нужно перейти к предложению else для этого if, потому что вы делаете хотите что-то напечатать, даже если i не кратно 5 - просто что-то отличается от простого print i, который вы уже делаете, когда i равен , кратному 5 ...:

   else:
      print i, ',',

Как уже говорилось в других ответах, завершающая запятая означает «еще нет новой строки»! -) ((В Python 3. все более понятно и понятно, но вы явно используете Python 2. что-то, и в этих версиях это это то что нужно сделать)).

1 голос
/ 19 ноября 2009

Я никогда не использовал Python, но это должно быть близко, если не правильно.

for i in range(1,51):
      print i;
      print ",";
      if (i%5==0)
         { print "\n";}
0 голосов
/ 23 сентября 2018

В одном операторе вы можете распаковать выражение генератора с помощью print и использовать аргумент sep. Преимущество этого решения заключается в том, что нет необходимости в явной if / else условной логике.

k, n = 5, 50

print(*(','.join(map(str, range(i, i+k))) for i in range(1, n+1, k)), sep='\n')

# 1,2,3,4,5
# 6,7,8,9,10
# 11,12,13,14,15
# 16,17,18,19,20
# 21,22,23,24,25
# 26,27,28,29,30
# 31,32,33,34,35
# 36,37,38,39,40
# 41,42,43,44,45
# 46,47,48,49,50
0 голосов
/ 23 сентября 2018

этот код даст вам необходимый вывод.

#python
for i in range(1,51):
if i%5 == 0:
    print (i)#this will give \n at the end
else:
    print (i,end=",")#this will print the numbers with coma at the end

Вы можете поставить 'end=""' для печати без пробела для пространства 'end=" "'

0 голосов
/ 19 ноября 2009
for i in range(1,51):
    if i%5 != 0:
        print str(i)+',' , # trailing comma means no \n
    else:
        print i
0 голосов
/ 19 ноября 2009
(there used to be python code here)

РЕДАКТИРОВАТЬ: мои извинения, не понял, что это домашнее задание. Мне действительно нужно проверить теги, прежде чем ответить. Вот объяснение того, что должно произойти.

Очевидно, вы знаете, что пытаетесь вывести последовательные числа от 1 до 50, поэтому вам понадобится счетчик. Вы выяснили, что для этого потребуется range() звонок, но он должен быть от 1 до 51, а не от 2 до 50.

Причина, по которой вызов range() должен быть от 1 до 51, заключается в следующем: он запускает переменную i в 1, а затем проверяет, достигла ли она своей цели (51), перед циклом , Если цель достигнута (то есть, если i == 51), она выйдет из цикла без выполнения кода цикла. Поэтому вместо того, чтобы переходить от 1 к 50, вы переходите с 1 на 51, чтобы мы не пропустили 50-ю итерацию.

Далее вы захотите, чтобы цифры появлялись на экране. Но использование команды print в python выводит каждое число на новую строку! Это явно не то, что вы хотите. Таким образом, вам нужно будет создать строку буфера для добавления каждого числа, пока вы не будете готовы напечатать строку. Вы можете назвать это «вывод» или как угодно.

Лично мне нравится очищать буфер ДО цикла for, просто чтобы убедиться, что никакие следы остаточной памяти не попадут в вывод. Назовите меня параноиком. Поэтому я пишу output = "" в строке перед циклом.

Теперь у вас есть строка буфера, все, что вам нужно сделать, это следовать логическому потоку:

  1. Добавить i в буфер output.
  2. Если i кратно 5, выведите буфер output и верните его обратно в пустую строку. (Мы делаем это так, чтобы мы могли запустить буфер для следующей строки.)
  3. Если i НЕ кратно 5, добавьте запятую в буфер output, чтобы следующий добавленный номер был после запятой.
  4. Продолжаем наш цикл.

Эти шаги должны быть довольно просты для понимания. Шаг 2, который вы уже видели раньше ... Чтобы проверить, является ли число кратным другому числу, просто используйте %. Если A % B == 0, то A кратно B.

Это должно быть довольно простым объяснением того, как решить эту проблему. Надеюсь, это поможет.

И извините за то, что испортили ваш опыт обучения, разместив ответ! Теперь вы поймете, почему ответ работает.

0 голосов
/ 19 ноября 2009
for i in range(1,51):
    if i%5 == 0:
        print i
    else:
        print i, ",",
0 голосов
/ 19 ноября 2009

Некоторые подсказки

  • Чтобы напечатать от 1 до 50, вам нужно передать n + 1, например, от 1 до 51 в диапазоне , его (i=1;i<51,i++) в C-подобном синтаксисе

  • выводите запятую, если хотите между каждой цифрой

  • чтобы печатать разрыв строки для каждых 5, вы можете просто использовать текущий if i%5==0:, но печатать пустую строку вместо i

  • Для объединения num + string "," вы можете использовать `i` or str(i) , you can do like `i` +","

  • Если вам не нужна запятая в конце, вы можете сделать так: i% 5 print "," else print "\ n" =>

    (i%5 and "," or "\n")

  • print i будет печатать i построчно, а print i, будет печатать в той же строке

только мои 2 цента

0 голосов
/ 19 ноября 2009

Также помните, что использование print приведет к запуску новой строки. Если не указано иное, запятая используется позже.

Вы можете собирать значения, используя строку для последующей распечатки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...