当前位置: 首页 > 面试题库 >

ValueError:int()以10为基的无效文字:“停止”

饶滨海
2023-03-14
问题内容

每次尝试编码时,它都有效,但是当我键入代码时'stop',出现错误:

ValueError:int()以10为基的无效文字:“停止”

def guessingGame():
    global randomNum
    guessTry = 3

    while True:
        guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop:  ')
        if int(guess) == randomNum:
            print('Correct')
            break

        if int(guess) < randomNum:
            print('Too Low')
            guessTry = guessTry - 1
            print('You have, ' + str(guessTry) + ' Guesses Left')

        if int(guess) > randomNum:
            print('Too High')
            guessTry = guessTry - 1
            print('You have, ' + str(guessTry) + ' Guesses Left')

        if guessTry == 0:
            print('You have no more tries')
            return

        if str(guess) == 'stop' or str(guess) == 'Stop':
            break

问题答案:

传递给的字符串int()应仅包含数字:

>>> int("stop")
Traceback (most recent call last):
  File "<ipython-input-114-e5503af2dc1c>", line 1, in <module>
    int("stop")
ValueError: invalid literal for int() with base 10: 'stop'

一个快速的解决方法是在此处使用异常处理:

def guessingGame():
    global randomNum
    global userScore
    guessTry = 3

    while True:
        guess = input('Guess a Number between 1 - 10, You have 3 Tries, or Enter Stop:  ')
        try:
            if int(guess) == randomNum:
                print('Correct')
                break

            if int(guess) < randomNum:
               print('Too Low')
               guessTry = guessTry - 1
               print('You have, ' + str(guessTry) + ' Guesses Left')

            if int(guess) > randomNum:
                print('Too High')
                guessTry = guessTry - 1
                print('You have, ' + str(guessTry) + ' Guesses Left')

            if guessTry == 0:
                print('You have no more tries')
                return
        except ValueError:
            #no need of str() here
            if guess.lower() == 'stop':
                break
guessingGame()

而且您可以使用guess.lower() == 'stop'匹配“ stop”的任何大小写组合:

>>> "Stop".lower() == "stop"
True
>>> "SToP".lower() == "stop"
True
>>> "sTOp".lower() == "stop"
True


 类似资料:
  • 问题内容: 我编写了一个程序来求解,然后将其投影在图形上。问题是,每当出现错误时: ValueError:int()以10为底的无效文字。 有什么建议? 这是回溯: 每当我输入一个小于1但大于0的数字时,就会出现问题。在此示例中为0.3。 这是我的代码: 问题答案: 您的回溯告诉您采用整数,您试图给出一个十进制数,因此您需要使用: 这应该按预期工作: 计算机以各种不同的方式存储数字。Python有

  • 问题内容: 我正在创建一个读取文件的程序,如果文件的第一行不为空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不为空,则继续。但是,我收到此错误: 它正在读取第一行,但无法将其转换为整数。 我该怎么做才能解决此问题? 代码: 问题答案: 仅作记录: 我在这里…

  • 我正在使用创建通知。根据我的文件: 在我的< code>urls.py中。我通过在我的视图中使用它来生成测试通知。py: 我可以轻松获取此url中的未读通知数量: 它返回,如我所愿。但是使用我无法获取通知列表,我收到此错误: 作为我使用任何帮助将不胜感激。 完全回溯 环境: 请求方法:GET请求URL:http://127.0.0.1:8000/inbox/notifications/api/un

  • 给定一个有符号的32位整数x,返回其数字颠倒的x。如果反转x导致值超出有符号32位整数范围[-2**31, 2**31 - 1],则返回0。 假设环境不允许存储64位整数(有符号或无符号)。 这是我的意见书 int()方法应该允许我传递一个字符串值(“12”),但是它返回一个错误,说它是int()的无效文本。 第3行中的变量sp是str而不是float,所以我不知道为什么它不在leetcode提交

  • 问题内容: 我正在尝试做: 我得到以下错误: ValueError:以10为底的long()无效文字:‘12 .0’ 我的数据如下所示: 知道如何正确进行转换吗? 感谢帮助。 问题答案: 有一些值,无法将其转换为。 您可以使用并获得存在问题的价值: 如果需要检查值有问题的行,请与mask配合使用: 样品:

  • 问题内容: 我正在为某个项目编写代码来确定信用卡的有效性,但是我碰壁了,看来到目前为止我尝试过的所有方法都没有用。 这给了sumofodds函数一个错误,其中j = int(card [i]) 错误是“无效的文字为Int()与Base 10 有没有人可以给我一些帮助? 这是那些想知道的人的完整追溯 问题答案: 好吧,无论您输入什么内容,实际上都不是以10为底的数字。这包括非数字字符或空格的任何内容