Как прочитать пользовательский ввод, содержащий координаты в скобках - PullRequest
1 голос
/ 04 октября 2019

Я делаю очень простую игру, в которой вы составляете таблицу чисел и скрываете бомбу, которую должен найти пользователь.

Вот код:

import random
def game(rows, colums):   
    table = (rows * colums - 1) * [' '] + ['bomb']    
    random.shuffle(table)    
    while True:    
        position = input('Enter next position (x, y):')    
        bombposition = position.split()    
        if table[int(bombposition[0])*colums + int(bombposition[1])] == 'bomb':    
            print('you found the bomb!')    
            break    
        else:    
            print('no bomb at', position) 

ошибка:

game(1,0)    
Enter next position (x, y):>?    
(1,0)    
Traceback (most recent call last):    
  File "input", line 1, in <module>   
  File "input", line 8, in game    
ValueError: invalid literal for int() with base 10: '(1,0)' 

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Во-первых, split по умолчанию использует пробел, поэтому для разделения на запятую вам потребуется position.split(','). Хотя даже в этом случае к вашим split все равно будут добавлены ( и ) к вашим строкам, если вы разделитесь, например, в вашем случае '(1' и '0)'. Я бы посоветовал использовать регулярные выражения для извлечения чисел из вашего ввода

import re

position = input('Enter next position (x, y):') 
match = re.match(r'\((\d+)\, *(\d+)\)', position)
if match:
    x = int(match.group(1))
    y = int(match.group(2))
else:
    # input didn't match desired format of (x, y)
0 голосов
/ 04 октября 2019

Вам просто нужно изменить способ вычисления bombposition:

bombposition = position.lstrip("(").rstrip(")").split(",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...