Если вы никогда не касались Python раньше или если вы только начинаете, это пост, если для вас. Это то, что я просто не могу жить, не будучи программистом Python.
Не используйте Python 2. Используйте Python 3.
Здесь нет секрета. Только не используйте Python 2.
Действительно, не используйте это. Используйте Python 3.
Понятно? Используйте Python 3.
Нет Python 2. Всегда.
Итак, вы изучаете Python. Что первое, что вы узнаете?
Привет, мир
, хорошо.
Но что такое второй то, что вы изучаете? Для меня это всегда суммирует два целых числа. Как вы это делаете в Python? Ну, большинство людей делают что -то подобное
first_int = int(input()) second_int = int(input()) print(first_int + second_int)
Для этого кода вход будет выглядеть так
12 # hit enter 3 # hit enter again # output 15
Фу.
Чтение двух строк в одной и той же строке
Забудьте о последнем примере немного. Допустим, вы хотите сделать код, который получает две строки в одной строке и инвертировать, как
# input hello world # enter (in one single line) # output world hello
Вы можете использовать расколоть
first_string, second_string = input().split() print(second_string, first_string) # out: 'world hello'
Obs : Сплит
также может получить символы разделителя в качестве аргументов. Допустим, ваши струны разделены на запяту
hello, there
Чтобы разделить тех, кого вы могли бы использовать
first_string, second_string = input().split(', ') print(second_string, ', ', first_string) # out: 'world, hello'
Имейте в виду пространство на Сплит
Аргумент: расколоть(', ')
, не расколоть(',')
Входы переменной длины
В последнем примере мы знали, что собираемся получить две строки в качестве входных данных. Но как насчет того, когда мы не знаем, сколько струн есть заранее?
Допустим, мы хотим, чтобы наш код инвертировал порядок всех строк, передаваемых при вводе, независимо от того, сколько там есть
# input hello darkness my old friend # hit enter # output friend old my darkness hello # input just three strings # hit enter # output strings three just
Вы можете использовать Список понимания
all_strings = [string for string in input().split()] print(all_strings[::-1]) # all_strings[::-1] inverts the list
Возвращаясь к нашему первому примеру (добавление двух целых чисел), разве не было бы лучше, если бы мы могли пройти в два числа в одной линии?
Если вам нужно читать номера вместо строк, вы можете использовать Тип кастинг
# Mind the int(a) converting each string to int first_int, second_int = [int(a) for a in input().split()] print(first_int + second_int) # Or convert to float first_float, second_float = [float(a) for a in input().split()] print(first_float + second_float)
Что, если мы хотим подвести итоги столько чисел, сколько приведены в входном порядке? Вот так
# input 1 2 # output 3 # input 2 3 3 4 # output 12
Мы прочитали список целых чисел и впоследствии суммируем их
# Mind the int(a) converting each string to int list_of_ints = [int(a) for a in input().split()] print(sum(list_of_ints))
Это также может быть полезно в упражнениях по конкурентному программированию или алгоритму, если у вас есть вход, подобный <номер N> [Список n номеров]
2 9 8 # input 1 3 1 2 3 # input 2 4 8 9 8 7 # input 3
Как и в Python, вам не нужно знать длину списка заранее (вы можете просто использовать len (my_list)
), вы можете отказаться от первого числа списка, используя срезы
list_of_ints = [int(a) for a in input().split()][1:]
Или даже поп
list_of_ints = [int(a) for a in input().split()] list_of_ints.pop(0)
Если вы знакомы с CPI C для обработки файлов, Python будет казаться очень похожим, но со всеми функциями, которые вы всегда хотели в C.
Первое: открытие, чтение, написание, закрытие
# Open test_file.txt for writing (w) using an absolute path some_file = open('/home/gabriel/test_file.txt', 'w') # Open test_file.txt for reading (r) using a relative path some_other_file = open('test_file.txt', 'r') # Copy the content from some_other_file to some_file content = some_other_file.read() some_file.write(content) # Close files some_file.close() some_other_file.close()
Имейте в виду, что, хотя они кажутся одним и тем же файлом, some_other_file
может не то же самое, что some_file
Потому что это указано относительный путь вместо абсолютного
Лучший способ сделать вышеупомянутый, однако, – использовать Контекстные менеджеры , точнее, а с
утверждение
with open('/home/gabriel/test_file.txt', 'w') as some_file, \ open('test_file.txt', 'r') as some_other_file: # Copy the content from some_other_file to some_file content = some_other_file.read() some_file.write(content)
При этом вам не нужно напоминать себе о закрытии файла, менеджер контекста делает это для вас, когда с
Заявление заканчивается.
Оригинал: “https://dev.to/gmelodie/3-tricks-every-python-programmer-needs-to-know-n9c”