【问题标题】:Try/Except error Python?尝试/排除错误 Python?
【发布时间】:2015-11-10 02:30:22
【问题描述】:

我的代码的输出应该是这样的:

加密:

Enter 1 to encipher or 2 to decipher: 1
Enter text you wish to encipher: My dog has fleas.
Enter the number of characters to shift: 7
The encrypted text is: Fr whz atl yextl.

解密:

Enter 1 to encipher or 2 to decipher: 2
Enter text you wish to decipher: Fr whz atl yextl.
The most likely shift is: 7
My dog has fleas.

到目前为止,我有这个并且我不断收到无效的语法。我对如何在输出中输入答案感到困惑。它应该是尝试/除一个while循环,因为它是一个学校作业。

while True: 
    try: 
        num = int(raw_input('Enter 1 or 2:'))
        if num in [1,2]:
            break
        print "You have to enter 1 or 2, try again"

    if (num == 1):
        num = int(raw_input('Enter a number:'))
        num = int(raw_input('encipher'))
        print "Enter text to encipher"
        print "Enter the number of characters you want to shift" 


    elif (num == 2):
        num = int(raw_input('Enter a number:'))
        num = int(raw_input('decipher'))
        print "Enter text to decipher"
        print "Enter the number of characters you want to shift"

【问题讨论】:

  • 这是您在程序中使用的缩进吗?
  • 是的。我刚开始使用 python,缩进让我很困惑。

标签: python try-catch except try-except


【解决方案1】:

您没有正确使用try-except。 这个想法是尝试一段代码;但如果遇到错误/异常,请执行其他操作。

while True: 
    try: 
        num = int(raw_input('Enter 1 or 2:'))
        if num in [1,2]:
            break
        print "You have to enter 1 or 2, try again"

在您的脚本中,您尝试接收一个数组中的 int,并且您正在处理它不在您预定义的选项列表中的场景。但是,如果它们是该代码块的异常,则您不会做任何事情。

要使用try-except,请执行以下操作:

while True: 
    try: 
        num = int(raw_input('Enter 1 or 2:'))
        if num in [1,2]:
            break
        print "You have to enter 1 or 2, try again"
    except Exception, e:
        print e

【讨论】:

    【解决方案2】:

    您不一定需要使用 try/except,但如果您想尝试立即转换为整数,则可以。主要问题是您在任何地方都没有 except 块。

    while True:
        try:
            num = int(raw_input('Enter 1 or 2:'))
            if num in [1,2]:
                break
        except ValueError as e:
            print "You didn't enter a number.  Try again"
    

    【讨论】:

    • 我认为您应该将其缩小到except ValueError。捕获所有异常可能会隐藏其他错误。
    猜你喜欢
    • 2019-02-04
    • 2018-08-09
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多