我对编码有一个非常简短的熟悉,尽管到目前为止我的大多数经验都是用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()
答案 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
...