所以我试图编写一个代码,在其中输入矩形的宽度和高度,它给出了面积和周长,现在显然输入只能是数字,所以我希望能够要求另一个输入当前输入不是数字。 (告诉用户仅输入数字)。问题在于,如果第一个输入(宽度)是数字,而只有第二个输入(高度)不是数字,我不希望程序要求用户输入宽度再次,我只希望用户再次输入高度而不是宽度,因为宽度已经以数字形式输入了。我该怎么办?
while True:
try:
a = float(input("Please enter width :"))
b = float(input("Please enter height :"))
except ValueError:
print("PLease only enter numbers ")
continue
area = float(a*b)
perimeter = float((a+b)*2)
print('The area of the rectangle is {} and the perimeter of the rectangle is {} '.format(area, perimeter))
答案 0 :(得分:2)
基本答案是将对float
的每个调用包装在单独的try
中并分别处理。从字面上看,写出两个try
会很麻烦而且很笨重。
相反,我会将try
移到其自己的函数中,然后两次调用该函数:
# Let this function handle the bad-input looping
def ask_for_float(message):
while True:
try:
return float(input(message))
except ValueError:
print("Please only enter numbers ")
a = ask_for_float("Please enter width :")
b = ask_for_float("Please enter height :")
答案 1 :(得分:0)
在单独的try块中输入您的输入,然后可以分别捕获错误。 例如,
try:
a = float(input("Please enter width :"))
except ValueError:
print("PLease only enter numbers ")
try:
b = float(input("Please enter height :"))
except ValueError:
print("PLease only enter numbers ")
continue
area = float(a*b)
perimeter = float((a+b)*2)