2016-07-17 5 views
1

をstrをするフロートを変換できません。ここのコードです:もちろん印刷数学:暗黙的に

import time 
time.sleep(0.7) 

while True: 
    print("Enter the word 'quit' to quit the calculator :(") 
    print("Enter the word 'freenet' to enroll the SSHcrack") 
    user_input = input(": ") 

    if user_input == "quit": 
     break 
elif user_input == "freenet": 
    num1 = float(input("Enter a Port to Crack:")) 
    num2 = input("Enter a Network Name") 
    num3 = float(input("Enter an IP-Address,(without symbols!):")) 
    result = num3/num1 
    result2 = result/13 
    print("Injectable SSH "+ result2 +"for the Network "+num2) 

これは単なる計算機ですが(私が唯一の問題のコードブロックを追加しました)、私は周りにテストしたいですあなたが明示的に文字列に結果2NUM2を変換する必要があり

Traceback (most recent call last): 
    File "<mypath>", line 51, in <module> 
    print("Injectable SSH "+ result2 +"for the Network "+num2) 
TypeError: Can't convert 'float' object to str implicitly 

答えて

2

は述べている:あなたは明示的ををstrには「フロート」を変換する必要があります。

これはあなたの問題が修正されています。

さらに良い
print("Injectable SSH "+ str(result2) + " for the Network " + str(num2)) 

format stringsを使用します。

print("Injectable SSH {} for the Network {}".format(result2, num2)) 

彼らはあなたが、きれいに構造化された透明の書式あなたのメッセージを維持するのに役立ちます。

0

:print文で、それは私にこの例外TypeErrorを与えます。エラーメッセージとして

print("Injectable SSH "+ str(result2) +"for the Network "+ str(num2)) 
0

問題は、あなたが

print("Injectable SSH "+ result2 +"for the Network "+num2) 

行の文字列にフロート(10進数)を追加しようとしているということです「Interjectable SSHは、」文字列で、結果2はフロートで、Pythonは方法はありません文字列に10進数を追加する方法を知っている。いくつかの言語は自動的に浮動小数点を文字列に変換しますが、Pythonはそうではありません。したがって、「floatオブジェクトを暗黙的にstrに変換できません」というエラーです。

明示的には、組み込みのstr()メソッドを使用してresult2とnum2の両方を文字列に変換します。必要な変更を加えれば、次のような行が表示されます。

これを行うには、いくつかの方法があります。それを調べたい場合は、 "python string formatting"のチュートリアルを参照してください。

0

Pythonでは、文字列オブジェクトを連結するために '+'が使用されます。 もちろん、Python 2.7では、 '、'を使用して、印刷のための任意のタイプのオブジェクトの連結/結合を行っていたでしょう。

ので、解決策は次のようになることがあります。

print("Injectable SSH "+ str(result2) +"for the Network "+num2) 
関連する問題