1
abir=float(15.67)
aiki=float(17.23) 
auc=float(0.75)
adort=float(93.2)
abes=float
be=float
an=float
kn=float
kontrol=1
x=float
def giris():
        print("Yari-Deneysel Kutle Formulunden Yararlanarak Baglanma Enerjisini Bulmak Icin :")       
        an=input("Atom Numarasini Giriniz  : ")
        global kn
        global x
        kn=an
        x=an*3
        print(an,kn,x)
        a=float(abir*kn)
        b=float(aiki*(kn**(2.0/3.0)))
        c=float(auc*(an**2)/(kn**(1.0/3.0)))
        d=float(adort*((kn-(2*an))**2)/kn)
        e=float(abes/(kn**(0.5)))
        be=a-b-c-d+e
        nb=float(be/kn)
        print("Atom Numarasi :",kn)
        print("Kutle Numarasi :",an)
        print("Toplam Baglanma Enerjisi : ",be," MeV'dir.")
        print("Nukleon Basi Baglanma Enerjisi : ",nb," MeV'dir.")
        print(kn)
        kn+=1
def nokontrol():
        if kn>0:
                if an>0:
                        if kn%2==0:
                                if an%2==0:
                                        abes=12
                                        formul()
                                        kontrol=0
                                else:
                                        abes=0
                                        formul()
                                        kontrol=0
                        else:
                                if an%2==0:
                                        abes=0
                                        formul()
                                        kontrol=0
                                else:
                                        abes=-12
                                        formul()
                                        kontrol=0
                elif an<0:
                        print("Atom Numarasi Sifirdan Kucuk Olamaz.")
                else:
                        print("Atom Numarasi Sifir Olamaz.")
        elif kn<0:
                print("Kutle Numarasi Sifirdan Kucuk Olamaz.")
        elif kn==0 and an==0:
                print("Kutle Numarasi ve Atom Numarasi Sifir Olamaz.")
while kontrol==1:        
        giris()
        while an==x:
                nokontrol()

エラーは次のとおりです。

Traceback (most recent call last):
    a=float(abir*kn)
TypeError: can't multiply sequence by non-int of type 'float'

結果: Yari-Deneysel Kutle Formulunden Yararlanarak Baglanma Enerjisini Bulmak Icin ; アトム ヌマラシニ ギリニズ : 28 28 28 282828

28 * 3 = 282828 ??? correct : 28 * 3 = 84?

助けてください、私は物理学の学習のために Python を始めたばかりです。私の間違いを訂正していただければ幸いです。コードは python 3.3 です。パラメータは原子番号an、質量数knです。"an==3*kn"1 kn になるまで増加し続けます。すべてに拡張された「formul()」は、結果の印刷を実装します。float 型が間違っています。d of alone.I could not fix this error is a kinどうすればいいですか? 私の英語が下手です、ごめんなさい

4

5 に答える 5

3

の5行目にgiris

kn=an

knシーケンスである文字列に設定すると、pythonは文句を言います。

于 2013-04-03T15:42:20.037 に答える
2

実際の浮動小数点値ではなく、いくつかの変数 ( abesbeanknおよびx) を関数に割り当てています。float次に、この倍数を掛けようとすると、オブジェクトTypeErrorを掛けることができないため、 が得られtypeます。これらの値を関数の外で初期化したい場合は、単に または に設定して0くださいNone

もちろん、特定の問題は、呼び出しから文字列に割り当てkn=anた後に再割り当てすることです。これが、Python が「シーケンス」について不平を言う理由です。しかし、私が言ったように、それよりも大きな問題があります。aninput

于 2013-04-03T15:42:35.093 に答える
1

以下は、あなたが期待するかもしれないことをしません:

abes=float
be=float
an=float
kn=float

単純にゼロに初期化したい場合は、次のように記述します。

abes=0.0

また、

abir=float(15.67)

次のように書くことができます

abir=15.67

など。float()呼び出しは冗長です。

同じことが言えます

a=float(abir*kn)

最後に、コードのどこかで、abirシーケンス (リストやタプルなど) になっていることを示していません。

于 2013-04-03T15:37:56.720 に答える
0

28*3 = 282828 を取得している場合、実際に起こっていることは、28 が文字列であることです。「28」*3 は「282828」です。文字列をintint('28')またはfloatに変更できますfloat('28')

あなたのコードを見ると、これは行で起こっていると思います

an=input("Atom Numarasini Giriniz  : ")

に変更してみてください

an=int(input("Atom Numarasini Giriniz  : "))
于 2013-04-03T15:43:20.660 に答える