【问题标题】:putting a variable inside of quotes in python在python的引号内放置一个变量
【发布时间】:2013-02-11 01:39:51
【问题描述】:

我刚刚开始学习 Python。我正在尝试让用户输入一个数字基数和一个数字,并将其转换为十进制。

我一直在尝试像这样使用内置的 int 函数:

base = raw_input("what number base are you starting with?  \n")
num = raw_input("please enter your number:  ")
int(num,base)

我的问题是,当您使用该 int 函数时,您转换的数字需要像这样用引号括起来:int('fff',16)

当我使用变量时,我怎样才能做到这一点?

【问题讨论】:

  • 您可以使用str(number) 将数字转换为字符串,例如str(10) 将返回'10'

标签: python string variables quotes


【解决方案1】:

不需要引号。引号不是字符串的一部分。

>>> int('fff',16)
4095
>>> da_number = 'fff'
>>> int(da_number, 16)
4095

但是,您需要将基数转换为整数。

>>> base = '16'
>>> int(da_number, base) # wrong! base should be an int.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required
>>> int(da_number, int(base)) # correct
4095

【讨论】:

    【解决方案2】:

    问题不在于引号。问题在于数据类型。带基数的int 需要一个整数基数 和一个字符串数字。所以,在你的情况下,你会使用:

    int(num,int(base))
    

    这采用从raw_input 返回的字符串,它从base 字符串构造一个合适的基,同时将num 作为int 函数要求的字符串。

    【讨论】:

      【解决方案3】:

      raw_input() 的结果将是一个字符串,我认为您的问题实际上是 base 在您需要它是一个整数时仍然是一个字符串。

      尝试以下方法:

      base = raw_input('base? ')
      num = raw_input('num? ')
      print int(num, int(base))
      

      例如:

      >>> base = raw_input('base? ')
      base? 16
      >>> num = raw_input('num? ')
      num? fff
      >>> print int(num, int(base))
      4095
      

      【讨论】:

        【解决方案4】:

        引号告诉 Python 这些字符应该被解释为字符串的内容,而不是语言语法。

        当你有一个变量时,Python 已经知道内容是一个字符串。您不仅不需要引号,而且添加它们会使 Python 误以为您想要一个包含变量名称的字符串。

        所以,这两个:

        int('fff',16)
        

        还有这个:

        someNumber = 'fff'
        int(someNumber,16)
        

        int() 函数而言,它们正在做同样的事情。

        话虽如此,int() 可以采用字符串或数字作为值,但必须有一个数字作为基数。所以,由于raw_input 总是返回一个字符串,你需要做一些类似的事情:

        base = raw_input("what number base are you starting with?  \n")
        num = raw_input("please enter your number:  ")
        int(num,int(base))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多