Variable comes up as a string; TypeError: bad operand type for abs(): 'str'

Variable comes up as a string; TypeError: bad operand type for abs(): 'str'

当尝试 运行 这段代码时,它似乎坚持认为变量 x 是一个字符串,即使在仔细检查它是一个整数并将其转换为一个之后也是如此。

import time
x = 0

while True:
    print("")
    x = input("Please give a value for X.")
    try:
        int(x)
    except:
        print("")
        print("Sorry, please use an integer and try again!")
        time.sleep(1)
    else:
        int(x)
        break

abs(x)

正如标题所说,我得到的响应错误是这样的:

TypeError: bad operand type for abs(): 'str'

其他基本操作数也会出现这种情况。为什么它将变量检测为字符串,我该如何修复它?

做:

abs(int(x))

再次将 x 转换为整数

X 变量在您将其转换为 int 时未更新。应该是 x = int(x).

import time
x = 0

while True:
    print("")
    x = input("Please give a value for X.")
    try:
        x = int(x)
    except:
        print("")
        print("Sorry, please use an integer and try again!")
        time.sleep(1)
    else:
        x = int(x)
        break

print(abs(x))

函数 int() 接受一个参数,如果可能,将其转换为 int。它 returns 转换后的参数,但不修改它。因此,您可以按照以下示例使用它:

i=int("123")
i=int(12.5)

s="123"
i=int(s)

line = input("Please give a value for X.")
i=int(line)