2016-09-25 41 views
-3

我想讓用戶輸入一個三位數的數字,所以在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]) 
+0

1.您的壓痕關閉。 2.您將'in'操作的結果分配給'number',而不是**''input'。讓它成爲一個單獨的步驟。 – jonrsharpe

+0

@jonrsharpe對這類東西來說很新,你能解釋一下如何讓它成爲一個單獨的步驟嗎? – Ashley

+4

那麼,你看到你是如何在同一行?相反,以不同的方式進行操作。 – jonrsharpe

回答

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 
+0

是的,實際上使用Mr.goosberry的答案,它比我的要乾淨得多。但是,您需要將> 3更改爲!= 3。這意味着它只能接受3個數字的長度。 –

0

首先,您的代碼中有一些錯誤/錯誤。

  • 你應該把in range(99, 999)一個單獨的行
  • 你爲什麼你的輸入轉換爲數字,然後將其轉換回一個字符串?把它保持爲一個字符串。

解決了這些錯誤之後,下面是我所做的修復代碼的方法。

  • 我從周圍的input()功能刪除int()功能。根據需要使用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]) 
+0

看起來像OP只需要一個3位數的數字,因此檢查應該是'len(number)!= 3',同時'isdigit'將無法過濾像「001」這樣的零開始輸入數字。 OP有正確的想法,但實現它的方式是錯誤的... – Copperfield

+0

你也可以使用'not(99 Copperfield

+0

@Copperfield優點,謝謝。我將編輯它們。我完全忘記了Python已經鏈接了比較。 –

相關問題