使用用户输入打印数学:无法隐式地将float转换为str

时间:2016-07-17 18:41:46

标签: python

以下是代码:

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)

当然这只是一个计算器(我只添加了问题代码块),我想用print语句进行测试,但它给了我这个TypeError:

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

4 个答案:

答案 0 :(得分:2)

正如错误消息所述:您必须转换&#39; float&#39; str 明确地

这可以解决您的问题:

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

更好的是,使用format strings

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

它们可以帮助您保持信息格式清晰,结构清晰,透明。

答案 1 :(得分:0)

您必须将 result2 num2 显式转换为字符串。

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

答案 2 :(得分:0)

问题是你试图在行

中的字符串中添加一个浮点数(十进制)
print("Injectable SSH "+ result2 +"for the Network "+num2) 

“Interjectable SSH”是一个字符串,result2是一个浮点数,而python无法知道如何向字符串添加小数。有些语言会自动将float转换为字符串,但python不会,因此错误“无法将'浮动'对象转换为str隐式”。

您需要做的是显式使用内置的str()方法将result2和num2转换为字符串。通过必要的更改,该行看起来像这样:

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

在python中还有其他一些方法可以做到这一点。如果你想查看它,请在“python字符串格式化”中查找教程。

答案 3 :(得分:0)

在python中,'+'用于连接字符串对象。 在python 2.7中的当然,你可以使用','对任何类型的对象进行串联/连接。

所以,解决方案可能就像:

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