int x; string s = Console.ReadLine(); bool flag = int.TryParse(s, out x); //если s нельзя преобразовать в число, то flag = false x = int.Parse(s); // если s нельзя преобразовать в число, то вылезет исключение
int x; string s = Console.ReadLine(); bool flag = int.TryParse(s, out x); //если s нельзя преобразовать в число, то flag = false x = int.Parse(s); // если s нельзя преобразовать в число, то вылезет исключение
enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; Days.Sat; Days.Sun; //и т.д.
Условие ? Истина : Ложь
if (a>b) { Console.WriteLine(a); } else { Console.WriteLine(a); } // можно заменить на: (a>b) ? Console.WriteLine(a) : Console.WriteLine(b);
CREATE SCHEMA `shop` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin ; # создать БД shop с кодировкой utf8 - utf8_bin CREATE TABLE `shop`.`category` ( `id` INT NOT NULL, `name` VARCHAR(128) NOT NULL, `discount` TINYINT NOT NULL, PRIMARY KEY (`id`)); /* создать в БД shop таблицу category со столбцами id, name, discount столбец id принять за ключ доступа к строке */ INSERT INTO `shop`.`product_type` (`name`) VALUES ('Пальто'); # вставить в БД shop, в таблице product_type значение для переменной # name равное "Пальто" INSERT INTO `shop`.`category` (`name`, `discount`) VALUES ('Обувь', 5); # вставить в БД shop, в таблице category значения для переменных name, # discount равное "Обувь", 5 SELECT * FROM shop.product_type; # отобразить таблицу product_type из БД shop use shop; # выбираем БД shop, SELECT * FROM category WHERE id = 3; # выбираем в таблице category элемент, где id = 3 SELECT * FROM category WHERE (discount > 0) AND (discount < 10); # выбираем в таблице category элементs, удовлетворяющие условиям SELECT FROM category WHERE alias_name IS NOT NULL; # для NULL используется IS или IS NOT, для всего остального = или <> SELECT name, discount FROM category; # выбрать столбцы name, discount из таблицы category SELECT DISTINCT discount FROM category; # выдает только уникальные значения SELECT * FROM category ORDER BY discount; # выводим всю таблицу с сортировкой по столбцу discount SELECT * FROM category ORDER BY discount DESC; # сортировка в обратном порядке (DESC) SELECT * FROM category WHERE discount <> 0 ORDER BY discount; # комбинация команд SELECT * FROM category LIMIT 2; # выводит только 2 первые строки из таблицы UPDATE category SET name = 'Головные уборы' WHERE id = 3; # обновляем в таблице category в столбце name на "Головные уборы" там, где id = 3 UPDATE category SET discount = 3 WHERE id IN (2,3); # обновляем в таблице category в столбце discount на "3" там, где id = 2, 3 DELETE FROM category WHERE id =3; # удаляем из таблицы category строки, где id = 3
Старт в GameDev оказался очень простым)) Моя первая игра — Черепашка, качайте, наслаждайтесь)
Работает только под Windows. Написана на C# + библиотеке SmartBasicLibrary. В игре 12 уровней.
Но у меня возникли проблемы на этапе 3. Всплыла ошибка: Errors while executing git —version. exitCode=-1073741792 errors
После тырканий всплыла еще одна. PyCharm, что это??:
В общем если у вас что-то подобное, то нужно установить или переустановить программу Git. Скачиваем ее отсюда: https://git-scm.com/
Ставим. Везде, где был выбор, все оставил по умолчанию. И готово!
Возможно ваш PyCharm еще не тот путь видит на файл Git. Чтобы это исправить, заходим File-Settings-Version Control-Git и исправляем там путь. У меня это: C:\Program Files\Git\cmd\git.exe
======================================
Оффтоп вместо рекламы: Сарафан: поиск мастеров, если вдруг вам нужно вызвать мастера для решения бытовых вопросов
Перегруженный оператор — это метод со специальными именами, где за ключевым словом operator следует символ переопределяемого оператора.
class Box { public int Height { get; set; } publci int Width { get; set; } public Box(int h, int w) { Height = h; Width = w; } public static Box operator+ (Box a, Box b) { int h = a.Height + b.Height; int w = a.Width + b.Width; Box res = new Box(h, w); return res; } } static void Main(string[] args) { Box b1 = new Box(14, 3); Box b2 = new Box(5, 7); Box b3 = b1 + b2; Console.WriteLine(b3.Height); // 19 Console.WriteLine(b3.Width); // 10 }
Благодаря этому перегруженному оператору мы суммируем сразу 2 параметра. Перегруженный оператор должен быть static.
Перегружены могут быть все арифметические операторы и операторы сравнения. При перегрузке оператора >, оператор < должен быть тоже перегружен (тип будет bool: public static bool operator>).
Работа с путями (os, os.path), проверка существования каталога перед созданием, запуск сторонней программы с аргументами:
#Есть программа (Image Magick для Windows), которая сжимает фотографии, и есть папка «Source» #с самими фотографиями. Каждую фотографию мы хотим уменьшить до 200px в ширину #(высота меняется пропорционально). Нужно для каждой фотографии запустить программу и результат #работы положить в папку «Result». #Пример (ImageMagic): convert input.jpg -resize 200 output.jpg #Задача №3. Дополнительная (не обязательная) #Реализовать 4 параллельных процесса и разделить фотографии между ними. import os import subprocess def all_list(): # полный список файлов source_dir = 'Source' os.chdir(os.path.join(os.path.dirname(os.path.abspath(__file__)), source_dir)) files_list = os.listdir(path=".") return files_list def ensure_dir(file_path): # проверяем есть ли уже каталог с именем Result, если нет, то создаем if not os.path.exists(file_path): os.makedirs(file_path) def main(files_list): print('Идет обработка...') source_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Source') result_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Result') ensure_dir(result_dir) for i in files_list: input_path = os.path.join(source_dir, i) output_path = os.path.join(result_dir, i) command = 'convert ' + input_path + ' -resize 200 ' + output_path os.chdir(os.path.dirname(os.path.abspath(__file__))) subprocess.run(command) #subprocess.Popen('имя') - асинхронный запуск print('Готово') main(all_list())
Очередная тренировка работы с кодировками, поиском слов. И немного про пути к файлам (os, os.path), есть пример использования исключений (try, except).
# Задание # мне нужно отыскать файл среди десятков других # я знаю некоторые части этого файла (на память или из другого источника) # я ищу только среди .sql файлов # 1. программа ожидает строку, которую будет искать (input()) # после того, как строка введена, программа ищет её во всех файлах # выводит список найденных файлов построчно # выводит количество найденных файлов # 2. снова ожидает ввод # поиск происходит только среди найденных на этапе 1 # 3. снова ожидает ввод # ... # Выход из программы программировать не нужно. # Достаточно принудительно остановить, для этого можете нажать Ctrl + C # Пример на настоящих данных # python3 find_procedure.py # Введите строку: INSERT # ... большой список файлов ... # Всего: 301 # Введите строку: APPLICATION_SETUP # ... большой список файлов ... # Всего: 26 # Введите строку: A400M # ... большой список файлов ... # Всего: 17 # Введите строку: 0.0 # Migrations/000_PSE_Application_setup.sql # Migrations/100_1-32_PSE_Application_setup.sql # Всего: 2 # Введите строку: 2.0 # Migrations/000_PSE_Application_setup.sql # Всего: 1 # не забываем организовывать собственный код в функции import os import chardet migrations = 'Migrations' current_dir = os.path.dirname(os.path.abspath(__file__)) def all_list(): 'Формируем полный список файлов' migrations_dir = os.path.join(current_dir, migrations) file_list = os.listdir(path=migrations_dir) return file_list def sql_list(all_list): 'Функция для отбора sql-файлов' sql_file_list = list() # пустой список sql-файлов for i in all_list: if i.endswith('.sql'): sql_file_list.append(i) return sql_file_list def decode_files(file_name): 'Раскодирует файл, возвращает содержимое в читаемом виде' with open(os.path.join(current_dir, migrations, file_name), 'rb') as f: data = f.read() result = chardet.detect(data) data = data.decode(result['encoding']) data = data.lower() return data def search_string(sql_list): 'Главная функция: ищет запрашиваемую строку в файлах, список при каждом запросе сужается' file_list = sql_list while True: search = input('Введите строку (регистр не важен): ') search = search.lower() containing_files = list() # пустой список файлов для формирования сужающегося списка for file_name in file_list: if search in decode_files(file_name): containing_files.append(file_name) print(file_name) print('Всего: {}'.format(len(containing_files))) file_list = containing_files if __name__ == '__main__': search_string(sql_list(all_list())) pass
Объявление индексатора похоже на объявление свойства класса, разница лишь в том, что для индексатора нужен индекс. Как и в свойствах можно использовать элементы get и set. Однако, где свойства возвращают или устанавливают определенный элемент данных, индексаторы возвращают или устанавливают определенное значение объекта. Индексаторы определяются ключевым словом this.
class Clients { private sting[] names = new string[10]; public string this[int index] { get { return names[index]; } set { names[index] = value; } } }
Теперь, когда мы объявили объект Clients, мы используем индекс для обращения к определенным объектам, типа элементов массива:
Clients c = new Clients(); c[0] = "David"; c[1] = "Zineddin"; Console.WriteLine(c[1]); // Outouts "Zineddin"
Индексаторы используются, когда класс представляет собой список, коллекцию или массив объектов.