Скрипт PowerShell в помощь для изучения английских слов |
Возникло у меня желание облегчить себе задачу в изучении английского языка. В итоге, после некоторых раздумий, я написал PowerShell скрипт, призванный помочь в выучивании английских слов. Также скрипт прекрасно подходит для задач тестирования (и не только английского, т.к. база в текстовом формате и может содержать все что угодно) Скачать архив со скриптом и начальной базой английских слов (ССЫЛКА (24.79 Кб) [скачано:1222 раз(а)]) Как пользоваться:
* при первом запуске могут понадобиться повышенные административные права. Это связано с тем, что по-умолчанию PowerShell запрещает запускать любые скрипты из любого места и эту настройку нужно поменять (в Windows 7 и Windows 8 жмем правой кнопкой на ярлык English_Start-Test.lnk, в выпавшем списке выбираем пункт "Запуск от имени администратора") Системные требования:
Другими словамиЕсли у Вас установлена операционная система Windows 7 или Windows 8 - то ничего дополнительно делать не нужно, кроме как три пункта из раздела "Как пользоваться" выше. Если же у Вас установлена Windows XP и она автоматически не обновляется, то может потребоваться установка Windows PowerShell 2.0.
Код программы:try { $private:a = $host.UI.RawUI $private:a.WindowTitle = "Тестирование знаний" $b = $a.BufferSize $b.Width = 120 $b.Height = 25 $a.BufferSize = $b $b = $a.WindowSize $b.Width = 120 $b.Height = 25 $a.WindowSize = $b } finally { Remove-Variable a,b -ErrorAction SilentlyContinue } Clear-Host $error.Clear | Out-Null Write-Host Write-Host 'Original and comments: http://vam.in.ua/index.php/it/25-ms-powershell/165-powershell-learning-english.html' -ForegroundColor DarkCyan Write-Host 'Feedback: http://vam.in.ua/index.php/contacts/2-admins/1-aleksey.html' -ForegroundColor DarkCyan Write-Host Write-Host Function Private:Remove-Spaces ([string]$String) { while ($String.Substring(0,1) -eq ' ') { $String = $String.Substring(1,$String.Length - 1) } while ($String.Substring(($String.Length - 1),1) -eq ' ') { $String = $String.Substring(0, $String.Length - 1) } Return $String } Function Private:Get-Rank ([int32]$Percent) { [string]$Private:rank = 'Звание не определено!' if ($Percent -le 20) {$rank = 'Ни бе, ни ме, ни кукареку'} if (($Percent -gt 20) -and ($Percent -le 50)) {$rank = 'Простак'} if (($Percent -gt 50) -and ($Percent -le 80)) {$rank = 'Просветленный'} if (($Percent -gt 80) -and ($Percent -lt 95)) {$rank = 'Знаток'} if (($Percent -ge 95) -and ($Percent -le 99)) {$rank = 'Гуру'} if ($Percent -ge 100) {$rank = 'Гений'} Return $rank } [void]::($words = Get-Content .\base.txt -ErrorAction Stop) $script:array = New-Object 'object[,]' $words.Count,2 $script:totalWords = 0 foreach ($word in $words) { if ($word.Length -gt 0) { try { [string]$private:eng = [regex]::Match($word,'.*(?=\t)') if ($eng.Length -gt 0) { $eng = Remove-Spaces -String $eng $array[$totalWords,1] = [regex]::Match($word,'(?<=\t).*') $array[$totalWords,0] = $eng $totalWords += 1 } $eng = '' } finally {} } } [System.Collections.ArrayList]$numbArray = @(1..$totalWords) $private:right = 0 $private:secondTry = 0 $private:mistakes = 0 $private:currentQ = 0 while ($numbArray.Count -gt 0) { $private:rndm = Get-Random -Minimum 0 -Maximum ($numbArray.Count) $private:item = $numbArray[$rndm] $numbArray.RemoveAt($rndm) $private:answer = Read-Host $array[($item - 1),1] if ($answer -ieq $array[($item - 1),0]) { $right += 1 Write-Host 'Верно!' -ForegroundColor Green } else { Write-Host 'Не верно!' -ForegroundColor Yellow Write-Host Write-Host 'Попробуем с подсказками:' -ForegroundColor DarkGray $private:variantsNum = 1 [string]$private:variants = '' $private:rndm3 = Get-Random -Minimum 1 -Maximum 8 while ($variantsNum -lt 8) { if ($rndm3 -eq $variantsNum) { $variants += ('[' + ($array[($item - 1),0]) + '] ') } else { $private:rndm2 = Get-Random -Minimum 0 -Maximum ($totalWords) if (($array[$rndm2,0]) -eq ($array[($item - 1),0])) { $variantsNum -= 1 } else { $variants += ('[' + ($array[$rndm2,0]) + "] ") } } $variantsNum += 1 } Write-Host $variants -ForegroundColor White Write-Host $answer = Read-Host $array[($item - 1),1] if ($answer -ieq $array[($item - 1),0]) { $secondTry += 1 Write-Host 'Таки да' -ForegroundColor Green } else { $mistakes += 1 Write-Host 'Неа, не верно!' -ForegroundColor Red Write-Host Write-Host Write-Host "Правильный ответ:" -ForegroundColor DarkGray Write-Host $array[($item - 1),1] ": `t" $array[($item - 1),0] -ForegroundColor White } } $currentQ += 1 Write-Host [int32]$Private:percent = (($right + $secondTry + $mistakes) * 100 / $totalWords) Write-Host '-------=============------- [' $currentQ '/' $totalWords '] ' $percent '%' -ForegroundColor DarkGray Write-Host Write-Host } Write-Host Write-Host Write-Host "Всего вопросов: `t" $totalWords -ForegroundColor DarkCyan Write-Host Write-Host "Верных ответов: `t" $right -ForegroundColor DarkCyan Write-Host "Со второй попытки: `t" $secondTry -ForegroundColor DarkCyan Write-Host "Ошибок: `t`t" $mistakes -ForegroundColor DarkCyan $percent = ($right * 100 / $totalWords) Write-Host Write-Host Write-Host "Точное знание: `t`t" $percent "%" -ForegroundColor Cyan Write-Host $percent = $percent + (($secondTry * 100 / $totalWords) / 2) $Private:finalRank = Get-Rank -Percent $percent Write-Host "Ваш титул: `t`t" $finalRank -ForegroundColor Magenta Write-Host Remove-Variable words,answer,array,numbArray,rndm,rndm2,rndm3,variants,variantsNum,percent,totalWords,finalRank,currentQ -ErrorAction SilentlyContinue Write-Host Write-Host Write-Host "Для выхода нажмите ""Ctrl + C"" или закройте окно" -ForegroundColor DarkCyan Start-Sleep -Seconds 65535 База скриптаБаза должна храниться в текстовом файле base.txt в том же каталоге, что и сам скрипт. Формат базы:ответ{знак табуляции}вопрос
adjective прилагательное, зависимый bay залив, отсек, лаять, облаять beyond вне, по ту сторону, после, сверх bunch связка, группа, пучок, связывать care заботиться, хотеть, уход carpenter плотник, изготовлять chest грудь, сундук, фонд chill холод, охлаждать climb лазить, взбираться, подъем dew роса few немногие, небольшое количество hang вешать, висеть hug обнимать huge огромный knee колено lick облизывать mercury ртуть, Меркурий opinion мнение origin происхождение, начало shape форма, лепить, сформировать shirt рубашка, футболка shy застенчивый, пугливый, стеснительный sly хитрый suitcase чемодан towel полотенце Как дополнять базу:Самый простой способ - использовать Microsoft Excel. Вносим на листе эксэля в один столбец необходимые ответы, а в соседний справа - соответствующие вопросы. Потом выделяем оба столбца, нажимаем "Копировать" и вставляем это в текстовую базу скрипта (base.txt).
Перенос базы с сайта LinguaLeo.com:http://vam.in.ua/index.php/it/34-english-language/248-english-lingualeo-fetch-words.html |