python我想以一种互动的方式将我的猜测游戏的输入限制为整数

python我想以一种互动的方式将我的猜测游戏的输入限制为整数,python,performance,pygame,Python,Performance,Pygame,我是新手。我使用变量number_gustized来存储猜测的数字,正确的数字是9。我希望玩这个游戏的人只输入整数,我理解变量存储字符串。第3行创建了一个错误值error:int的无效文本,以10为底:“e”。我理解这是为什么,并希望能以互动的方式帮助解决这个问题。顺便说一下,我正在使用Python3,下面是我的代码 number_guessed = input('Guess a number between 0 and 10? ') guess_count = 1 if type(int(n

我是新手。我使用变量number_gustized来存储猜测的数字,正确的数字是9。我希望玩这个游戏的人只输入整数,我理解变量存储字符串。第3行创建了一个错误值error:int的无效文本,以10为底:“e”。我理解这是为什么,并希望能以互动的方式帮助解决这个问题。顺便说一下,我正在使用Python3,下面是我的代码

number_guessed = input('Guess a number between 0 and 10?  ')
guess_count = 1
if type(int(number_guessed)) != int:   # restricting input to integers: start
    print('Whole numbers only!')
    number_guessed = input('Guess a number between 0 and 10?  ')   # restricting input to integers: end
if int(number_guessed) == 9:
    print("Correct. That's some good luck right there:)")
while int(number_guessed) != 9:
    number_guessed = input('Try Again! Guess a number between 0 and 10?  ')
    if type(int(number_guessed)) != int:  # restricting input to integers: start
        print('Whole numbers only!')
        number_guessed = input('Guess a number between 0 and 10?  ')  # restricting input to integers: end
    guess_count += 1
    if int(number_guessed) == 9:
        print("Correct. That's some good luck right there:)")
        exit()
    if guess_count == 3:
        msg = f"""
You're out of Luck!
It was 9 by the way
"""
        print(msg)

请拯救我的灵魂。非常感谢。

您的逻辑是正确的,但在比较之前您正在向ing提交您的输入。 如果猜到了typeintnumber!=int:

相反,您应该在比较数字之前尝试将原始输入转换为int。您可以将上面的行替换为

try:
    number_guessed = int(number_guessed)
except:
   pass
if type(number_guessed) != int: 
   ... 
此代码将首先尝试在try块中将输入转换为int。如果成功,您的变量将在稍后的代码中被视为int,从而将用户重定向到If子句。 如果强制转换失败,则except块内的代码将运行。except子句中的pass关键字告诉应用程序忽略try子句中发生的事情,因此猜测的数字将保持为字符串,从而将用户重定向到else子句

另一个注意事项——试着把你的代码升级一点。你在重复 两处逻辑相同-初始猜测行3-7和 随后的猜测第10-14行。尝试将代码重新构造为 将关键功能提取到单独的功能中

工作代码:

number_guessed = input('Guess a number between 0 and 10?  ')
guess_count = 1
try:
    number_guessed = int(number_guessed)
except:
   pass
if type(number_guessed) != int:   # restricting input to integers: start
    print('Whole numbers only!')
    number_guessed = input('Guess a number between 0 and 10?  ')   # restricting input to integers: end
if int(number_guessed) == 9:
    print("Correct. That's some good luck right there:)")
while int(number_guessed) != 9:
    number_guessed = input('Try Again! Guess a number between 0 and 10?  ')
    try:
        number_guessed = int(number_guessed)
    except:
        pass
    if type(number_guessed) != int:  # restricting input to integers: start
        print('Whole numbers only!')
        number_guessed = input('Guess a number between 0 and 10?  ')  # restricting input to integers: end
    guess_count += 1
    if int(number_guessed) == 9:
        print("Correct. That's some good luck right there:)")
        exit()
    if guess_count == 3:
        msg = f"""
You're out of Luck!
It was 9 by the way
"""
        print(msg)

您的逻辑是正确的,但在比较之前您正在将您的输入转换为ing。 如果猜到了typeintnumber!=int:

相反,您应该在比较数字之前尝试将原始输入转换为int。您可以将上面的行替换为

try:
    number_guessed = int(number_guessed)
except:
   pass
if type(number_guessed) != int: 
   ... 
此代码将首先尝试在try块中将输入转换为int。如果成功,您的变量将在稍后的代码中被视为int,从而将用户重定向到If子句。 如果强制转换失败,则except块内的代码将运行。except子句中的pass关键字告诉应用程序忽略try子句中发生的事情,因此猜测的数字将保持为字符串,从而将用户重定向到else子句

另一个注意事项——试着把你的代码升级一点。你在重复 两处逻辑相同-初始猜测行3-7和 随后的猜测第10-14行。尝试将代码重新构造为 将关键功能提取到单独的功能中

工作代码:

number_guessed = input('Guess a number between 0 and 10?  ')
guess_count = 1
try:
    number_guessed = int(number_guessed)
except:
   pass
if type(number_guessed) != int:   # restricting input to integers: start
    print('Whole numbers only!')
    number_guessed = input('Guess a number between 0 and 10?  ')   # restricting input to integers: end
if int(number_guessed) == 9:
    print("Correct. That's some good luck right there:)")
while int(number_guessed) != 9:
    number_guessed = input('Try Again! Guess a number between 0 and 10?  ')
    try:
        number_guessed = int(number_guessed)
    except:
        pass
    if type(number_guessed) != int:  # restricting input to integers: start
        print('Whole numbers only!')
        number_guessed = input('Guess a number between 0 and 10?  ')  # restricting input to integers: end
    guess_count += 1
    if int(number_guessed) == 9:
        print("Correct. That's some good luck right there:)")
        exit()
    if guess_count == 3:
        msg = f"""
You're out of Luck!
It was 9 by the way
"""
        print(msg)
不能在字符串上使用int。要解决此问题,您可以执行以下操作:

if type(number_guessed) is int:
    print('Whole numbers only!')
不能在字符串上使用int。要解决此问题,您可以执行以下操作:

if type(number_guessed) is int:
    print('Whole numbers only!')
您的问题是int将尝试将传递给它的任何内容转换为整数,当它不是可以转换为整数的值时,这将失败,导致引发ValueError异常

解决方案是像这样“捕获”该异常:

number_guessed = input('Guess a number between 0 and 10?  ')
try:
    # try to convert it to an actual integer instead of a string
    number_guessed = int(number_guessed)
except ValueError:
    print('Whole numbers only!')
不起作用的是尝试检查输入内容的类型,这将始终是一个字符串,因为您将数字作为文本输入,这是您试图解决的问题,因此一些建议的解决方案检查输入类型将不起作用。

您的问题是int将尝试将传递给它的任何内容转换为整数,当它不是可转换为整数的值时,将失败,从而引发ValueError异常

解决方案是像这样“捕获”该异常:

number_guessed = input('Guess a number between 0 and 10?  ')
try:
    # try to convert it to an actual integer instead of a string
    number_guessed = int(number_guessed)
except ValueError:
    print('Whole numbers only!')

不起作用的是尝试检查输入内容的类型,这将始终是一个字符串,因为您将数字作为文本输入,这是您试图解决的问题,因此一些建议的检查输入类型的解决方案将不起作用。

类似的方法可能会起作用。如果传递了字符串,则应使用字符串长度作为猜测。一般来说,使用isinstance方法更方便,它是一个内置函数。希望这有帮助:

_num=9 猜测=0 猜测计数=0 猜猜看!=_num: 如果猜测计数>=3: 打印“哦,不!” 打破 猜测=输入“猜测[0,10]中的数字” 如果isinstanceguess,int: 如果guess==_num: 打印“耶!” 打破 如果猜测!=数量: 猜测计数+=1 elif isinstanceguess,str: 如果lenguess==数量: 打印“耶” 打破 如果长度!=数量: 猜测计数+=1 其他: 猜测计数+=1
我也很抱歉进行编辑,我对iOS应用程序的效率不是很高类似的东西可能会起作用。如果传递字符串,它应该使用字符串长度作为猜测。一般来说,使用iInstance方法更方便,这是一个内置函数。希望这对您有所帮助:

_num=9 猜测=0 猜测计数=0 而猜测!=数量: 如果猜测计数>=3: 打印“哦,不 !” 打破 猜测=输入“猜测[0,10]中的数字” 如果isinstanceguess,int: 如果guess==_num: 打印“耶!” 打破 如果猜测!=数量: 猜测计数+=1 elif isinstanceguess,str: 如果lenguess==数量: 打印“耶” 打破 如果长度!=数量: 猜测计数+=1 其他: 猜测计数+=1 我也为我的编辑道歉,我对iOS应用的效率不是很高