-3

職種名、職種、給与を入力できるプログラムを作りたいのですが、入力した職種名、職種、給与をファイルに書き込んでデータを保存したいのですが、うまくいきません。

class Job(object):
    def __init__(self, jobName = '', jobCategory = '', jobPay = ''):
        self.jobName = jobName
        self.jobCategory = jobCategory
        self.jobPay = jobPay

    def getName(self):
        self.jobName = input("What is the Job Title: ")

    def getCategory(self):
        self.jobCategory = input("What is the Job Category: ")

    def getPay(self):
        self.jobPay = input("What is the Job Pay: ")

    def displayJob(self):
        print("Job: " + self.jobName)
        print("Job Category: " + self.jobCategory)
        print("Job Pay: " + self.jobPay)
        print()


def Main():
    global NewJob
    NewJob = Job()
    NewJob.getName()
    NewJob.getCategory()
    NewJob.getPay()
    print()
    NewJob.displayJob()
    myFile = open('newFile.txt', 'w')
    myFile.write(NewJob.displayJob())
    myFile.close()

Main()
4

2 に答える 2

2

displayJob()ファイルではなく、標準出力に出力します。文字列を返す必要があります:

def displayJob(self):
    results = [
        "Job: " + self.jobName,
        "Job Category: " + self.jobCategory,
        "Job Pay: " + self.jobPay
    ]

    return "\n".join(results)

または引数として渡しfileますが、それは少し奇妙に見えます:

import sys

def displayJob(self, file=sys.stdout):
    print("Job: " + self.jobName, file=file)
    print("Job Category: " + self.jobCategory, file=file)
    print("Job Pay: " + self.jobPay, file=file)
    print(file=file)

...

NewJob.displayJob(myFile)
于 2013-06-26T20:37:16.713 に答える
0

問題がファイルに何も書き込まれないことであると仮定します。 Job.displayJob()ファイルに書き込まれるものは何も返さず、標準出力に表示するだけです。オブジェクトをファイルにシリアル化する方法を考え出し、その文字列を返すメソッドを用意します。

于 2013-06-26T20:36:13.370 に答える