Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 2, 2017 11:36:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Acamori
Ну, удачи.

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



Офлайн

#2 Июнь 4, 2017 10:13:47

tolk
Зарегистрирован: 2017-06-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Добрый день!
Прохожу обучающий курс по питону, и мой код проходит тестирование лишь на половину, прошу помощи указать на ошибку, подобрать нужный тест выявляющий пробел в коде не могу. Заранее спасибо!

Задание: Дана последовательность натуральных чисел, завершающаяся числом 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)

Офлайн

#3 Июнь 4, 2017 16:57:21

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вопросы от новичков.

tolk
, и мой код проходит тестирование лишь на половину
я вообще удивлен что оно чтото проходит
  new = int(input()) #вводим число
old = new           # предыдущее число равно новое
.......
while new != 0:
    if new == old: # Если новое равно предыдущемцу. Конечно же оно равно, выже тремя строчками ранее уравняли их значение!!!!!



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 4, 2017 16:58:26)

Офлайн

#4 Июнь 5, 2017 04:43:19

tolk
Зарегистрирован: 2017-06-04
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

PEHDOM
После ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.

Офлайн

#5 Июнь 5, 2017 11:53:45

karrrida
Зарегистрирован: 2017-06-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Прошу прощения если пишу не туда. Возник вопрос, есть код:

 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 попыток, но после первой попытки, программа сразу переходит в конец с сообщение о том что попытки закончились, и выдает загаданное число. Я что то не так делаю?

Отредактировано FishHook (Июнь 5, 2017 12:05:34)

Офлайн

#6 Июнь 5, 2017 12:18:52

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вопросы от новичков.

karrrida
if guess == secret:
print “Верно”
else:
print “Попытки кончились”
print “Это число ”, secret
Думаю вы хотели бы эти строчки сдвинуть на один уровень влево, они не должны быть в теле цикла.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Июнь 5, 2017 12:34:54

karrrida
Зарегистрирован: 2017-06-05
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

JOHN_16
Спасибо, теперь понял в чем причина

Офлайн

#8 Июнь 5, 2017 20:43:03

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Вопросы от новичков.

tolk
После ввода первого числа необходимо сразу начать отсчет, т.к. есть вероятность, что на вход будут подаваться только одинаковые значения. Конечно, можно было не уравнивать old и new, и задать count1 значение единицы, но сути это не изменит.
Поскольку есть вероятность что на вход не подадут ни одного одинакового значения, и тогда результат должен быть 0, а у вас он в любом случае вернет как минимум 1.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Июнь 5, 2017 20:56:45)

Офлайн

#9 Июнь 5, 2017 21:28:36

gambrinas13
Зарегистрирован: 2017-06-01
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы от новичков.

Здравствуйте. Переделал игру крестики и нолики из книги Доусона. Все работает корректно, кроме функций, которые меняют игровое поле. Не могу понять: почему программа позволяет ставить отметки в одну и клетку и попросту перезаписывает ее, помогите пожалуйста разобраться.Ошибка ,вероятно, в функциях 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()

Офлайн

#10 Июнь 6, 2017 10:29:53

Acamori
Зарегистрирован: 2017-04-11
Сообщения: 47
Репутация: +  1  -
Профиль   Отправить e-mail  

Вопросы от новичков.

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

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

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

P.s.s. А Massage Broker может работать в пределах одной программы или одного скрипта ?

Отредактировано Acamori (Июнь 6, 2017 10:51:27)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version