2014-09-06 28 views
0

在下面的程序寫的,如果我打進去,我得到:如何檢查在Python中按下Enter鍵?

Traceback (most recent call last): 
    File "C:/Users/Claude/Desktop/practice.py", line 11, in <module> 
    guess = int(input("Your guess: ")) 
ValueError: invalid literal for int() with base 10: ''* 

,而搜索的方式,如果是按「Enter」鍵來檢測我無法找到答案。有人可以幫忙嗎?

from random import randint 

# Generates a number from 1 through 10 inclusive 
random_number = randint(1, 10) 

guesses_left = 6 

while (guesses_left > 0): 

     guess = int(input("Your guess: ")) 
     if (guess == random_number): 
      print ("You win!") 
      ans = input("Do you want to play again?:") 
     if (ans == 'y' or ans == 'Y'): 
      guesses_left = 5 
      guess = int(input("Your guess: ")) 
     else: 
      break 
    #elif (guess == ""): 
    # print ("Please enter a number between 1 and 10") 
    elif(guess != random_number):   
     guesses_left -= 1 
else: 
    print ("You lose!") 
+0

它可能是操作系統特定的。 – 2014-09-06 14:47:10

回答

0

其因爲Your guess

int(x)函數將數字或字符串x轉換爲整數,如果未給出參數,則返回0。如果x是一個數字,它可以是一個純整數,一個長整數或一個浮點數。如果x是浮點,則轉換將截斷爲零。如果參數不在整數範圍內,則該函數會返回一個長對象。 如果x不是數字或給定了基數,則x必須是一個字符串或Unicode對象,它表示以基數爲基數的整數文字。 !

,如果你有蟒蛇2.x的,你可以使用raw_input()功能爲通用輸入來自用戶,

+1

OP使用Python 3,所以沒有'raw_input'。 – poke 2014-09-06 14:59:04

+0

好的......謝謝提醒!我會編輯答案! – Kasramvd 2014-09-06 15:02:12

3

當您只需按下Enter在一個input提示,那麼你就基本上進入了一個空字符串。所以你會試圖將一個空字符串轉換爲一個不起作用的數字。相反,你應該先看看字符串,看看它是否爲空,在這種情況下,用戶剛剛按下輸入,否則嘗試轉換它:

guess = input("Your guess: ") 
if not guess: 
    print("You didn't enter anything. So let's abort.") 
    break 

try: 
    # try converting it to a number 
    guess = int(guess) 
except ValueError: 
    # ValueError is raised when that didn't work 
    print("That wasn't a number!") 
else: 
    # otherwise we now have a number which we can use 
    if guess == random_number: 
     print('You win') 

    # …