【问题标题】:Compute 2^x where x is the user input计算 2^x 其中 x 是用户输入
【发布时间】:2016-08-15 22:10:37
【问题描述】:

我已经尝试为这个问题构建异常,如下面的问题中所问。不幸的是我不能让它工作。我将不胜感激任何输入。提前谢谢你。

计算 2^x,其中 x 是用户输入。 x 应大于或等于 5 且小于或等于 25。如果用户输入不是整数,则引发异常。如果 x 小于 5 且大于 25,则创建自定义异常并引发。然后添加 2x 的数字。比如用户输入 6,那么找到 26 = 64,所以数字之和是 6 + 4 = 10。

import sys

i = int(raw_input("Please provide a value for x (between 5 and 25): " ))

try:

x = int(i)

except ValueError as v:
    print 'You did not enter a valid integer',v

except NotAValidValue as n:
    if x < 5 or x > 25:
        print 'Your entry is not valid. Please provide a number between 5 and 25',n
    sys.exit(0)

    exp = 2 ** x

print(exp)

再次感谢您抽出宝贵时间。

【问题讨论】:

  • 堆栈溢出不是在这里让我们做你的功课,尝试一些事情,如果你遇到一个特定的问题或疑问,我们会帮助你。到目前为止,您尝试过哪些不起作用的方法?

标签: python exception exception-handling


【解决方案1】:

这是一个工作示例,它是为在 python 2.x 上执行而编写的:

import sys

try:
    x = int(raw_input("Please provide a value for x (between 5 and 25): "))

    if x < 5 or x > 25:
        print('Your entry is not valid {0}.' +
              'Please provide a number between 5 and 25'.format(x))
    else:
        exp = 2 ** x
        print(exp)
except ValueError as v:
    print('You did not enter a valid integer {0}'.format(v))

虽然有一个建议,但请仔细阅读并理解所有代码并开始 在这里和那里调整它,让它成为你的。你不会“按原样”使用其他人的代码学到太多东西,下次尝试更具体地询问你的代码的哪些特定部分不理解:)

玩得开心学习 python!

【讨论】:

  • try: x = int(raw_input("请为 x 提供一个值(介于 5 和 25 之间):")) if x 25: print('您的输入无效. ' + '请提供一个介于 5 和 25 之间的数字'.format(x)) else: exp = 2 ** x print "2^x 对于这个输入的解是:", exp digits = [ int(char) for char in str(exp) ] total = sum(digits ) print "数字的总和是:",除了 ValueError as v: print('You did not enter a valid integer!! {0}'.format(v ))
  • 感谢您的帮助。我会记住你在回复中提到的一切。我成功解决了这个问题。
  • @Jared 很高兴听到这个消息,顺便说一句,在 StackOverflow 中感谢的最佳方式是接受它对您帮助最大的答案
【解决方案2】:

在python中定义自定义异常的方式如下图所示。您需要将每个自定义异常定义为 Exception 类的子类。然后,您可以使用 catch-except 块捕获您自己的自定义异常。

import sys

class TooSmallExc(Exception):
    def __init__(self):
        Exception.__init__(self,"The number is less than 5") 

class TooLargeExc(Exception):
    def __init__(self):
        Exception.__init__(self,"The number is greater than 25") 

print 'How are you?'
i = raw_input("Please provide a value for x (between 5 and 25): " )

try:
    x = int(i)
    if x<5:
    raise TooSmallExc
    if x>25:
    raise TooLargeExc
except ValueError:
    print 'I just caught a ValueError exception, which is a Python built-in exception'
except TooSmallExc:
    print 'I just caught a custom exception that I made for integers less than 5'
except TooLargeExc:
    print 'I just caught a custom exception that I made for integers greater than 25'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多