4

私はプログラミングの方法を学ぼうとしています。私は本当にプログラミングの方法を学びたいと思っています。私はそれの建物とデザインの側面が大好きです。ただし、Java と Python では、オブジェクト、クラス、メソッドに関連するプログラムを試して失敗しました。プログラムのコードを開発しようとしていますが、困惑しています。これは単純なエラーであることはわかっています。しかし、私は迷っています!誰かが私を実用的なプログラムに導いてくれることを望んでいますが、私が学ぶのを助けてくれることを願っています (批判は期待されるだけでなく、感謝されます)。

class Converter:

    def cTOf(self, numFrom):
        numFrom = self.numFrom
        numTo = (self.numFrom * (9/5)) + 32
        print (str(numTo) + ' degrees Farenheit')
        return numTo

    def fTOc(self, numFrom):
        numFrom = self.numFrom
        numTo = ((numFrom - 32) * (5/9))
        return numTo

convert = Converter()

numFrom = (float(input('Enter a number to convert..                '))) 
unitFrom = input('What unit would you like to convert from.. ')
unitTo = input('What unit would you like to convert to..    ')

if unitFrom == ('celcius'):
    convert.cTOf(numFrom)
    print(numTo)
    input('Please hit enter..')


if unitFrom == ('farenheit'):
    convert.fTOc(numFrom)
    print(numTo)
    input('Please hit enter..')
4

3 に答える 3

4

クラスとオブジェクトは、タスクを実行するためのツールです。これらを使用すると、一連のメソッドを使用してデータまたは状態をカプセル化できます。ただし、データは単なる数値です。整数をカプセル化する必要がないため、クラスを作成する必要はありません。

つまり、必要だと思うからといってクラスを作成するのではなく、コードを単純化するためにクラスを作成してください。

import sys

def f_to_c(x):
    return (x - 32) * (5/9)

def c_to_f(x):
    return x * (9/5) + 32

num_from = float(input('Enter a number to convert: '))
unit_from = input('What units would you like to convert from? ')
unit_to = input('What units would you like to convert to? ')

if (unit_from, unit_to) == ('fahrenheit', 'celsius'):
    num_to = f_to_c(num_from)
elif (unit_from, unit_to) == ('celsius', 'fahrenheit'):
    num_to = c_to_f(num_from)
else:
    print('unsupported units')
    sys.exit(1)

print('{} degrees {} is {} degrees {}'
      .format(num_from, unit_from, num_to, unit_to))
変換する数値を入力してください:40
どの単位から変換しますか?摂氏
どの単位に変換しますか?華氏
摂氏40.0度は華氏104.0度です

convertオブジェクトとクラスは何のConverter目的も果たさないので、コードはそれらなしでより単純で読みやすくなります。

于 2012-10-14T04:03:17.030 に答える
1

1.そうあるべき

def fTOc(self, numFrom):
    self.numFrom = numFrom

cTOfメソッドには同じ問題があります。

2.変数numToが定義されていません

numTo = convert.cTOf(numFrom)
print (numTo)
于 2012-10-14T03:34:16.317 に答える
0

ほとんど正解です。

self.numFromそれはあなたのパラメータなのでありません。行を削除するnumFrom =self.numFromと、問題ありません。

于 2012-10-14T03:38:09.857 に答える