【问题标题】:Program can't read integer values [duplicate]程序无法读取整数值[重复]
【发布时间】:2018-04-17 05:47:13
【问题描述】:

以下代码是检查变量并输出(打印)一个值。尽管变量类型(intfloatstr)在 anaconda 3.6 上运行时,我得到的唯一输出是 One value is a string。但是,它在 Programiz.com 上的 DataCamp 平台上完美运行,请问我哪里出错了。下面是代码:

essa1 = input("please enter essa1")
essa2 = input("please enter essa2")
if type(essa1) == str and  type(essa2) != str:
    print("One value is a string")
elif type(essa1) == int and type(essa2) == int:
    if essa1 == essa2:
        print("the two variables are equal")
    elif essa1 < essa2:
        print("essa1 is bigger")
    else:
        print("essa1 is now smaller")
else:
    print("One value is a string")

【问题讨论】:

    标签: python string variables types int


    【解决方案1】:

    这是因为input() 始终被读取为str

    如果您读取值42,您实际上读取的是str 类型的值"42"。只有将其转换为 intfloat 等时,值才会更改类型。

    i = input('enter an int') # type 42 and press enter
    # i now contains the string value "42"
    i = int(i) # cast value to type int
    # i now contains the int value 42
    

    如果您想在尝试强制转换之前检查您的字符串值是否包含 int,您可以尝试i.isdigit(),如果字符串仅包含数字,它将返回 true。

    【讨论】:

    • Python 中没有double,而是float
    • 好点。已更新。
    • 抱歉,各位延迟回复正在尝试修复这些东西。
    • 感谢 the_storyteller 的贡献。但请注意,该程序并非旨在输出与输入有关的语句,无论是整数还是字符串。如果我按照你说的方式投射它,它会引发错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多