Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印范围内数字的各个数字_Python - Fatal编程技术网

Python 打印范围内数字的各个数字

Python 打印范围内数字的各个数字,python,Python,我试图让用户输入一个三位数的数字,介于100和999之间,然后输出各个数字。如果输入不在三位数之内,则要求他们再次输入。如果我输入一个三位数的数字,它会起作用,对于一个字符串,重复询问会起作用,但是一个不在这个范围内的数字不起作用。相反,它打印单词FALSE的前三个索引。我如何改变这个 while True: try: number=int(input("Enter a three digit number:")) in range(99,1000) break

我试图让用户输入一个三位数的数字,介于100和999之间,然后输出各个数字。如果输入不在三位数之内,则要求他们再次输入。如果我输入一个三位数的数字,它会起作用,对于一个字符串,重复询问会起作用,但是一个不在这个范围内的数字不起作用。相反,它打印单词FALSE的前三个索引。我如何改变这个

while True:

    try:
     number=int(input("Enter a three digit number:")) in range(99,1000)

     break        
except ValueError:

     print("Enter a three digit number:")
     continue
number=str(number)

print("Your digits are: " ,number[0] ,number[1] ,number[2])

这就是你要找的吗

while True:
    try:
        number=int(input("Enter a three digit number:"))
        number=str(number)
    except ValueError:
        print("Please only enter in numbers.")
        continue
    if len(number)!=3:
        print("Not a three digit number.")
    else:
        print("Your digits are: " ,number[0] ,number[1] ,number[2])
        break

首先,您的代码中有一些bug/错误

你应该在另一行输入范围99999 为什么要将输入转换为数字,然后再转换回字符串?把它当作一根绳子。 在解决了这些bug之后,下面是我修复代码的步骤

我删除了输入函数周围的int函数。只需根据需要使用int

我删除了99,999的范围,因为这是无关的

我还删除了try/except块,因为这是不必要的

我使用if语句代替try/except块。if语句测试输入是否为整数,然后测试输入是否为三位数整数

这是我修改后的代码:

while True:
    number=input("Enter a three digit number:")
    if not (number.isdigit() and 99 < int(number) < 1000):
        print("Please Enter a three digit number.")
        continue
    break        
print("Your digits are: " ,number[0] ,number[1] ,number[2])

1.你的缩进消失了。2.您正在将in操作的结果分配给数字,而不是输入。让它成为一个单独的步骤。@jonrsharpe我对这类东西很陌生,你能解释一下如何让它成为一个单独的步骤吗?好的,你知道你在同一条线上是怎么做的吗?换一种说法,我还是不明白你的意思。如何将其分配到其他行?请解释在输入一个三位数的数字时,删去你必须输入的行。这就是全部。然后您可以对数字执行其他操作。我不会用勺子喂你,那不是为什么。是的,实际上用古斯贝里先生的回答,它比我的干净多了。但是,您需要将>3更改为=3.这意味着它将只接受3个数字的长度。看起来OP只需要3位数字,因此检查应该是lennumber=3此外,isdigit将无法过滤零起始输入数字,如001。OP的想法是正确的,但实施方式是错误的……您也可以使用not 99intnumber@Copperfield非常好,谢谢。我将在中编辑这些。我完全忘记了Python已经链接了比较。