Python 无法理解原因,并且无法工作

Python 无法理解原因,并且无法工作,python,while-loop,Python,While Loop,我正在试图理解为什么Python没有进入循环并以错误代码退出。 同时,或条件工作正常 def user_choice(): 选择=“” 在_范围内=错误 而choice.isdigit==False且在_范围内==False: 选择=输入('输入有效的选择(1-9):') 如果choice.isdigit()==False: 打印('您输入了非数字值,请输入数字') 如果choice.isdigit()==True: 如果int(选项)在范围(0,10)内: 在范围内=真 其他: 在_范围内=错

我正在试图理解为什么Python没有进入循环并以错误代码退出。
同时,
条件工作正常

def user_choice():
选择=“”
在_范围内=错误
而choice.isdigit==False且在_范围内==False:
选择=输入('输入有效的选择(1-9):')
如果choice.isdigit()==False:
打印('您输入了非数字值,请输入数字')
如果choice.isdigit()==True:
如果int(选项)在范围(0,10)内:
在范围内=真
其他:
在_范围内=错误
返回整数(选项)

您在这一行有错误:

while choice.isdigit == False and within_range == False:
您正在将函数
str.isdigit
与布尔值
False
您应该改为计算函数
choice.isdigit()

完整固定版本:

def user_choice():
    choice = ''
    within_range = False

    while choice.isdigit() == False and within_range == False:
        choice = input('Enter valid selection (1-9): ')

        if choice.isdigit() == False:
            print('You entered non-digit value, please input digit')

        if choice.isdigit() == True:
            if int(choice) in range(0, 10):
                within_range = True
            else:
                within_range = False

    return int(choice)

您好,谢谢您的回复。我的错,我忘了放()。但是,我无法理解为什么开发人员在choice.isdigit()==False和in_range==False:@ManishAmin时在代码行中放置“and”而不是“or”:“@ManishAmin,因为您需要确保
choice
是一个带数字的字符串,并且它在指定的范围内。用户输入必须满足这两个条件。但老实说,这行可能只是
而在_范围内==False:
,因为只有当
选择
是一个数字时,
在_范围内
才会变为