Я пытался писать это меньше «pythonically», так что вы можете увидеть, что происходит:
xyz1 = input("Enter first 3 coordinates (example: 102 36 74): ")
tokens = xyz1.split() # returns a list (ArrayList) of tokenized values
try:
x = int(tokens[0]) # sets x,y,z to the first three tokens
y = int(tokens[1])
z = int(tokens[2])
except IndexError: # if 0,1,2 are out of bounds
print("You must enter 3 values")
except ValueError: # if the entered number was of invalid int format
print("Invalid integer format")
Если у Вас есть больше чем только три координаты быть введены, вы бы разметить вход и петлю над ним, превращая каждый маркер в междунар и добавления его в список:
xyz1 = input("Enter first 3 coordinates (example: 102 36 74): ")
tokens = xyz1.split() # returns a list (ArrayList) of tokenized values
coords = [] # initialise empty list
for tkn in tokens:
try:
coords.append(int(tkn)) # convert token to int
except ValueError: # if the entered number was of invalid int format
print("Invalid integer format: {}".format(tkn))
raise
print(coords) # coords is now a list of integers that were entered
Забавный факт, вы можете сделать выше в основном один лайнер. Это более питонический способ, чтобы вы могли сравнить это с приведенным выше, чтобы понять, что это означает:
try:
xyz1 = input("Enter first 3 coordinates (example: 102 36 74): ")
coords = [int(tkn) for tkn in xyz1.split()]
except ValueError: # if the entered number was of invalid int format
print("Invalid integer format: {}".format(tkn))
raise
Гарантировано, что они введут 3 действительных цифры, разделенных пробелами? – gowrath
Я буду использовать исключение, если это произойдет – TheLittleCoder
Но будут ли они всегда разделены пробелами? Вы можете использовать метод string.split(). – gowrath