Python,使用 print() 和 replace() 函数来解释字符串给出的代码

Posted

技术标签:

【中文标题】Python,使用 print() 和 replace() 函数来解释字符串给出的代码【英文标题】:Python, using print() and replace() function to interpret code given by string 【发布时间】:2018-04-14 08:47:41 【问题描述】:

假设我有一个以字符串形式给出的代码,例如: str(00012333210-1)

这些数字与我想要绘制的波形的某个振幅有关。

我想将代码转换为可打印的波形,其中数字被星号替换,例如:

 3:     ***
 2:    *   *
 1:   *     *
 0:***       *
-1:           *
-2:
-3:

有什么有用的工具来做这件事吗?

到目前为止,我已经尝试将字符串拆分为单独的数字,但我正在努力解决否定问题。

例如:

file = "000123332101233321000"
x = [int(i) for i in file]
print(x)

我对python只有一个非常基本的了解,所以我现在很困。

【问题讨论】:

欢迎来到 SO。请查看***.com/help/how-to-ask 并提供一个Minimal example 来说明您迄今为止所尝试的内容。 【参考方案1】:

首先要认识到,在终端中打印是从左到右,然后从上到下。一次一行。由于您的数据被转置(每个值属于一列,而不是一行),因此您需要先缓冲整个数据集,然后再打印它。在伪代码中应该是这样的:

    将字符串标记为数字列表L。 计算max(L)。从这里循环到min(L)。 在每次迭代(即一行输出)中,循环 L,并在 L 中的值与循环索引匹配时打印一个星号,否则打印一个空格。

第二步和第三步是这样的:

for y in range(max(L), min(L) - 1, -1):
    for val in L:
        print('*' if val == y else ' ', end='')
    print() # next line

你的例子:

L = [0, 0, 0, 1, 2, 3, 3, 3, 2, 1, 0, 1, 2, 3, 3, 3, 2, 1, 0, 0, 0]

打印出来:

     ***     ***     
    *   *   *   *    
   *     * *     *   
***       *       ***

【讨论】:

【参考方案2】:

您可以使用以下代码将字符串转换为整数列表:

y = '00012333210-1'
nums = []

for i in y:
    if i == '-':
        sym = i
        continue
    nums.append(int(sym+i))
    sym = ''

我正在努力想出更好的方法来做到这一点。

【讨论】:

以上是关于Python,使用 print() 和 replace() 函数来解释字符串给出的代码的主要内容,如果未能解决你的问题,请参考以下文章

longest-repeating-character-replacement(难)

Sql server中有没有replace语句? 没有的话,怎样实现类似于mySql中的repla

python中,如何去掉字串自带的引号

python的print输出多个变量

python-print()函数使用总结

如何替换python列表特定索引处的值?