要求用户输入整数,但也要检查他们的输入是否是某个字符串



嗨,我的情况很难解释,所以我不妨深入解释一下。

我正在尝试创建一个程序,用户可以在其中输入形状点的(笛卡尔)坐标。然后,程序使用向量(由用户输入)使用其坐标平移形状。希望你明白我在说什么。如果您不知道使用坐标翻译形状的过程/规则,您可能对我帮助不大,因为如果您了解我想要做什么,这将有所帮助。

该过程开始如下:

我询问用户有多少个点构成他们的形状(他们正在翻译什么类型的多边形)。

然后我要求他们输入每个点的 x,y 坐标。下面是开始代码和一个保存点过程的代码:

print('View saved points with "points".')
print()
print("Number of points:")
inputX = int(input())
if inputX < 3:
    print("Invalid.")
if inputX > 5:
    print("Invalid.")
print("Input points: x,y")
inputZero = input()
split = inputZero.split(",")
xZero,yZero = split[0],split[1]
print("("+xZero+","+yZero+") saved. Input another point.")

现在,对于每个点保存部分,我希望用户也能够输入像"点"这样的字符串,而不是输入点的坐标,它将打印所有保存的点。问题是,我不知道如何让整数充当点的坐标,并让像"点"这样的字符串充当字符串,我可以像这样使用 if 语句(inputZero 是其中一个点保存部分中点坐标的输入):

if inputZero == "points":
    print("#All of the points previously entered")

感谢每一个回应,

谢谢

您所需要的只是一个简单的 if/else 块,也许可以尝试确保您获得有效的数字。

...
points = []
while True:
    print("Input points: x,y")
    inputZero = input()
    if inputZero == "points":
        print(previousPoints)
    else:
        try:
            split = inputZero.split(",")
            xZero,yZero = int(split[0]),int(split[1])
            print("({0}, {1}) saved. Input another point.".format(xZero, yZero))
            points.append((xZero, yZero))
        except ValueError or IndexError:
            print("Invalid input!")

不确定我是否正确理解。这是你想要的吗?

import sys
points = []
while True:
  print("Input points: x,y")
  inputZero = raw_input()
  if inputZero == 'points':
    print "Entered points: %s" % points
  elif inputZero == 'quit':
    print "Bye!"
    sys.exit(0)
  else:
    split = inputZero.split(",")
    xZero,yZero = int(split[0]),int(split[1])
    points.append((xZero, yZero))
    print("(%s, %s) saved. Input another point." % (xZero, yZero))

键入 quit 以完成。另外,请注意,我正在使用raw_input而不是输入来避免评估输入(请参阅此问题及其答案)

相关内容

  • 没有找到相关文章

最新更新