122Ml 发表于 2023-11-26 15:47:46

Python象限判断2.0


(此题为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')

FishC_GPT 发表于 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 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')

这样修改后的代码应该可以正确执行,并输出正确的结果。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。

liuhongrun2022 发表于 2023-11-26 16:24:46

isalpha后面要加括号:isalpha()
页: [1]
查看完整版本: Python象限判断2.0