Python 3.x python中错误跟踪的类型标识和转换

Python 3.x python中错误跟踪的类型标识和转换,python-3.x,error-handling,syntax-error,Python 3.x,Error Handling,Syntax Error,我正在写一个程序来生成随机数,然后让你猜已经生成的数字。 然而,作为一项扩展任务,我被要求使程序工作,即使在输入中放入一个字母,所以我创建了一个while循环来检查变量guess中的日期类型。但我不知道如何让它识别python中字母和数字之间的差异 我需要找到一种检查字符串的方法,看看它是否只包含数字,如果它包含数字,我需要将变量转换为int,以便程序可以继续,但是如果它不包含数字,我需要它要求用户再次输入数字 这是我的伪代码: while type(guess) != type(int)

我正在写一个程序来生成随机数,然后让你猜已经生成的数字。 然而,作为一项扩展任务,我被要求使程序工作,即使在输入中放入一个字母,所以我创建了一个while循环来检查变量guess中的日期类型。但我不知道如何让它识别python中字母和数字之间的差异

我需要找到一种检查字符串的方法,看看它是否只包含数字,如果它包含数字,我需要将变量转换为int,以便程序可以继续,但是如果它不包含数字,我需要它要求用户再次输入数字

这是我的伪代码:

while type(guess) != type(int)
    if type(guess) == type (**number**):
        guess = int(guess)
    else:
        guess = input('You did not input a number try again: ')
我想用这个来代替下面的粗体代码,但是我需要知道应该放什么来代替数字,以允许猜测变成int,这样我就可以避开while循环

这是我的原始代码:(我要替换的代码是第一个while循环,由**

import random
x=random.randint(1,100)
print (x)
guess = (input('Can you guess what it is? '))
num_guess=1
***while type(guess) != type(int):
    if type(guess) == type(int):
        guess = int(guess)
    else:
        guess = input('You did not input a number try again: '***)    
while guess != x:
    if guess < x:
        print ('No, the number I am thinking of is higher than ' + str(guess))
        guess = int(input('Guess again: '))
    elif guess > x:
        print ('No, the number I am thinking of is lower than ' + str(guess))
        guess = int(input('Guess again: '))
    else:
        guess = int(input('Guess again: '))
    num_guess = num_guess +1

print ('Well done! The answer was ' + str(x) + ' and you found it in ' + str(num_guess) + ' guesses.')
随机导入
x=random.randint(1100)
打印(x)
guess=(输入('你能猜出它是什么吗?'))
num_guess=1
***而类型(猜测)!=类型(整数):
如果类型(猜测)=类型(int):
猜测=int(猜测)
其他:
guess=input('您没有输入数字,请重试:'***)
而猜测!=x:
如果猜测x:
打印('不,我想的数字低于'+str(猜测))
guess=int(输入('再次猜测:'))
其他:
guess=int(输入('再次猜测:'))
num_guess=num_guess+1
print('做得好!答案是'+str(x)+',您在'+str(num_guess)+'guesss'中找到了它。'))

如果您查看文档,请提前感谢

这里列出了一些方法,如str.isnumeric,可以帮助您确定字符串中的内容

至于您的代码,如果您使用的是Python2,那么您应该使用原始输入而不是输入。这会将所有输入作为字符串提供给您,供您使用。如果您想确认答案,您必须将其转换为数字

另外值得一提的是,在python中执行类型检查时,应该使用isinstance。
这更像是python,当涉及到子类化时,可以防止您遇到奇怪的错误。

如果您查看文档的话

这里列出了一些方法,如str.isnumeric,可以帮助您确定字符串中的内容

至于您的代码,如果您使用的是Python2,那么您应该使用原始输入而不是输入。这会将所有输入作为字符串提供给您,供您使用。如果您想确认答案,您必须将其转换为数字

另外值得一提的是,在python中执行类型检查时,应该使用isinstance。
这更像是python,当涉及到子类化时,可以防止您遇到奇怪的错误。

您也可以使用这种方式:

import random
x = random.randint(1,100)
#Current guess count
num_guess=1
#maximum guess count
max_guess_guess = 3
while 1:
    try:
        guess = int(raw_input(' Can you guess what it is? '))
        if guess == x:
            print ('Well done! The answer was ' + str(x) + ' and you found it in ' + str(num_guess) + ' guesses.')
            break  
        elif guess < x:
            print ('No, the number I am thinking of is higher than ' + str(guess))
        elif guess > x:
            print ('No, the number I am thinking of is lower than ' + str(guess))
    except Exception, e:
        pass  
    if num_guess >= max_guess_guess:
        print ('You are fail to guess! The guess guess was over please try next time.' )
        break
    num_guess+=1
随机导入
x=random.randint(1100)
#当前猜测计数
num_guess=1
#最大猜测计数
最大猜测=3
而1:
尝试:
guess=int(原始输入('你能猜出它是什么吗?'))
如果guess==x:
print('做得好!答案是'+str(x)+',您在'+str(num_guess)+'guesss'中找到了它。'))
打破
elif guessx:
打印('不,我想的数字低于'+str(猜测))
除例外情况外,e:
通过
如果num\u guess>=max\u guess\u guess:
打印('您猜错了!猜错了,请下次再试。'))
打破
num_guess+=1

您也可以使用这种方式:

import random
x = random.randint(1,100)
#Current guess count
num_guess=1
#maximum guess count
max_guess_guess = 3
while 1:
    try:
        guess = int(raw_input(' Can you guess what it is? '))
        if guess == x:
            print ('Well done! The answer was ' + str(x) + ' and you found it in ' + str(num_guess) + ' guesses.')
            break  
        elif guess < x:
            print ('No, the number I am thinking of is higher than ' + str(guess))
        elif guess > x:
            print ('No, the number I am thinking of is lower than ' + str(guess))
    except Exception, e:
        pass  
    if num_guess >= max_guess_guess:
        print ('You are fail to guess! The guess guess was over please try next time.' )
        break
    num_guess+=1
随机导入
x=random.randint(1100)
#当前猜测计数
num_guess=1
#最大猜测计数
最大猜测=3
而1:
尝试:
guess=int(原始输入('你能猜出它是什么吗?'))
如果guess==x:
print('做得好!答案是'+str(x)+',您在'+str(num_guess)+'guesss'中找到了它。'))
打破
elif guessx:
打印('不,我想的数字低于'+str(猜测))
除例外情况外,e:
通过
如果num\u guess>=max\u guess\u guess:
打印('您猜错了!猜错了,请下次再试。'))
打破
num_guess+=1

这是Python2.x还是Python3?可能重复的请查看
isinstance
内置,如
isinstance(guess,int)
。这是Python2.x还是Python3?可能重复的请查看
isinstance
内置,如
isinstance(guess,int)