Python:根据输入替换字符串中的字符

时间:2014-02-12 22:19:21

标签: python string

我有一个程序,它接受一个字符串输入和一个整数输入。 整数确定2件事,打印字符串的次数,字符串中的哪个字符可见,否则替换为“。”

例如 - 字符串:Hello World 整数:3

应显示为:

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

基本上打印对角线文字。

如何在字符串中显示每个第3个字符,否则将替换为“。”?无论输入的字符串是从第一个字符串开始。

我只需要这个功能,我得到了剩下的代码。

到目前为止的代码是这个(不紧凑):

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中的字符。

2 个答案:

答案 0 :(得分: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整除,则模数为正。除此之外,还有两个列表推导,每行为外部,每个字符为内部

答案 1 :(得分: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的{​​{1}})。 n=3方法检查''.join(...)是否决定何时打印该字母,否则打印(i - j)%n == 0字符串。

相关问题