2014-02-12 4 views
0

У меня есть программа, которая принимает строковый ввод и целочисленный ввод. Целое число определяет 2 вещи, сколько раз печатается строка и какой символ в строке видится, иначе заменяется на «.».Python: Заменить символ в строке на основе ввода

Например - Строка: Hello World Integer: 3

должны показать, как:

H..l..W..l. 
.e..o..o..d 
..l.. ..r.. 

В основном печать диагональный текст.

Как бы я мог использовать каждый третий символ в строке, замененной на «.»? Независимо от введенной строки и начинается с первой.

Мне нужна только функция, я получил остальную часть кода.

код до сих пор это (не компактно):

stringVar = input("String: ") 
countVar = input("Count: ") 

countInt = int(countVar) 
stringInt = len(stringVar) 

if countInt > stringInt: 
    print("Number should be between 1 and the lenght of the string!") 
    exit() 

if countInt < 1: 
    print("Number should be between 1 and the lenght of the string!") 
    exit() 

count = 1   

while count <= countInt: 
    print(stringVar) 
    count = count + 1 

Я просто нужен способ, чтобы также заменить символы в STRINGVAR.

+0

Можете ли вы показать нам, что вы пробовали до сих пор? – aestrivex

+0

Вы пытались написать это самостоятельно? Если да, можете ли вы предоставить код? – Ffisegydd

+0

Только что добавил код. – Sinfamy

ответ

2
>>> n = 3 
>>> message = 'Hello World' 
>>> print ('\n'.join([''.join(['.' if (j-i) % n else c for j, c in enumerate('hello world')]) for i in range(n)])) 
h..l..w..l. 
.e..o..o..d 
..l.. ..r.. 

Магия происходит в (j-i) % n. Модуль положителен, если не делится на n. Помимо этого существует два списочные, внешние для каждой линии, внутренние для каждого символа

2
s = 'Hello World!!!' 
n = 3 
rep = '.' 

for j in range(n): 
    print(''.join([v if (i - j)%n == 0 else rep for i, v in enumerate(s)])) 

# H..l..W..l..!. 
# .e..o..o..d..! 
# ..l.. ..r..!.. 

Кодовых перебирает необходимое количество линий (0,1,2 для n=3). Метод ''.join(...) проверяет, принимает ли (i - j)%n == 0, когда печатать письмо, в противном случае печатает строку rep.

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