如何遍历字符串中的每个字符并将其与字符串中的位置相乘?
How do I iterate over every character in a string and multiply it with the place in its string?
我正在 codewars.com 上做这个编码练习,但我被卡住了。我不是在寻找完整的解决方案。相反,我想看看我的推理是否正确,以及我正在尝试做的事情是否可行。
输入:所以我有一个字符串:“字符串”。
我想打印一次这个字符串中的第一个字符(“s”),
这个字符串中的第二个字符(“t”)两次,
第三个字符(“r”)在此字符串中出现三次,
依此类推,直到字符串结束。
输出:s-tt-rrr-iiii-nnnnn-gggggg
到目前为止我唯一能做的就是遍历这个字符串中的每个字符。
string = "string"
for char in string:
print(char, end="-")
输出:s-t-r-i-n-g-
我想到的解决方案是
遍历字符串中的每个字符
打印每个字符*(乘以)他在字符串中的位置(它的索引号)+1
含义:
“S”在索引 0 处,+1 成为第一个字母,
所以“s”被打印一次。
“T”在索引 1 处,+1 成为第二个字母
所以“t”被打印了两次
...
然后我试了这个:
string = "string"
for char in string:
print(char * string[char], end="-")
但这不起作用,因为我得到一个 TypeError: string indices must be integers。
然后我在想:
是否可以遍历字符串中的每个字符,将其分配给一个变量,然后使用变量进行操作?
意思是字符串 [0] 或“s”将变为 variable_1 = 1(字符串中的第一个字母),我将其乘以字符串中的第一个字母(“s”)。
你怎么看?这行得通吗?我的解决方案是否可行?
PS:我通读了 Whosebug 的提问指南,并尽力尽可能清楚地表述我的问题。如果有任何更好的技巧,请与我分享,我将不胜感激。我正在学习如何编程以及如何提出有益于我学习的好问题。
感谢您花时间阅读我的问题。
斯坦
enumerate
方便每次迭代得到一个整数索引和一个元素
def f(x):
size = len(x)
for i, char in enumerate(x):
num = i+1 # number of characters
if num == size: # don't print - after last character
ending = ""
else:
ending = "-"
print(num*char, end = ending)
f("string")
你的逻辑有点不对。如果我们不使用 enumerate
而只是用整数索引一个字符串:
def g(x):
size = len(x)
for i in range(size):
num = i+1 # number of characters
if num == size: # don't print - after last character
ending = ""
else:
ending = "-"
print(num*x[i], end = ending)
面试官问了我同样的问题。我这样写这段代码
代码
string = "string"
final_data = []
count = 1
for i in list(string):
final_data.append(i*count)
count += 1
output = "-".join(final_data)
print(output)
我知道你已经阅读了提问指南,我唯一的建议是使用代码块。
我已尝试解决您的问题,这是我的代码
x = ["string"]
for i in x:
p = 0
while p < 6:
print(i[p]*p)
p += 1
这输出:
t
rr
iii
nnnn
ggggg
我相信你可以改进这一点,祝你有美好的一天!
我正在 codewars.com 上做这个编码练习,但我被卡住了。我不是在寻找完整的解决方案。相反,我想看看我的推理是否正确,以及我正在尝试做的事情是否可行。
输入:所以我有一个字符串:“字符串”。 我想打印一次这个字符串中的第一个字符(“s”), 这个字符串中的第二个字符(“t”)两次, 第三个字符(“r”)在此字符串中出现三次, 依此类推,直到字符串结束。 输出:s-tt-rrr-iiii-nnnnn-gggggg
到目前为止我唯一能做的就是遍历这个字符串中的每个字符。
string = "string"
for char in string:
print(char, end="-")
输出:s-t-r-i-n-g-
我想到的解决方案是 遍历字符串中的每个字符 打印每个字符*(乘以)他在字符串中的位置(它的索引号)+1
含义: “S”在索引 0 处,+1 成为第一个字母, 所以“s”被打印一次。 “T”在索引 1 处,+1 成为第二个字母 所以“t”被打印了两次 ...
然后我试了这个:
string = "string"
for char in string:
print(char * string[char], end="-")
但这不起作用,因为我得到一个 TypeError: string indices must be integers。
然后我在想: 是否可以遍历字符串中的每个字符,将其分配给一个变量,然后使用变量进行操作? 意思是字符串 [0] 或“s”将变为 variable_1 = 1(字符串中的第一个字母),我将其乘以字符串中的第一个字母(“s”)。
你怎么看?这行得通吗?我的解决方案是否可行?
PS:我通读了 Whosebug 的提问指南,并尽力尽可能清楚地表述我的问题。如果有任何更好的技巧,请与我分享,我将不胜感激。我正在学习如何编程以及如何提出有益于我学习的好问题。
感谢您花时间阅读我的问题。 斯坦
enumerate
方便每次迭代得到一个整数索引和一个元素
def f(x):
size = len(x)
for i, char in enumerate(x):
num = i+1 # number of characters
if num == size: # don't print - after last character
ending = ""
else:
ending = "-"
print(num*char, end = ending)
f("string")
你的逻辑有点不对。如果我们不使用 enumerate
而只是用整数索引一个字符串:
def g(x):
size = len(x)
for i in range(size):
num = i+1 # number of characters
if num == size: # don't print - after last character
ending = ""
else:
ending = "-"
print(num*x[i], end = ending)
面试官问了我同样的问题。我这样写这段代码
代码
string = "string"
final_data = []
count = 1
for i in list(string):
final_data.append(i*count)
count += 1
output = "-".join(final_data)
print(output)
我知道你已经阅读了提问指南,我唯一的建议是使用代码块。
我已尝试解决您的问题,这是我的代码
x = ["string"]
for i in x:
p = 0
while p < 6:
print(i[p]*p)
p += 1
这输出:
t
rr
iii
nnnn
ggggg
我相信你可以改进这一点,祝你有美好的一天!