import math
r=input("Please enter the radius")
h=input("Please enter the height")
def cone_area(r,h):
while True:
try:
r,h = float(r),float(h)
break
except ValueError:
return 'Error not a number'
a=((math.pi*r*(r+math.sqrt(r*r+h*h)))) # surface area formula
return round(a,4)
print(cone_area(r,h))
Вот полное сообщение об ошибке:
Please enter the radius ↩
Error ↩
Traceback (most recent call last):
File "__tester__.python3", line 3, in <module>
r=input("Please enter the radius") #asks user for radius and height
EOFError: EOF when reading a line
Для пояснения, он отлично работает с использованием python idle, но я должен отправить это для работы в онлайн-интерпретатор python, где я получаю сообщение об ошибке. Другой пользователь также подтвердил, что может воспроизвести это в Linux. Где я ошибся в своем коде?
Используйте try
except
, чтобы решить эту проблему
try:
print(input())
except EOFError:
exit()
Дополнительный:
while True:
можно удалить, чтобы немного повысить эффективность.
Полный код:
import math
def cone_area(r,h):
try:
r,h = float(r),float(h)
except ValueError:
return 'Error not a number'
a=((math.pi*r*(r+math.sqrt(r*r+h*h)))) # surface area formula
return round(a,4)
try:
while True: #infinity amount of input until EOF
r=input("Please enter the radius")
h=input("Please enter the height")
print(cone_area(r,h))
except EOFError:
print("input finish")
Итак, все, что вы хотите сделать, это игнорировать символ новой строки, верно?