繁体   English   中英

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

[英]Python, using print() and replace() function to interpret code given by string

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

这些数字与我希望绘制的波形上的某个振幅有关。

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

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

这样做有用的工具吗?

到目前为止,我已经尝试将字符串拆分为单个数字,但是我正在努力解决这些问题。

例如:

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

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

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

  1. 将字符串标记为数字列表L
  2. 计算max(L) 从此循环到min(L)
  3. 在每次迭代(一行输出)中,循环遍历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]

它打印:

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

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

y = '00012333210-1'
nums = []

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

我试图想出更好的方法来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM