【问题标题】:Operators from list is still showing quotation marks when printed (Python 3.1)列表中的运算符在打印时仍显示引号(Python 3.1)
【发布时间】:2015-12-09 01:54:33
【问题描述】:

在编码时,我从列表中选择一个随机值并将其与两个数字一起打印以求和。但是,列表中的值仍然显示引号,我不明白为什么。代码是:

import random
level = input('Please choose either easy, medium or hard')
if level == 'easy':
    num1 = random.randint(1,5)
    num2 = random.randint(1,5)
    #Chooses a random operator from the list
    op = random.choice(['+', '-', '*'])
    #Arranges it so the larger number is printed first
    if num1 > num2:
        sum1 = (num1, op, num2)
    else:
        sum1 = (num2, op, num1)
    #Prints the two numbers and the random operator
    print(sum1)

我尝试运行这段代码,得到的结果是:

(4, '*', 3)

当我希望它显示为:

4*3

这些数字也是随机生成的,但工作正常。有谁知道如何解决这个问题?

【问题讨论】:

    标签: python python-3.x operators python-3.1


    【解决方案1】:

    鉴于您知道格式,您可以使用带有格式说明符的 print:

    >>> sum1 = (4, '*', 3)
    >>> print("{}{}{}".format(*sum1))
    4*3
    

    【讨论】:

      【解决方案2】:

      您正在打印一个生成此格式的列表。为了获得您想要的输出,您可以join 带有空分隔符的列表:

      print (''.join(sum1))
      

      编辑:

      刚刚注意到您的操作数是整数,而不是字符串。要使用此技术,您应该将所有元素转换为字符串。例如:

      print (''.join([str(s) for s in sum1]))
      

      【讨论】:

      • 我尝试添加它并收到以下错误消息:TypeError: sequence item 0: expected str instance, int found
      • @DaisyBradbury 我想我刚刚发现了问题。请查看我的编辑。
      • 我不能使用这种方法,因为我需要将值保持为整数,以便稍后在程序中使用它进行计算。
      • @DaisyBradbury 您只是为了打印而转换它们。事实上,我们正在打印基于sum1 的列表推导,而不是修改sum1 本身。
      • 这似乎不必要地复杂。
      猜你喜欢
      • 2015-12-27
      • 1970-01-01
      • 2016-07-17
      • 2023-03-26
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 2021-08-27
      • 2022-12-13
      相关资源
      最近更新 更多