【问题标题】:Variable length string duplication in PythonPython中的可变长度字符串重复
【发布时间】:2018-03-03 00:29:34
【问题描述】:

以下简短的python 脚本:

var1 = '7f0000000000000000000000000000000000000000000000000000000000000002'

var2 = '01'

output = 'evm --code ' + var1 + var1 + var2 + ' run'

print(output)

能够生成以下字符串:

evm --code 7f00000000000000000000000000000000000000000000000000000000000000027f000000000000000000000000000000000000000000000000000000000000000201 run

但是,我想生成字符串,其中var1 可以附加到输出字符串的最左侧,达到预先指定的(参数化)次数。对应于每次我们将var1 附加到最左侧,我想将var2 附加到最右侧相同的次数。

所以以上面的输出字符串作为基线,如果我们选择3作为我们的参数,我们的新output字符串应该呈现如下:

evm --debug --code 7f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f00000000000000000000000000000000000000000000000000000000000000027f000000000000000000000000000000000000000000000000000000000000000201010101 run 

如何控制这些字符串的重复,将它们附加到如上所述的基本字符串中,并带有一个变量?

【问题讨论】:

  • Python 重载了 * 运算符,因此将 StringInt 相乘会重复字符串。因此,您在 (var1 * n) + (var2 * n) 之后。

标签: python duplicates variable-length-array


【解决方案1】:

您可以在字符串上使用乘数运算符,例如:

repeat = 3
output = 'evm --code ' + var1 * repeat + var2 * repeat + ' run'

【讨论】:

  • 但问题是 - var1 应该总是比 var2 小 1,由于某些原因在这个脚本中它们是等价的
  • 这工作output = 'evm --code ' + var1 * repeat + var2 * (repeat - 1) + ' run'
【解决方案2】:

在python中,你可以将一个字符串乘以一个整数来重复给定的次数:

someString = "01"
someInt = 3
someString * someInt

将输出:

'010101'

知道了这一点,您的问题应该很容易解决。例如:

output = "evm --code %s%s run" % (var1 * n, var2 * n)

n 是一个正整数。

注意:上面,我使用了一个字符串格式,它在很多方面都比简单的连接更好(而且更不容易出错)。

【讨论】:

  • 嗯,但问题是 var1 应该总是比 var2 小 1
  • 所以?只需使用n-1 或其他一些逻辑来获得正确数量的var1var2 重复。
猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 1970-01-01
相关资源
最近更新 更多