【问题标题】:<function attribute at 0x01F0FC70> in text file instead of values<function attribute at 0x01F0FC70> 在文本文件中而不是值
【发布时间】:2014-04-01 07:38:55
【问题描述】:

我正在编写一些代码,其中我将 def 语句的返回值多次附加到文本文件中,但值每次都会改变,因为 def 语句中有一个随机函数。

代码如下:

import random
def attribute():
    return str(10  + (random.randint(1,12)/random.randint(1,4)))

with open("attributes.txt","w") as file:
    file.write("Charater\tSkill\tStrength")
    file.write("\nCharater1\t{0}\t{1}".format(attribute,attribute))
    file.write("\nCharater2\t{0}\t{1}".format(attribute,attribute))

这是文本文档的输出:

Charater    Skill   Strength
Charater1   <function attribute at 0x01F0FC70>  <function attribute at 0x01F0FC70>
Charater2   <function attribute at 0x01F0FC70>  <function attribute at 0x01F0FC70>

有谁知道为什么会这样,以及如何解决?

谢谢

【问题讨论】:

    标签: python


    【解决方案1】:

    您正在传递函数attribute 本身,而不是调用它并传递结果。您的代码需要():

    file.write("\nCharater2\t{0}\t{1}".format(attribute(),attribute()))
    

    【讨论】:

      【解决方案2】:

      你需要像这样调用attribute函数:

      file.write("\nCharater1\t{0}\t{1}".format(attribute(),attribute()))
      

      注意attribute 后面的括号。您当前的代码引用了函数对象,其字符串表示正在写入文件中。

      【讨论】:

        【解决方案3】:

        您正在编写函数对象属性而不是其返回值属性()。

        加上括号,你会没事的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-12-30
          • 2023-01-23
          • 1970-01-01
          • 1970-01-01
          • 2020-03-02
          • 2014-09-12
          • 1970-01-01
          相关资源
          最近更新 更多