打印一个范围内的数字的个别数字

时间:2016-09-25 12:12:41

标签: python

我正在尝试让用户输入一个三位数字,因此介于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])

2 个答案:

答案 0 :(得分:1)

这就是你要找的东西吗?

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

答案 1 :(得分:0)

首先,您的代码中存在一些错误/错误。

  • 您应该将in range(99, 999)放在单独的一行
  • 为什么要将输入转换为数字,然后将其转换回字符串?只需将其保留为字符串即可。

在解决了这些错误之后,我就采取了以下措施来修复您的代码。

  • 我从int()函数中删除了input()函数。只需根据需要使用int()

  • 我删除了in range(99, 999)因为无关紧要。

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

  • try/except块的位置,我使用if语句。 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])