我正在尝试编写一段代码,该代码将字符串作为输入并将*替换为一系列数字,例如:
我今年*岁
0-10
我今年0岁
我1岁
...
这是一种尝试,使我在R上的生活更加轻松,同时我还学习了一些Python。 这是我的代码:
yourtext = input(" ")
number = input(" ")
number = int(number)
while number > 0:
i = str(number)
print(i)
yourtext = yourtext.replace("*", i)
print(yourtext)
print(number)
number = number - 1
现在,这将返回:
*
5 (my inputs)
5
5
5
4
5
4
3
5
3
2
5
2
1
5
1
因此,似乎replace函数中的i在循环的第一次迭代中固定为其值。为什么会这样,我该如何更改?非常感谢您的帮助。
答案 0 :(得分:1)
将*
替换为数字后,循环的下一次迭代将无效。 *
中没有yourtext
。
yourtext = yourtext.replace("*", i)
答案 1 :(得分:0)
我不建议使用while
来使for
循环,因为那样会陷入无限循环。另外,for
将采用一系列值,因此您不必手动增加值:
yourtext = input("What would you like? ")
number = int(input("What is the number? ")
if '*' not in yourtext:
raise ValueError("could not find wildcard")
for i in range(number):
print(yourtext.replace("*", i)
答案 2 :(得分:0)
您真的很亲密!您唯一的问题是该行:
@Query
正在更新yourtext变量。因此,在循环中进行第一次迭代后,已将文本中的“ *”更改为数字。因此,您的文本不是字符串“ I am * years old”(在您的原始示例中),而是改为“ I am 5 years old”。然后,当您再次遍历循环时,没有“ *”可替换(因为字符串“我今年5岁”没有*),因此文本保持为“我今年5岁”,而不是更改为“我今年4岁”。
您可以改用新的临时变量来解决此问题,例如,将问题行替换为:
yourtext = yourtext.replace("*", i)
答案 3 :(得分:0)
不确定yourtext的用途是什么,但是第一次替换“ *”后,yourtext将不会更新,因为它不再包含*。例如,如果您输入“ test”而不是*,则您的文本将永远不会更新,因为第一位没有*
4
test
4
3
test
3
2
test
2
1
test
1
答案 4 :(得分:0)
您可以在loop
的{{1}}中完成
string.replace()
s = 'I am * years old' number = 10 for i in range(number +1): print('{}'.format(s.replace('*', str(i))))