python - 当我输入 no 时,它无法正确执行

标签 python python-3.x

import webbrowser
import time
import sys
import urllib.request


def con():
    cont = input("Do you want to continue? ")
    if (cont.lower() == "yes" or cont.lower() == "y"):
        main()
    elif (cont.lower() == "no" or cont.lower() == "n"):
        sys.exit()
    else:
        print("Invalid answer. Please try again")
        time.sleep(1)
        con()


def main():
    try:
        website = input("What website do you want to go to? (ex. Example.com) ")
        fWebsite = "http://{}".format(website)
        time.sleep(1)
        if (urllib.request.urlopen(fWebsite).getcode() == 200):
            webbrowser.open(fWebsite)
        time.sleep(1)

    except:
        print("Invalid website. Please enter another one")
        time.sleep(1)
        main()
    con()


main()

当代码运行 con() 时,每当我尝试输入 no 时,它总是显示无效网站。请输入另一项。如何修复它退出程序?其他一切都有效,只是这一部分。

最佳答案

sys.exit 函数通过引发 SystemExit 异常来工作。您的代码有一个裸露的 except block ,它捕获该异常并抑制其正常目的(即安静退出)。

解决此问题的最佳方法是使您的 except 子句更具体地了解您希望捕获的异常类型。捕获所有异常几乎总是是一个坏主意(唯一的异常(exception)是当您捕获所有异常,但记录并重新引发大多数异常时)。

由于您的特定代码正在尝试处理来自 urllib 的异常,因此捕获 urllib.error.URLError可能是您最好的选择。

关于python - 当我输入 no 时,它无法正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843393/

相关文章:

python - "Permission Denied"试图在 Windows 10 上运行 Python

python - 名称 'sp' 未明确定义

python - 在python 3中将utf-8编码的字符串转换为纯文本

python - DT.strptime解释%d错误

将函数作为可选参数的 Python 函数定义

python-3.x - 线性回归中的混淆矩阵

python - 为什么 `object.__init__` 不带参数

python - 使用 Python 解析混合平面文件数据以写入 xls

python - 使用 Python 将 Pandas 数据框中的行作为单个文档插入到 mongodb 集合中

python - 如何使用列表值对字典进行排序?