0

Python 3 で定義された関数を使用して、メートルをフィートに、フィートをメートルに変換するモジュールを作成することになっています。次のように表示されます。

Feet       Meters       |    Meters       Feet

1.0         .305        |    20.0          65.574
2.0         .610        |    26.0          81.967
...
9.0         2.745       |    60.0          196.721
10.0        3.050       |    66.0          213.115

私は2つの機能を使用することになっています:

def footToMeters(foot): 

def meterToFoot(meter):

私が今持っているコードはこれです:

foot = 1
meter = 20

def footToMeter(foot):
    meters = foot * .305
    print("Feet \t Meters")
    for foot in range(1,11):
        print(foot, "\t", meters)
        foot +=1
        meters = foot * .305


print()

def meterToFoot(meter):
    feet = round((meter/.305),3)
    print("Meters \t Feet")
    for meter in range(20,69,6):
        print(meter, "\t", feet)
        meter += 6
        feet = round((meter/.305),3)


print(footToMeter(foot))
print(meterToFoot(meter))

明らかに、最後の 2 つの print ステートメントは、単純に 2 つの関数を 1 つずつ出力します。

私の質問は、2 つの関数を 2 つ並べて印刷するにはどうすればよいですか?

どんな助けでも大歓迎です!ありがとうございました!

4

3 に答える 3

3

コードを逆にします。関数は単純に入力を受け取り、出力を返し、値を出力するループから呼び出される必要があります。

例えば:

def footToMeter(foot):
    return foot * .305

print("Feet \t Meters")
for foot in range(1,11):
    print(foot, "\t", footToMeter(foot))
于 2013-10-09T02:20:52.833 に答える
1

コードは次のとおりですが、2 つのテーブルの行数が同じであることを確認する必要があります。

メーターの範囲を から に変更したことに注意しrange(20, 69, 6)てくださいrange(20, 75, 6)

ところで私はpython3を持っていないので、自分でpython3に変更してみてください:)

foot = 1
meter = 20


def footToMeter(foot):
    return foot * .305


def meterToFoot(meter):
    return round((meter/.305),3)


print "Feet \t Meters |\t Meters \t Feet"
for foot, meter in zip(range(1, 11), range(20, 75, 6)):
    print ("%s \t %s \t|\t %s \t %s" 
            % (foot, footToMeter(foot), meter, meterToFoot(meter)))
于 2013-10-09T03:25:19.233 に答える
0

ANSIのような特別なエスケープ シーケンスを使用しない限り、(古いタイプライターのような) print ステートメントは、コンソールにテキストを左から右に書き込み、最後の文字の後の次の行または最後の画面の列に改行します。

思いどおりに動作させるには、単位変換と印刷の問題を別々に処理する必要があります。変換関数は、変換された値のみを返す必要があります。次に、別のコード ブロックまたは関数の印刷と書式設定を処理できます。

期待どおりに動作するはずのコードを次に示します。より良い結果を得るために文字列の書式設定を使用しています。

def footToMeter(foot):
    return foot * .305

def meterToFoot(meter):
    return meter / .305

# printing the header
print "Feet\tMeters\t|\tMeters\tFeet\n"

# printing the values
feet, meters = 1, 20
for i in range(1, 11):
    print "%0.3f\t%0.3f\t|\t%0.3f\t%0.3f" % (feet, footToMeter(feet), meters, meterToFoot(meters))
    feet += 1
    meters += 4 + i % 2 * 2
于 2013-10-09T03:26:15.160 に答える