我做了'猜数字'游戏,但我想添加输入验证,这样用户只能猜测一个整数。这是我的代码,我感谢任何建议。我正在使用python 3。
import random
print('Hello, what is your name?')
name = input()
print('It is nice to meet you ' + name + '.')
secretNumber = random.randint(1, 20)
print('Well ' + name + ', I am thinking of a number between 1 and 20')
for guessTaken in range(1, 7):
print('Take a guess.')
guess = int(input())
if guess < secretNumber:
print('Your guess is too low.')
elif guess > secretNumber:
print('Your guess is too high.')
else:
break
if guess == secretNumber:
print('Good job ' + name + '. You guessed my number in %d guesses' %(guessTaken))
else:
print('Nope. My number was ' + str(secretNumber) + '.')
答案 0 :(得分:2)
def input_int(prompt=">",error_msg="That is not an int!"):
while True:
try:
return int(input(prompt))
except ValueError:
print(error_msg)
x = input_int("Please Enter an Int:","Wrong Answer!")
print x,x**2
你可以进一步抽象
def input_type(typeClass=str,prompt="?",error_msg="Wrong Padawan"):
while True:
try:
return typeClass(input(prompt))
except ValueError:
print(error_msg)
input_type(int,"Enter an int:","Thats not an int!")
input_type(float,"Enter a float:","Thats not a float!")
input_type(FunkyChickenClass,"Enter a name for your chicken:","Thats wrong!")
或
def input_int(prompt="Enter Int:",error_msg="Not an int!"):
return input_type(int,prompt,error_msg)
答案 1 :(得分:1)
这是使用输入验证执行此操作的更好方法
import random
name = raw_input('Hello, what is your name?')
print('It is nice to meet you ' + name + '.')
secretNumber = random.randint(1, 20)
print('Well ' + name + ', I am thinking of a number between 1 and 20')
for guessTaken in range(1, 7):
guess = 0
invalid = True
while invalid:
try:
guess = int(raw_input('Take a guess'))
invalid = False
except ValueError:
print 'You must enter an integer'
if guess < secretNumber:
print('Your guess is too low.')
elif guess > secretNumber:
print('Your guess is too high.')
else:
break
if guess == secretNumber:
print('Good job ' + name + '. You guessed my number in %d guesses' %(guessTaken))
else:
print('Nope. My number was ' + str(secretNumber) + '.')
答案 2 :(得分:1)
for guessTaken in range(1, 7):
guess = 0
while guess < 1 or guess > 20:
print('Take a guess.')
try:
guess = int(input())
except ValueError:
print("Guess must be a number.")
else:
if guess < 1 or guess > 20:
print("Guess must be between 1 and 20.")
else:
print("Your guess is:", guess)
if guess < secretNumber:
# continue your code