Как взять список и отформатировать его определенным образом, повторяя его? - PullRequest
0 голосов
/ 03 февраля 2020

Мне интересно, как отформатировать список определенным образом. Мне нужно было написать программу, в которой перечислены все простые числа между двумя числами, а затем распечатать их определенным образом. Я понял, как их перечислить, но мне нужно, чтобы это выглядело определенным образом. Путь должен быть следующим: firstNum: secondNum! ThirdNum & четвертыйNum: пятыйNum! ШестойNum & седьмойNum

Например, если 5 и 24 были введены в этом порядке, то 7: 11! 13 и 17: 19! 23 будут распечатаны.

Я бы подумал использовать .format, но не уверен, как повторить, поскольку список может быть от 5 до 56.

Кроме того, я не могу использовать внешние библиотеки, поэтому нет numpy, sympy, itertools et c.

Есть идеи? Спасибо

1 Ответ

0 голосов
/ 03 февраля 2020

Ваша проблема, по сути, такова, Учитывая список [a,b,c,d,e,f,.....], где a, b, c, d, e, f, .... являются целыми числами. Как получить строку с шаблоном покрытия a:b!c&d:e!f&....

. Для этого вы можете просто проверить остаток индекса каждого целого числа с помощью 3 и отформатировать его соответствующим образом.

def format_str(numbers):
    result= ''
    for i in range(len(numbers)):
        if i%3 == 0:
            result += str(numbers[i])+':'
        elif i%3 == 1:
             result += str(numbers[i])+'!'
        else:
             result += str(numbers[i]+'&'
     return result

РЕДАКТИРОВАТЬ

Если вы хотите, чтобы к последнему номеру не добавлялся какой-либо специальный символ, вы можете просто вставить условие, подобное этому

def format_str(numbers):
    result = ''
    postfix = ''
    for i in range(len(numbers)):
        if i == len(numbers) - 1:
             postfix = ''
        elif i%3 == 0: 
             postfix = ':'
        elif i%3 == 1:
             postfix = '!'
        else:
             postfix = '&'
        result += str(numbers[i])+postfix
     return result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...