0

私はいくつかの計算を行うための楽しみのためのプロジェクトに取り組んでおり、助けが必要です。

私のプログラムからの1つのモジュール:

def ARK(rawArk):
    refArk = rawArk/200
    arkTrit = refArk*300
    arkMeg = refArk*333
    arkZyd = refArk*166
    print "Totals from your Arkonor:"
    print "Tritanium=", arkTrit
    print "Megacyte=", arkMeg
    print "Zydrine=", arkZyd
    return arkTrit, arkMeg, arkZyd

現在、単純な除算と乗算を行っているだけです。私がやりたいことは、残りでこれができるようになることです。

したがって、「refArk = rawArk/200」の合計が 16.3 になる場合、16.0 と 0.3 を分離し、それらを個別の計算用の個別の変数として使用できるようにしたいと考えています。

ここのところ:

def ARK(rawArk):
    refArk = float(rawArk/200)
    arkTrit = refArk*300
    arkMeg = refArk*333
    arkZyd = refArk*166
    print "Totals from your Arkonor:"
    print "Tritanium=", arkTrit
    print "Megacyte=", arkMeg
    print "Zydrine=", arkZyd
    strval = str(refArk)
    head,tail = strval.split(".")
    whole = float(head)
    frac = float("."+tail)
    print whole
    print frac
    return arkTrit, arkMeg, arkZyd

def main():
    rawArk=input("How much Arkonor?")
    ARK(rawArk)
    return

main()

入力値として「450」を使用

戻り値

How much Arkonor?450
Totals from your Arkonor:
Tritanium= 600.0
Megacyte= 666.0
Zydrine= 332.0
2.0
0.0

2.0 は正しいですが、0.0 は 0.25 にする必要があります

「rawArk/200」から float() を削除すると、エラーが発生します。

How much Arkonor?450
Totals from your Arkonor:
Tritanium= 600
Megacyte= 666
Zydrine= 332

Traceback (most recent call last):
  File "E:\eve stuff\Calculator\test.py", line 23, in <module>
    main()
  File "E:\eve stuff\Calculator\test.py", line 20, in main
    ARK(rawArk)
  File "E:\eve stuff\Calculator\test.py", line 11, in ARK
    head,tail = strval.split(".")
ValueError: need more than 1 value to unpack
4

4 に答える 4

1

なぜそうしないのですか:

intpart=int(variable)
decimalpart=variable-intpart

これは、文字列にキャストしてから分割するよりも効率的であると思います。

于 2012-06-26T18:24:14.143 に答える
1

最初にラウンド関数を使用してから、分割を使用することができます

refArk = refArk.split(".")
于 2012-06-26T18:17:15.357 に答える
1

数値的に

val1 = 22.0
val2 = 7.0
whole,frac = divmod(val1,val2)
frac = frac/val1

ハックのようなものですが、文字列があります

val = 22.0/7.0
strval = str(val)
head,tail = strval.split(".")
whole = float(head)
frac = float("."+tail)

どちらにしても

>>> frac
0.14285714286000001
>>> whole
3.0
于 2012-06-26T18:17:42.450 に答える
0

IDLE での次のセッションでは、問題の解決方法が示されます。

>>> lis=str(refArk).split('.')
>>> lis[-1]='.'+lis[-1]
>>> map(float,lis)
[16.0, 0.3]
于 2012-06-26T18:16:50.723 に答える