鱼C论坛

 找回密码
 立即注册
查看: 653|回复: 2

[已解决]Python象限判断2.0

[复制链接]
发表于 2023-11-26 15:47:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

(此题为Python123上面的题目)

象限判断(2.0)
描述
象限(Quadrant)是平面直角坐标系(笛卡尔坐标系)中里的横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y轴为分界线。右上的称为第一象限,左上的称为第二象限,左下的称为第三象限,右下的称为第四象限。坐标轴上的点不属于任何象限。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

依次输入坐标值(x,y),输出坐标的象限(Q1,Q2,Q3,Q4)。如果坐标位于坐标轴上,则直接输出x与y的值。直到输入任意一个字母时停止并输出“EXIT”(本题测试暂不考虑输入其他符号的情况)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

tips: x.isalpha()可以判断x是否是字符,函数返回逻辑值True或False。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输入格式
0
5
6
7
B

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

输出格式
x=0
y=5
Q1
EXIT

下面是我写的代码,提交后还是显示有一组数据WA,请问还有哪些部分是存在问题的?
def quadrant(x, y):  
    if x > 0 and y > 0:  
        return "Q1\n"  
    elif x < 0 and y > 0:  
        return "Q2\n"  
    elif x < 0 and y < 0:  
        return "Q3\n"  
    elif x > 0 and y < 0:  
        return "Q4\n"  
    elif x == 0 and y != 0:  
        return f"x={x}\ny={abs(y)}\n"  
    elif x != 0 and y == 0:  
        return f"x={abs(x)}\ny={y}\n"
    elif x == 0 and y == 0:  
        return f"x={abs(x)}\ny={y}\n"  
    else:  
        return "EXIT"  
  
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass
    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass
    return False
temp=''
while 1:  
    x = input()
    if is_number(x):
        x=int(x)
    elif not is_number(x) and x.isalpha:
        break
    y = input()
    if is_number(y):
        y=int(y)
    elif not is_number(y) and y.isalpha:
        break
    temp=temp+(quadrant(x, y))
    
if temp=='':
    pass
else:
    print(temp,end='')
print('EXIT')

最佳答案
2023-11-26 16:24:46
isalpha后面要加括号:isalpha()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-26 15:48:02 | 显示全部楼层
代码中存在一个问题,就是在判断坐标是否为字母时使用了`x.isalpha`和`y.isalpha`,应该改为`x.isalpha()`和`y.isalpha()`。因为`isalpha`是一个函数,需要添加括号来调用。

修改后的代码如下:
def quadrant(x, y):      if x > 0 and y > 0:          return "Q1\n"      elif x < 0 and y > 0:          return "Q2\n"      elif x < 0 and y < 0:          return "Q3\n"      elif x > 0 and y < 0:          return "Q4\n"      elif x == 0 and y != 0:          return f"x={x}\ny={abs(y)}\n"      elif x != 0 and y == 0:          return f"x={abs(x)}\ny={y}\n"    elif x == 0 and y == 0:          return f"x={abs(x)}\ny={y}\n"      else:          return "EXIT"    def is_number(s):    try:        float(s)        return True    except ValueError:        pass    try:        import unicodedata        unicodedata.numeric(s)        return True    except (TypeError, ValueError):        pass    return Falsetemp=''while 1:      x = input()    if is_number(x):        x=int(x)    elif not is_number(x) and x.isalpha():        break    y = input()    if is_number(y):        y=int(y)    elif not is_number(y) and y.isalpha():        break    temp=temp+(quadrant(x, y))    if temp=='':    passelse:    print(temp,end='')print('EXIT')
这样修改后的代码应该可以正确执行,并输出正确的结果。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-26 16:24:46 | 显示全部楼层    本楼为最佳答案   
isalpha后面要加括号:isalpha()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表