gpt4 book ai didi

types - 在python 2.7中使用try/except进行异常处理

转载 作者:行者123 更新时间:2023-12-03 08:35:14 26 4
gpt4 key购买 nike

我正在尝试异常处理/错误捕获,并想知道为什么下面的代码不起作用。我正在使用python 2.7。我了解input()raw_input()之间的区别,并了解raw_input()在Python 3.0中已重命名为input()。如果输入整数,则代码将一直循环播放,直到输入字符串为止。输入字符串时出现以下错误消息。有没有办法解决这个问题,或者这仅仅是那些python怪癖之一?

  File "<some_directory_path_goes_here>", line 30, in <module>
enterAge = input('Enter your age as an integer: ')
File "<string>", line 1, in <module>
NameError: name '<user_entered_string_goes_here>' is not defined

在python 2.7中,我觉得代码仍然可以正常工作。

from types import IntType
age = 0
while True:
enterAge = input('Enter your age as an integer: ')
try:
if type(enterAge) is IntType:
num = enterAge
age = age + num
print str(age) + ' is old!'

except TypeError:
print 'You did\'t enter an integer'
break

最佳答案

try-except背后的想法是,您无需事先检查所有必要条件。就您而言,您无需检查try内的类型。由于存在if语句,因此在适当时不会引发异常。

另外,您绝对应该在Python 2上使用raw_input(),并记住它总是返回str。可以不同的是int(enterAge)的结果:

In [1]: int('4')
Out[1]: 4

In [2]: int('4f')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/lev/<ipython-input-2-523c771e7a8e> in <module>()
----> 1 int('4f')

ValueError: invalid literal for int() with base 10: '4f'

这是您需要在 try块中尝试并捕获 ValueError的过程。

编辑:显然我需要澄清一下答案,所以我将展示代码的外观:

age = 0
while True:
enterAge = raw_input('Enter your age as an integer: ')
try:
age += int(enterAge)
print age, 'is old!'

except ValueError:
print "You didn't enter an integer"
break

关于types - 在python 2.7中使用try/except进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11572677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com