我可以使用什么Python3方法将输入限制为仅在我的赋值中的整数?

时间:2017-04-13 04:18:03

标签: python python-3.x

我对编码有一个非常简短的熟悉,尽管到目前为止我的大多数经验都是用Python编写的。这就是为什么我感到不安的是我似乎无法弄清楚如何做到这一点...

我的Python类中有一个赋值,我需要计算直角三角形的面积。我已成功完成作业,但我想更进一步,限制用户输入除整数之外的任何内容作为输入。我从Codecademy学到的东西中尝试了多个想法,虽然我似乎无法弄明白。任何帮助将不胜感激!

这是我到目前为止编写的代码;它的工作原理很好,但是我想让它返回一个字符串,上面写着"请输入一个有效的数字"如果用户要输入除数字之外的任何内容:

from time import sleep
import math

print("Let\'s find the area of a right triangle!")
sleep(2)

triangleBase = float(input("Enter the base value for the triangle: "))
print("Great!")

triangleHeight = float(input("Enter the height value for the triangle: "))
print("Great!")
sleep(2)

print("Calculating the area of your triangle...")
sleep(2)

def triangleEquation():
    areaString = str("The area of your triangle is: ")
    triangleArea = float(((triangleBase * triangleHeight) / 2))
    print('{}{}'.format(areaString, triangleArea))

triangleEquation()

2 个答案:

答案 0 :(得分:1)

你很亲密。您注意到您的代码引发了异常。您需要做的就是捕获该异常并再次提示。本着“不要重复自己”的精神,这可以是它自己的功能。我清理了其他一些东西,比如使用全局变量的计算函数和转换不需要转换的东西(例如'foo'是str,你不需要str('foo'))并得到

from time import sleep
import math

def input_as(prompt, _type):
    while True:
        try:
            # better to ask forgiveness... we just try to return the
            # right stuff
            return _type(input(prompt.strip()))
        except ValueError:
            print("Invalid. Lets try that again...")

def triangleEquation(base, height):
    area = base * height / 2
    print('The area of your triangle is: {}'.format(areaString, area))


print("Let\'s find the area of a right triangle!")
sleep(2)

triangleBase = input_as("Enter the base value for the triangle: ", float)
print("Great!")

triangleHeight = input_as("Enter the height value for the triangle: ", float)
print("Great!")
sleep(2)

print("Calculating the area of your triangle...")
sleep(2)

triangleEquation(triangleBase, triangleHeight)

答案 1 :(得分:0)

这应该让你开始。我会把剩下的留给你(如果你还想允许花车,提示,提示),因为你说你想要更进一步,这样你仍然会保持成就感。

def triangleEquation(triangleBase, triangleHeight):
    if type(triangleHeight) == int and type(triangleBase) == int:
        areaString = "The area of your triangle is: "
        triangleArea = float(((triangleBase * triangleHeight) / 2))
        return '{}{}'.format(areaString, triangleArea)
    else:
        return 'Integers only.'

注意:您还可以使用is成语:if type(triangleHeight) is int ...