【问题标题】:Adding a string to a list adds each character separately [duplicate]将字符串添加到列表中分别添加每个字符[重复]
【发布时间】:2020-09-14 07:33:00
【问题描述】:
function = input('Enter function')
a = input('do you want to enter another function')
b = [function]
if a.lower() == 'yes':
    while True:
        function1 = input('Next Function')
        b += function1
        if function1 == 'quit':
            break

print(b)

如果我在 function1 中输入,则在此代码中:y = 9x + 1;它会将值放入数组中,但格式为:'y', ' ', '9x', ' ', '+', ' ', '1'。 如何将输入保存为y = 9x + 1'? 此外,当我写退出时,它会打印数组,但最终值为q','u','i','t'。 如何消除这些值?

【问题讨论】:

  • b.append(function1) 而不是 b+=
  • b += function1 更改为b += [function1]
  • 谢谢,它有效,我设法从数组中删除了“退出”
  • 你没有正确定义b,所以才会有错误的答案

标签: python string list augmented-assignment


【解决方案1】:

对于您的第一个请求,您只需在b 上使用.append() 将元素附加到列表b

代码解决第一个问题:

b.append(function1)

对于您的第二个请求,您可以简单地检查在将元素附加到 b 之前是否输入了退出

代码解决第二题:

while True:
    function1 = input('Next Function: ')
    if function1 == 'quit':
        break
    b.append(function1)

最终代码:

function = input('Enter function: ')
a = input('Do you want to enter another function: ')
b = [function]
if a.lower() == 'yes':
    while True:
        function1 = input('Next Function: ')
        if function1 == 'quit':
            break
        b.append(function1)


print(b)

【讨论】:

    【解决方案2】:

    为了保存“退出”,您只需将b += function1 更改为b.append(function1)

    修正后的代码如下:

    function = input('Enter function')
    a = input('do you want to enter another function')
    b = [function]
    if a.lower() == 'yes':
        while True:
            function1 = input('Next Function')
            b.append(function1)
            if function1 == 'quit':
                break
    
    print(b)
    

    如果您根本不希望列表中出现“退出”字符串,您可以按如下方式更改代码:

    function = input('Enter function')
        a = input('do you want to enter another function')
        b = [function]
        if a.lower() == 'yes':
            while True:
                function1 = input('Next Function')
                if function1 == 'quit':
                    break
                else:
                    b.append(function1)
    
        print(b)
    

    此外,此代码已将输入 y = 9x + 1 按原样保存(它不会将其保存为 'y', ' ', '9x', ' ', '+', ' ', '1'

    【讨论】:

      【解决方案3】:

      我建议在字符串末尾添加 /n

      function = input('Enter function\n')
      a = input('do you want to enter another function\n')
      b = [function]
      if a.lower() == 'yes':
          while True:
              function1 = input('Next Function\n')
              b.append(function1)
              if function1 == 'quit':
                  break
      
      print(b[:-1])
      

      你应该使用附加。并在这里看到你添加到答案的最后一个元素是用户输入的值“退出”你可以将它从列表中删除,或者只是不打印列表的最后一项,就像我在我的示例中所做的那样,或者不要甚至一开始都没有把它放在那里。

      【讨论】:

      • 如何简单地移动b.append(function1) 之后 if function1 == 'quit': break - 在这种情况下不会添加
      • @PatrickArtner 好吧,当然这是一个不错的选择。正如您从这篇文章在几秒钟内得到的所有答案中看到的那样,可以考虑许多不同的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2012-12-15
      • 2012-10-06
      相关资源
      最近更新 更多