【问题标题】:Variable checking in Python [duplicate]Python中的变量检查[重复]
【发布时间】:2015-01-18 20:51:01
【问题描述】:

我一直在尝试找出检查变量类型或 while do 语句的方法,但我很困惑,不知道我的代码发生了什么。 我想检查 end 是否是整数,所以我下定了决心。 非常感谢!!

checked=0
while (checked==0):
    end=input('Give me an integer number!')
    if  isinstance(end,(int)):
        checked=1
    else:
        checked=0
        print('This is not an integer!')

【问题讨论】:

  • input 的输出将始终是一个字符串,无论您在那里输入什么。你可以做if str(int(end)) == end:
  • 如果你使用的是 Python 3,input() 总是返回一个字符串。
  • end 将始终是一个字符串,因为这是输入返回的内容。
  • 考虑到我使用的是 python 2.7.6,我是否必须对你所说的进行任何更改? @L3viathan
  • 看起来你可能在追求:stackoverflow.com/questions/23294658/…

标签: python variables integer


【解决方案1】:

根据 Python 格言 "Easier to ask for forgiveness than permission" ,您可以执行以下操作:

while True:
  try:
    end = int(input("Enter an integer"))
    break
  except ValueError:
    print("that's no integer")

如果转换为int 失败,则跳过break 并在except ValueError 处理程序中继续执行。如果转换成功,则break退出循环,可以确定end是一个整数。

【讨论】:

  • 我无法理解的是,虽然我发现了很多关于 while True 的主题,但是这个循环继续的方式。每次 end 不是整数时都继续?
  • 它永远持续下去,除非它成功(因为它然后breaks 退出循环)。
  • break 在将输入成功转换为int 后终止它。如果转换失败,则跳过break
  • 复制上述代码后出现以下错误:...except value error: SyntaxError :Invalid Syntax
  • 肯定有从Value Error编辑到ValueError
【解决方案2】:

除非强制转换,否则用户输入将始终是字符串。使用try/except 块。

try:
    entry = int(input('Enter a integer: '))

except:
    print('That's not an integer.')

【讨论】:

  • 不要使用 eval 进行简单的转换。 eval 很危险
  • 是的,我的错。我删除了它。
  • 裸露的except 也很糟糕。为什么要复制我的答案?
  • 其实我并没有打算复制你的答案。
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 2018-10-06
  • 2019-10-24
  • 2013-03-28
  • 2017-12-15
  • 2018-06-16
相关资源
最近更新 更多