我正在尝试编写给定角度必须小于90度且大于0度的函数。如果角度为弧度,则必须小于pi / 2且大于0。
这是我的功能:
def is_valid_angle(s:str)-> bool:
"""
Returns True if and only if s is a valid angle. See the assignment
description and examples for more information regarding what's valid
Examples:
>>> is_valid_angle("85.3d")
True
>>> is_valid_angle("85.3.7D")
False
>>> is_valid_angle("90d")
False
>>> is_valid_angle("0.001r")
True
>>> is_valid_angle("1.5R")
True
"""
if s[-1]=='r''R':
if s < (pi/2):
if s > 0:
return true
if s[-1]=='d''D':
if s < 90:
if s > 0:
return true
此外,我想知道是否可以通过使用if
来缩短两个else
语句。
答案 0 :(得分:0)
这是一种方法。
说明 :try
和except
将检查字符串 except 的最后一个字符是否为数字或不。这是通过s[:-1]
完成的,它返回从第一个字符到倒数第二个字符的字符串。如果不是,例如。在85.3.7D
中,85.3.7
不是有效数字,它将返回False
。如果是,则它将检查if
语句以检查弧度或角度以及角度范围。根据{{1}}语句,将返回相应的值(if
)。
True/False
import numpy as np
def is_valid_angle(s):
try:
float(s[:-1])
except ValueError:
return False
if (s[-1]=='r' or s[-1]=='R') and (0 < float(s[:-1]) < np.pi/2):
return True
elif (s[-1]=='d' or s[-1]=='D') and (0 < float(s[:-1]) < 90):
return True
else:
return False