询问用户输入整数,还要检查他们的输入是否是某个字符串

时间:2014-04-06 01:50:25

标签: python string integer

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

我正在尝试创建一个程序,用户可以在其中输入形状点的(笛卡尔坐标)坐标。然后,程序使用矢量(由用户输入)使用其坐标转换形状。希望你能理解我所说的话。如果您不了解使用坐标翻译形状的过程/规则,您可能无法帮助我,因为如果您了解我想要做的事情会有所帮助。

这个过程就像这样开始:

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

然后我让他们输入每个点的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.")

现在,对于每个节省点的部分,我希望用户也可以输入类似于&#34;点&#34;的字符串,而不是输入点的坐标。它将打印保存的所有点。问题是,我不知道如何将整数作为点的坐标,并且有一个像&#34; points&#34;像一个字符串,我可以像这样使用if语句(inputZero是其中一个节点部分中点坐标的输入):

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

感谢每一个回复,

由于

2 个答案:

答案 0 :(得分:0)

您需要的只是一个简单的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!")

答案 1 :(得分:0)

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

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代替input来避免评估输入(请参阅this问题及其答案)