0

昨日、このコードの別の部分について投稿しましたが、別の問題に遭遇しました。私はRPG用のキャラクタージェネレーターを作成し、プログラムにキャラクターシート関数の出力を.txtファイルに取得しようとしていますが、関数がNone一部の統計の値を返す可能性があると思います(これは完全に通常、) .txt ファイルに書き込もうとすると、エラーが発生します。私は完全に困惑しています。助けていただければ幸いです。

# Character Sheet Function.
def char_shee():
    print "Name:", name
    print "Class:", character_class
    print "Class Powers:", class_power
    print "Alignment:", alignment
    print "Power:", pow, pow_mod()
    print "Intelligence:", iq, iq_mod()
    print "Agility:", agi, agi_mod()
    print "Constitution:", con, con_mod()
    print "Cynicism:", cyn, cyn_mod()
    print "Charisma:", cha, cha_mod()
    print "All Characters Start With 3 Hit Dice"
    print"""
\t\t{0}'s History
\t\t------------------
\t\tAge:{1}
\t\t{2}
\t\t{3}
\t\t{4}
\t\t{5}
\t\t{6}
\t\t{7}
\t\t{8}
\t\t{9}
\t\tGeneral Disposition: {10}
\t\tMost important thing is: {11}
\t\tWho is to blame for worlds problems: {12}
\t\tHow to solve the worlds problems: {13}
""".format(name, age, gender_id, ethnic_pr, fcd, wg, fogo_fuck, cur_fam,fam_fuk, nat_nur, gen_dis, wha_wor, who_pro, how_pro)

char_shee()
print "Press enter to continue"
raw_input()

# Export to text file? 
print """Just because I like you, let me know if you want this character
saved to a text file. Please remember if you save your character not to 
name it after something important, or you might lose it. 
"""
text_file = raw_input("Please type 'y' or 'n', if you want a .txt file")
if text_file == "y":
    filename = raw_input("\nWhat are we calling your file, include .txt")
    target = open(filename, 'w')
    target.write(char_shee()
    target.close
    print "\nOk I created your file."
    print """
Thanks so much for using the Cyberpanky N.O.W Character Generator
By Ray Weiss
Goodbye
"""
else:
    print """
Thanks so much for using the Cyberpanky N.O.W Character Generator
By Ray Weiss
Goodbye
"""

編集:ここに私が得る出力があります:

> Please type 'y' or 'n', if you want a .txt filey
> 
> What are we calling your file, include .txt123.txt <function char_shee
> at 0x2ba470> Traceback (most recent call last):   File "cncg.py", line
> 595, in <module>
>     target.write(pprint(char_shee)) TypeError: must be string or read-only character buffer, not None
4

2 に答える 2

3

printへの書き込みを使用しても、値は返さsys.stdoutれません。

キャラクター シート文字列を返してファイルに書き込みたいchar_shee場合は、代わりにその文字列を作成するだけで済みます。

文字列を簡単に作成するには、リストを使用して文字列を収集します。

def char_shee():
    sheet = []
    sheet.append("Name: " + name)
    sheet.append("Class: " + character_class)
    # ... more appends ...

    # Return the string with newlines
    return '\n'.join(sheet)
于 2012-09-25T12:26:33.043 に答える
1

ここで括弧を忘れました:

target.write(char_shee())
target.close()

@Martijn Pietersが指摘したように、値を出力するchar_shee()のではなく、から値を返す必要があります。

于 2012-09-25T12:26:06.843 に答える