Форум сайта python.su
Acamori
Ну, удачи.
А мне вот интересно. Работает ваша программа, чего-то там делает, обменивается через буфер с другой программой, за компьютером работает пользователь, и вот он (пользователь) тоже захотел чего-то скопировать в буфер. Вас это не смущает?
Офлайн
Добрый день!
Прохожу обучающий курс по питону, и мой код проходит тестирование лишь на половину, прошу помощи указать на ошибку, подобрать нужный тест выявляющий пробел в коде не могу. Заранее спасибо!
Задание: Дана последовательность натуральных чисел, завершающаяся числом 0. Определите,какое наибольшее число подряд идущих элементов этой последовательности равны друг другу.
Формат ввода:
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).
new = int(input()) old = new count1 = 0 count2 = 0 while new != 0: if new == old: count1 += 1 else: if count1 > count2: count2 = count1 count1 = 1 old = new else: old = new new = int(input()) if count1 > count2: print(count1) else: print(count2)
Офлайн
tolkя вообще удивлен что оно чтото проходит
, и мой код проходит тестирование лишь на половину
new = int(input()) #вводим число old = new # предыдущее число равно новое ....... while new != 0: if new == old: # Если новое равно предыдущемцу. Конечно же оно равно, выже тремя строчками ранее уравняли их значение!!!!!
[code python][/code]
Отредактировано PEHDOM (Июнь 4, 2017 16:58:26)
Офлайн
PEHDOMПосле ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.
Офлайн
Прошу прощения если пишу не туда. Возник вопрос, есть код:
import random secret = random.randint(1, 99) guess = 0 tries = 0 print "Угадайте число за 6 попыток" while guess != secret and tries < 6: guess = input("Ваш вариант? ") if guess < secret: print "Число меньше загаданного" elif guess > secret: print "Число больше загаданного" tries = tries + 1 if guess == secret: print "Верно" else: print "Попытки кончились" print "Это число ", secret
Отредактировано FishHook (Июнь 5, 2017 12:05:34)
Офлайн
karrridaДумаю вы хотели бы эти строчки сдвинуть на один уровень влево, они не должны быть в теле цикла.
if guess == secret:
print “Верно”
else:
print “Попытки кончились”
print “Это число ”, secret
Офлайн
JOHN_16Спасибо, теперь понял в чем причина
Офлайн
tolkПоскольку есть вероятность что на вход не подадут ни одного одинакового значения, и тогда результат должен быть 0, а у вас он в любом случае вернет как минимум 1.
После ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.
[code python][/code]
Отредактировано PEHDOM (Июнь 5, 2017 20:56:45)
Офлайн
Здравствуйте. Переделал игру крестики и нолики из книги Доусона. Все работает корректно, кроме функций, которые меняют игровое поле. Не могу понять: почему программа позволяет ставить отметки в одну и клетку и попросту перезаписывает ее, помогите пожалуйста разобраться.Ошибка ,вероятно, в функциях player1_move(board,player1),player2_move(board,player2,player1) либо в legal_moves(board).Заранее. благодарю.
X = "X"
O = "O"
TIE = "Ничья"
NUM_SQUARES = 9
EMPTY = " "
def ask_yes_no(question):
response = None
while response not in ("y","n"):
response = input(question).lower()
return response
def ask_number(question,low,high):
response = None
while response not in range(low,high):
response = int(input(question))
return response
def pieces():
go_first = ask_yes_no("Будете ходить первым?")
if go_first == "y":
player1 = X
player2 = O
else:
player2 = X
player1 = O
return player2,player1
def new_board():
board = []
for square in range(NUM_SQUARES):
board.append(EMPTY)
return board
def display_board(board):
print("\n\t",board[0],"|",board[1],"|",board[2])
print("\t","---------")
print("\n\t",board[3],"|",board[4],"|",board[5])
print("\t","---------")
print("\n\t",board[6],"|",board[7],"|",board[8],"\n")
def legal_moves(board):
moves = []
for square in range(NUM_SQUARES):
if board[square] == EMPTY:
moves.append(square)
return moves
def winner(board):
WAYS_TO_WIN = ((0,1,2),
(3,4,5),
(6,7,8),
(0,3,6),
(1,4,7),
(2,5,8),
(0,4,8),
(2,4,6))
for row in WAYS_TO_WIN:
if board[row[0]] == board[row[1]] == board[row[2]]!= EMPTY:
winner = board[row[0]]
return winner
if EMPTY not in board:
return TIE
def player1_move(board,player1):
print("Ходит 1 игрок")
legal = legal_moves(board)
move = None
while move not in legal:
move = ask_number("Выбери одно из доступных полей:",0,NUM_SQUARES)
if move not in legal:
print("занято!")
return move
def player2_move(board,player1,player2):
print("Ходит 2 игрок!")
legal = legal_moves(board)
move = None
while move not in legal:
move = ask_number("Выбери одно из доступных полей:",0,NUM_SQUARES)
if move not in legal:
print("Занято!")
return move
def next_turn(turn):
if turn == X:
return O
else:
return X
def congrat_winner(the_winner,player2,player1):
if the_winner != TIE:
print("Победа!")
else:
print("Ничья!")
if winner == player2:
print("Победил 2 игрок!")
elif winner == player1:
print("Победил 1 игрок!")
elif the_winner == TIE:
print("ничья!")
def main():
player2,player1 = pieces()
turn = X
board = new_board()
display_board(board)
while not winner(board):
if turn == player1:
move = player1_move(board,player1)
board[move] = player1
else:
move = player2_move(board,player2,player1)
board[move] = player2
display_board(board)
turn = next_turn(turn)
the_winner = winner(board)
congrat_winner(the_winner,player2,player1)
main()
input()
Офлайн
FishHook
AcamoriНу, удачи. А мне вот интересно. Работает ваша программа, чего-то там делает, обменивается через буфер с другой программой, за компьютером работает пользователь, и вот он (пользователь) тоже захотел чего-то скопировать в буфер. Вас это не смущает?
Отредактировано Acamori (Июнь 6, 2017 10:51:27)
Офлайн