繁体   English   中英

在'for'循环中尝试Except-Python

[英]Try Except in 'for' loop - Python

我做了一个“猜数字”游戏,但是我想添加输入验证,以便用户只能猜测一个整数。 这是我的代码,感谢任何建议。 我正在使用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) + '.')
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)

这是通过输入验证执行此操作的更好方法

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) + '.')
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM