Найти - Пользователи
Полная версия: Вопросы от новичков.
Начало » Python для новичков » Вопросы от новичков.
1 2 3 4 5 6 7 None 28 29 30 31
FishHook
Acamori
Ну, удачи.

А мне вот интересно. Работает ваша программа, чего-то там делает, обменивается через буфер с другой программой, за компьютером работает пользователь, и вот он (пользователь) тоже захотел чего-то скопировать в буфер. Вас это не смущает?
tolk
Добрый день!
Прохожу обучающий курс по питону, и мой код проходит тестирование лишь на половину, прошу помощи указать на ошибку, подобрать нужный тест выявляющий пробел в коде не могу. Заранее спасибо!

Задание: Дана последовательность натуральных чисел, завершающаяся числом 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)
PEHDOM
tolk
, и мой код проходит тестирование лишь на половину
я вообще удивлен что оно чтото проходит
  new = int(input()) #вводим число
old = new           # предыдущее число равно новое
.......
while new != 0:
    if new == old: # Если новое равно предыдущемцу. Конечно же оно равно, выже тремя строчками ранее уравняли их значение!!!!!
tolk
PEHDOM
После ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.
karrrida
Прошу прощения если пишу не туда. Возник вопрос, есть код:
 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
По идее должно быть 6 попыток, но после первой попытки, программа сразу переходит в конец с сообщение о том что попытки закончились, и выдает загаданное число. Я что то не так делаю?
JOHN_16
karrrida
if guess == secret:
print “Верно”
else:
print “Попытки кончились”
print “Это число ”, secret
Думаю вы хотели бы эти строчки сдвинуть на один уровень влево, они не должны быть в теле цикла.
karrrida
JOHN_16
Спасибо, теперь понял в чем причина
PEHDOM
tolk
После ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.
Поскольку есть вероятность что на вход не подадут ни одного одинакового значения, и тогда результат должен быть 0, а у вас он в любом случае вернет как минимум 1.
gambrinas13
Здравствуйте. Переделал игру крестики и нолики из книги Доусона. Все работает корректно, кроме функций, которые меняют игровое поле. Не могу понять: почему программа позволяет ставить отметки в одну и клетку и попросту перезаписывает ее, помогите пожалуйста разобраться.Ошибка ,вероятно, в функциях 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()
Acamori
FishHook
AcamoriНу, удачи. А мне вот интересно. Работает ваша программа, чего-то там делает, обменивается через буфер с другой программой, за компьютером работает пользователь, и вот он (пользователь) тоже захотел чего-то скопировать в буфер. Вас это не смущает?

В дальнейшем при усложнении программы - действительно потребуется более органичное и универсальное решение. Сейчас же когда скрипт просто считывает переменную и тут же вставляет, не передавая ее в другую программу, вполне справляется модуль pyperclip.

P.s. И пока сама программа для личного пользования и некоторые удобства могут быть упущены.

P.s.s. А Massage Broker может работать в пределах одной программы или одного скрипта ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB