“ Str”对象不可调用,尽管我将其转换为“ int”

时间:2019-03-03 14:03:37

标签: python

我刚刚开始学习编码,所以我是新手。

我一直在尝试创建一个程序,询问用户所在城市的温度,然后将其转换为华氏温度(如果用户的温度为摄氏温度,反之亦然)。

但是,当我尝试调用变量“ temperature”(用户在其中输入温度)时,它说我无法调用str对象,尽管我使用int()函数将其转换为整数。 / p>

我该如何解决这个问题?

这是我的代码:

temperature = int(input(("What's the current temperature in your city? (please type only numbers)")))


temperature_metric = input("Is it in celsius or fahrenheit?") 
while temperature_metric not in ['celsius', 'fahrenheit']:

    print("Please type 'celsius' or 'fahrenheit'.")
    temperature_metric = input()

if temperature_metric == 'celsius':
    print("Your temperature in fahrenheit is: "(9/5 * temperature) + 32)

elif temperature_metric == 'fahrenheit':
    print("Your temperature in celsius is: " ((5/9) * (temperature - 32)))

3 个答案:

答案 0 :(得分:2)

您的两个打印语句缺少逗号,就这样!

if temperature_metric == 'celsius':
    print("Your temperature in fahrenheit is: ", (9/5 * temperature) + 32)

elif temperature_metric == 'fahrenheit':
    print("Your temperature in celsius is: " , ((5/9) * (temperature - 32)))

答案 1 :(得分:0)

错误最终出现在您的打印语句中,例如:

print("Your temperature in celsius is: " ((5/9) * (temperature - 32)))

要分解它:

print("..."(expr))

从语法上讲,print的参数是一个函数调用,其中“ function”是一个字符串;错误所指向的对象。

其他答案已经显示了如何解决此问题,这是一些方法:

  • 使用与+的字符串连接,这需要两个字符串:print("message " + str(temperature))
  • print使用单独的参数:print("message", temperature)。请注意,由于print在参数之间插入了空格,因此我省略了空格。
  • 使用格式字符串语法:print(f"message {temperature}")

我个人更喜欢第三个,因为它不依赖打印,并且使消息保持整洁。

答案 2 :(得分:-1)

您没有转换if-elif中的整数部分。您可以只打印整数或字符串值。要打印整数和字符串值,您需要使用str()将整数转换为字符串。因此,代码应如下所示:

temperature = int(input(("What's the current temperature in your city? (please type only numbers)")))


temperature_metric = input("Is it in celsius or fahrenheit?") 
while temperature_metric not in ['celsius', 'fahrenheit']:

    print("Please type 'celsius' or 'fahrenheit'.")
    temperature_metric = input()

    if temperature_metric == 'celsius':
        print("Your temperature in fahrenheit is: " + str((9/5 * temperature) + 32))

    elif temperature_metric == 'fahrenheit':
        print("Your temperature in celsius is: " + str(((5/9) * (temperature - 32))))