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

2024-05-19 00:00:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这些数字与我想描绘的波的某个振幅有关。你知道吗

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

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

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

到目前为止,我已经尝试将字符串拆分为单独的数字,但是我正在与负数作斗争。你知道吗

例如:

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

我只对python有一个非常基本的了解,所以我现在非常困惑。你知道吗


Tags: 工具字符串代码infor数字星号街道
2条回答

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

y = '00012333210-1'
nums = []

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

我在想更好的办法。你知道吗

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

  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]

它打印:

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

相关问题 更多 >

    热门问题