Irbis, блин, а ведь точно! Не обратил внимания на то что на форуме отступы съехали. Посмотрел, что синтаксис подсветился и отправил Сейчас должно быть правильно:
Код
from random import randint from statistics import mean, stdev, pvariance
# 52 deck of cards ranked 1-13 # shuffle the deck at game start # board of 10 spots # discard pile # rank: ace=low k=high # when placing card, every space to left is empty or lower rank # every space to right is empty or higher rank # loss = 6th discard # win = at least one card on every spot on board
lossCount = 0; winCount = 0;
#Список полученных результатов (очков): scoresList = list();
#Даём пользователю возможность ввести количество пасьянсов #(без каких-либо проверок: ожидаем, что пользователь не дурак и введёт число) solitaireCount = input("Введите количество пасьянсов: ");
for z in range(0, solitaireCount): # new deck deck = list(); # new discard pile discard = list(); # 4 of each card for i in range(1,5): for x in range(1,14): deck.append(x);
# shuffling the deck for z in range(0,51): w = randint(z,51) tempCard = deck[z]; deck[z] = deck[w]; deck[w] = tempCard;
#print deck; #print len(deck);
# Initializing the board board = [None]*10; # Automating card draws from the deck for i in range(0,51): #print board; card = deck.pop();
# Place card in it's corresponding spot if game isn't over yet if (None in board) and (len(discard)<6): if len(board)>=card: board[card-1] = card; else: discard.append(card);
# Loss conditions if len(discard)==6: lossCount +=1; print ("Поражение!");
# Win conditions if ((None in board) == False): winCount +=1; print ("Победа! :)");
#Записываем результат в список: score = 0; for curCard in board: if (None != curCard): score += curCard; scoresList.append(score);
#Записываем результаты в файл: print ("Записываем результаты в текстовый файл... \n"); with open("scores_out.txt", "w") as file: for line in scoresList: file.write(str(line) + "\n") file.close();
#Считываем результаты из файла в список: print ("Считываем результаты из текстового файла... \n"); scoresFromFile = []; with open("scores_out.txt", "r") as file: for line in file: scoresFromFile.append(line.strip()); file.close();
print ("Работаем со статистикой... \n"); mean = mean(scoresList); pvariance = pvariance(scoresList); stdev = stdev(scoresList);
#Записываем полученную статистику в файл: print ("Записываем полученную статистику в конец файла... \n"); with open("scores_out.txt", "a") as file: file.write("Mean = " + str(mean) + "\n"); file.write("Pvariance = " + str(pvariance) + "\n"); file.write("Stdev = " + str(stdev) + "\n"); file.close();
Сообщение отредактировал DivES - Четверг, 24 Января 2019, 11:47
graniza, в Geany, это обычный блокнот. Нужно чётко выставить расположение блоков с помощью табуляций, заменив ими (табуляциями) появившиеся после копирования пробелы. Сам столкнулся с этим, когда копировал код отсюда
Добавлено (24 Января 2019, 11:10) --------------------------------------------- drcrack, ошибка "unindent does not match any outer indentation level", проверяй
graniza, вечером? Я только с работы вечером вернусь Попробую сейчас дописать, что смогу. Не отвечай, я просто дополню сообщение!
Добавлено (24 Января 2019, 00:13) --------------------------------------------- Тут старый код:
Код
#!/usr/bin/env python # -*- coding: utf-8 -*- from random import randint
# 52 deck of cards ranked 1-13 # shuffle the deck at game start # board of 10 spots # discard pile # rank: ace=low k=high # when placing card, every space to left is empty or lower rank # every space to right is empty or higher rank # loss = 6th discard # win = at least one card on every spot on board
lossCount = 0; winCount = 0;
#Список полученных результатов (очков): scoresList = list();
#Даём пользователю возможность ввести количество пасьянсов #(без каких-либо проверок: ожидаем, что пользователь не дурак и введёт число) solitaireCount = input("Введите количество пасьянсов: ");
for z in range(0, solitaireCount): # new deck deck = list(); # new discard pile discard = list(); # 4 of each card for i in range(1,5): for x in range(1,14): deck.append(x);
# shuffling the deck for z in range(0,51): w = randint(z,51) tempCard = deck[z]; deck[z] = deck[w]; deck[w] = tempCard;
#print deck; #print len(deck);
# Initializing the board board = [None]*10; # Automating card draws from the deck for i in range(0,51): #print board; card = deck.pop();
# Place card in it's corresponding spot if game isn't over yet if (None in board) and (len(discard)<6): if len(board)>=card: board[card-1] = card; else: discard.append(card);
# Loss conditions if len(discard)==6: lossCount +=1; print ("Поражение!");
# Win conditions if ((None in board) == False): winCount +=1; print ("Победа! :)");
#Записываем результат в список: score = 0; for curCard in board: if (None != curCard): score += curCard; scoresList.append(score);
#Выводим на экран таблицу результатов (не обязательно, конечно же): print ('"Таблица" результатов:'); print (scoresList);
#Дальше работаем со статистикой на основе полученной таблицы результатов. #Хорошо, если у тебя есть этот самый модуль statistics. #В ином случае тебе придётся самому написать функции нахождения #среднего значения (что, вроде бы, просто) и стандартного отклонения. #Тем более, формулы у тебя есть, вроде бы :) mean = statistics.mean(scoresList); pvariance statistics.pvariance(scoresList); stdev = statistics.stdev(scoresList); #Дальше можешь вывести полученные данные на экран или же записать в файл. #С этим, надеюсь, разберёшься сам.
Добавлено (24 Января 2019, 00:14) --------------------------------------------- Первые две строчки можешь удалить, они для работы кириллицы в Linux. И да, не забывай про важность табуляций в Python Можешь успеть спросить что-нибудь, пока я не ушёл)
Добавлено (24 Января 2019, 00:53) ---------------------------------------------
Код
from random import randint from statistics import mean, stdev, pvariance
# 52 deck of cards ranked 1-13 # shuffle the deck at game start # board of 10 spots # discard pile # rank: ace=low k=high # when placing card, every space to left is empty or lower rank # every space to right is empty or higher rank # loss = 6th discard # win = at least one card on every spot on board
lossCount = 0; winCount = 0;
#Список полученных результатов (очков): scoresList = list();
#Даём пользователю возможность ввести количество пасьянсов #(без каких-либо проверок: ожидаем, что пользователь не дурак и введёт число) solitaireCount = input("Введите количество пасьянсов: ");
for z in range(0, solitaireCount): # new deck deck = list(); # new discard pile discard = list(); # 4 of each card for i in range(1,5): for x in range(1,14): deck.append(x);
# shuffling the deck for z in range(0,51): w = randint(z,51) tempCard = deck[z]; deck[z] = deck[w]; deck[w] = tempCard;
#print deck; #print len(deck);
# Initializing the board board = [None]*10; # Automating card draws from the deck for i in range(0,51): #print board; card = deck.pop();
# Place card in it's corresponding spot if game isn't over yet if (None in board) and (len(discard)<6): if len(board)>=card: board[card-1] = card; else: discard.append(card);
# Loss conditions if len(discard)==6: lossCount +=1; print ("Поражение!");
# Win conditions if ((None in board) == False): winCount +=1; print ("Победа! :)");
#Записываем результат в список: score = 0; for curCard in board: if (None != curCard): score += curCard; scoresList.append(score);
#Записываем результаты в файл: print ("Записываем результаты в текстовый файл... \n"); with open("scores_out.txt", "w") as file: for line in scoresList: file.write(str(line) + "\n") file.close();
#Считываем результаты из файла в список: print ("Считываем результаты из текстового файла... \n"); scoresFromFile = []; with open("scores_out.txt", "r") as file: for line in file: scoresFromFile.append(line.strip()); file.close();
print ("Работаем со статистикой... \n"); mean = mean(scoresList); pvariance = pvariance(scoresList); stdev = stdev(scoresList);
#Записываем полученную статистику в файл: print ("Записываем полученную статистику в конец файла... \n"); with open("scores_out.txt", "a") as file: file.write("Mean = " + str(mean) + "\n"); file.write("Pvariance = " + str(pvariance) + "\n"); file.write("Stdev = " + str(stdev) + "\n"); file.close();
А вот и новый вариант с действующей статистикой (надеюсь, я всё сделал правильно ) и с записью/чтением файла. Пусть и без тех дополнительных данных. Парочка моментов: 1. Будет ругаться на кириллицу - замени все слова на русском (в том числе комменты) на английские. 2. По поводу многострадального statistics. Скачивай прямиком с гит-хаба, если у тебя ещё нет этого модуля. Переходишь сюда, открывается .py файл. Сохраняешь его (ПКМ -> "Сохранить как") прямо в папку со своим "проектом". Должен сохраниться как "statistics.py". Ну, вроде бы всё) Успехов тебе завтра!
Сообщение отредактировал DivES - Четверг, 24 Января 2019, 00:56
graniza, оперируешь такими терминами и не можешь решить такую простецкую задачу Счёт и ввод количества пасьянсов сделал. Статистику не сделал - у меня отсутствует та самая statistics, о которою я уже трижды запнулся Сегодня уже не закончу. Могу попробовать завтра, если ещё поздно не будет)
Сообщение отредактировал DivES - Среда, 23 Января 2019, 23:34
graniza, хорошо. Пасьянс работает, насколько я могу судить. В статистике что нужно? Только развёрнуто. То есть, что подразумевается под средним значением и стандартным отклонением? Так как, как я уже сказал, код статистики в принципе бесполезен
Добавлено (23 Января 2019, 22:35) --------------------------------------------- Хотя нет, стоп. Ошибаюсь. Увидел statistics. В чём сложность связать эти два файла?
graniza, ещё актуально? Какой именно пасьянс нужен? В коде статистики импортируется statistics. Стандартная библиотека для Python? Если нет, то код бесполезный
И то и другое ездит, но на Порше можно и до Steam доехать
Конечно можно! Больше того - и ведь доезжают! Я про ту кучу трэша на приведённых Вами движках, разработанную за месяц (в лучшем случае) из разного рода прессетов
ЦитатаIne ()
Я могу быть знаком с человеком, но не разговаривать с ним. Так и здесь, я знаком с BGE, но я не разрабатываю на нём игры
Знания о человеке, с которым не разговариваешь, будут уж слишком поверхностными
Anyan, Blender - пакет многофункциональный, как уже было заявлено выше. Это и средство для 3d-моделирования, и видеоредактор, и средство для создания/рендеринга анимации. Много там функций. Сам о видеоредакторе только в этом году узнал И есть там и встроенный игровой движок, которому уделяется не самое большое внимание. Так что новые версии выходят в основном для моделеров и аниматоров
dexxxle, мне во время студенчества не нравился С++ и вот теперь, спустя пару лет после окончания универа, я его полюбил и работаю на нём. Хотя до этого сам использовал Python, в том числе и в дипломной работе Для совсем-совсем новичка посоветую пройти курс метанита по C++, например. Вот когда разберёшься с этим курсом, тогда уже можно будет переходить к программированию очень и очень простых графических приложений (не стоит сразу же пытатья сделать что-то технически сложное). Поэтому пока что, как новичку-новичку в программировании, тебе важно понять то, как непосредственно происходит программирование. И при этом не слишком важно, какой ЯП ты выберешь первым. Перейти с одного языка на другой не составит труда, ведь методы программирования везде очень похожи (они практически идентичны, за исключением отдельных фич языков), а различия между ними лишь в синтаксисе (написании: где-то ставится ";", а где-то не ставится, например)!
UPD.: не знаю, почему написал про то, что закончил университет пару лет назад... Скорее всего думал о том времени, когда нам преподавали C++. А вот это как раз-таки и было пару лет назад
Сообщение отредактировал DivES - Воскресенье, 25 Ноября 2018, 20:28
dexxxle, значок "+-" напротив значения репутации, либо тут, в теме, либо в профиле участника Чем Python так не понравился? Довольно простой язык программирования ведь! Если хочешь действительно научиться программировать что-то сложное и оптимизированное, то попробуй посмотреть в сторону Си-образных языков. На C++, например. Один из ведущих языков для программирования игр, как-никак Документации большое количество, так же как и движков/библиотек, работающих с его использованием.
dexxxle, именно для программирования на Python я посоветовал бы библиотеку Pygame. Программирование в чистом виде, иначе назвать сложно Если же хотите попробовать себя в 3d, то могу посоветовать Blender 3D! Python здесь выступает в роли скриптового языка, который может как дополнить функционал уже готового проекта, так и являться фундаментом
drcrack, Anyan, zhuravelsv, друзья, давайте не будем пытаться задеть друг друга или вывести оппонента из себя? Я сам не был согласен с Anyan, когда прочитал его первый пост в этой теме. Однако при дальнейшей беседе понял ход его мыслей! Я понимаю, что многие люди пытаются яро доказать свою точку зрения, но это совершенно не обязательно. А Вам, Anyan, я бы всё же посоветовал быть более хладнокровным и не обращать внимания на нападки. У меня с Вами вышла спокойная беседа, только потому мы оба были спокойны. Человек же, совершающий нападки, скорее всего не отличается спокойствием. А значит и Вы ему ответите в такой же манере... Напишу это в надежде предотвратить возможный дальнейший холивар.
Anyan, а вообще, я с Вами согласен. GTA V остаётся в топе рейтингов до сих пор только из-за мультиплеера. Сюжет уже давно всеми пройден и туда могут зайти разве что по ошибке. С RDR2 будет похожая ситуация, как мне кажется. Rockstar Games нашли свой путь в пятой части и попытаются повторить то же самое со второй частью боевика о диком западе. А именно - будут развивать мультиплеер! И кто знает, если на консолях дело не пойдёт, может быть они вновь перенесут игру на PC?
Резюмирую: Да, интересные игры по-прежнему есть. Есть такие, которые хочется пройти, а есть такие, которые хочется перепроходить и играть после завершения сюжета. Но так же есть и такие игры, которые в силу обстоятельств или недальновидности разработчиков, почему-то не могут удержать внимание геймеров. Сам знаю такой проект, Survarium называется. Духовный наследних серии игр S.T.A.L.K.E.R. и всё в этом духе. Казалось бы, должен быть очень популярен на территории СНГ. Да, так и было, в начале ОБТ. Разработчики обещали открытый мир, обилие квестов и всё то, за что мы любили вышеупомянутого "предка". Прошло несколько лет с момента "выхода" игры и всё что мы имеем - пресловутый режим PvP с одной PvE миссией... Но зато единиц оружия, приобретаемого за реальные деньги - целый арсенал. Кто знает, что пошло не так у компании Vostok Games, но факт провала проекта остаётся фактом. Не зря же они запустили свой второй проект - Fear the Wolves, который так же является f2p.
Сообщение отредактировал DivES - Суббота, 10 Ноября 2018, 23:21
Anyan, в книге Джейсона Шрейера "Кровь, пот и пиксели" (не знаю, есть ли в электронном варианте) описаны истории разработки таких игр, как The Witcher 3 и Stardew Valley, например (на самом деле там описана разработка десяти различных проектов). Но возьму в пример эти два, потому что первый - детище ставшей уже великой компании CD Project Red, а второй - разработка обычного паренька Эрика Барона. И кто мне скажет, что эти два проекта не стали успешными? Но как в первом, так и во втором, во время разработки происходило всякое. И именно это "всякое" и влияет на решения самих разработчиков. Ведь мы с вами не знаем, в каких обстоятельствах находятся те люди, в чьи игры мы играем. Поэтому не стоит осуждать. А если чего-то слишком хочется, то можно попробовать и создать самому. Как это, кстати говоря, сделал Эрик
Добавлено (10 Ноября 2018, 21:29) --------------------------------------------- Кстати, повезло ведь Эрику с девушкой, которая на протяжении нескольких лет разработки содержала их обоих, зачастую работая на двух работах. Не будь её, кто знает, увидел бы ли мир Stardew Valley?