[英]While loop to continuously prompt user to provide correct input type
我有一个作业问题,我需要在我的函数中添加一个while循环,如果最初输入的值不是数字,这将使用户3次尝试输入另一个值。 该代码的原始功能是确定三角形或梯形的面积。
loopCount = 0
# The "while" statement keeps looping until its condition (loopCount<4) made False.
while loopCount<4:
# loopCount will increase 1 for each loop
loopCount += 1
尽管我什至不知道上面的代码在哪里适合我的代码。
# This program calculates the area of a triangle or trapezoid
# Statement: print function outputs the statement on screen
print("This program finds the area of a triangle or trapezoid.")
print()
# Module: math module imported
import math
# Determine the objects shape
print("Please enter the shape from the following menu")
print("Triangle = type 1")
print("Trapezoid = type 2")
# If user types a number other than 1 or 2, this will prompt them again to pick a valid choice
user_input = 0
while user_input not in (1,2) :
user_input = int(input("Enter your choice: "))
# Variables: asigns new value to a variable depending on which shape we are caluclating the area of
if (user_input == 1):
print("Alright, you want to calculate the area of a triangle: ")
height = float(input("Please enter the height of the triangle: "))
base = float(input("Please enter the base length of the triangle: "))
if (user_input == 2):
print("Alright, you want to calculate the area of a trapezoid: ")
base_1 = float(input("Please enter the base length of the trapezoid: "))
base_2 = float(input("Please enter the second base length of the trapezoid: "))
height = float(input("Please enter the height of the trapezoid: "))
# Expression and operators: calculates area based on shape choosen. Triangle_area = (base*height)/2, Trapezoid_area = ((base1+base2)/2)*height
if (user_input == 1):
area_triangle = 0.5 * height * base
if (user_input == 2):
area_trapezoid = ((base_1+base_2)/2)*height
# Function: math function returns a statement defining the height, base(s) and area of the triangle or trapezoid
if (user_input == 1):
print("The area of a triangle with height", height, "and base", base, "is", area_triangle)
if (user_input == 2):
print("The area of a trapezoid with height", height, ", base 1", base_1, "and base 2", base_2, "is", area_trapezoid)
If the user enters a value that could not be converted to numeric type, allow 3 additional opportunities to enter a new value. If the user fails to enter a correct value after 4 attempts, inform them of such failure and allow the program to end without crashing.
当float()
无法将值转换为float()
时,可以在输入上使用try / except来处理ValueError
; 如果参数超出Python float的范围,则可以使用OverflowError
。
loopCount = 0
while loopCount < 4:
try:
height = float(input("Please enter the height of the triangle: "))
break
except:
print("That is not a number.")
loopCount += 1
if loopCount == 4:
print("You failed to input valid values")
# return with an error or maybe abort with sys.exit(1)
else:
print("Great! I can now compute stuff.")
您可以一次在try
块中检查所有输入(如果您不关心哪一个是无效的,或者不需要将其指出给用户):
loopCount = 0
while loopCount < 4:
try:
base_1 = float(input("Please enter the base length of the trapezoid: "))
base_2 = float(input("Please enter the second base length of the trapezoid: "))
height = float(input("Please enter the height of the trapezoid: "))
break
except:
print("One of the inputs is not a number.")
loopCount += 1
if loopCount == 4:
print("You failed to input valid values")
# return with an error or maybe abort with sys.exit(1)
else:
print("Great! I can now compute stuff.")
为了避免大量重复的try-except
,我建议创建一个方法来获取一个浮点输入(或所有输入),然后从您的main方法中调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.