我有一个程序,它接受一个字符串输入和一个整数输入。 整数确定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中的字符。
答案 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
字符串。