2014-02-26 43 views
1

我有一個我非常困惑的家庭作業任務。我必須編寫一個程序,允許用戶輸入他們購買的雞蛋數量。然後程序會告訴他們可以裝滿多少盒(六個蛋),剩下多少個蛋。如何讓用戶只在Python程序中輸入整數值

我需要確保如果用戶輸入非整數值,將顯示錯誤消息。我無法弄清楚如何做到這一點,任何幫助將不勝感激! while循環或者我完全錯了嗎?

+1

你到目前爲止有什麼? –

回答

5

讓用戶輸入任何他願意,並警告只有當它是不是一個整數:

try: 
    num = int(input("enter number: ")) 
except ValueError: 
    print("you must enter an integer") 

這是Python的方式做到這一點,畢竟這是"Easier to ask forgiveness than permission"

+1

你也可以在while循環中包裝它,以允許用戶重新輸入一個值直到他們給出一個有效的值。 –

+1

@MichaelBurns這個問題被標記爲Python 3.x ... –

+0

@ÓscarLópez非常感謝你!這已將所有內容整理出來,現在我的程序完美運行。謝謝你的幫助。 – user3356798

0

是的,這可能是一個while循環,如

while 1: 
    instr = input('Enter an integer') 
    try: 
    val = int(instr) 
    print 'integer entered', val 
    break 
    except ValueError: 
    print instr, ' is not an integer' 
+0

@'Janne Kanla'謝謝修復。這就是在打字時想着下一行(:-) – sabbahillel

+0

謝謝你的幫助! – user3356798

0

[編輯]我的評論和代碼僅對蟒蛇2.x的

與其他答案相反,在詢問用戶時幾乎從不使用'input()',而是使用'raw_input()'。

'input()'計算它從用戶那裏獲得的字符串,就像它是程序的一部分一樣。 這不僅是安全問題,而且是不可預知的,並且幾乎可以引發任何異常(例如,如果python嘗試將字母解析爲變量名稱,則爲NameError)。

num = None 
while num is None: 
    try: 
     num = int(raw_input("Enter an integer: ")) 
    except ValueError: 
     print 'That was not an integer!' 
     affirmations = ('YES', 'Y') 
     answer = raw_input("Do you want to continue? (Yes/Y/y):\n") 
     if answer.strip().upper() in affirmations: 
      continue 
     else: 
      break 
print num 
+2

使用Python 3(請參閱標籤)有些困難,其中'raw_input'不存在.... –

+0

@JonClements感謝您指出它;) –

+0

@ m.wasowski非常感謝您的幫助! – user3356798

0
while True: 
    try: 
     amount=int(input("how many do you want to buy")) 
     break 
    except ValueError: 
     print("Please Enter An Amount") 
     continue 
    else: 
     break 

這使得用戶的一個簡單的方法在Python 3此輸入一個整數,也可以用於確保用戶輸入字符串的所有你需要的做的只是改變int( .in str(

0

我通常會把文字放在外面,並像功能一樣包裹它,使其與標準input相似。也許有人喜歡它:

def int_input(text): 
    """Makes sure that that user input is an int""" 
    while True: 
     try: 
      num = int(input(text)) 
     except ValueError: 
      print("You must enter an integer.") 
     else: 
      return num 

user_int = int_input("Enter a number: ") 
相關問題