Найти - Пользователи
Полная версия: Помогите новичку
Начало » Python для новичков » Помогите новичку
1 2 3 4 5
Egorro13
angree77
Уважаемые гуру питона подскажите как в строке подаваемой из вне отличить цифру от буквы?
Даже близко не гуру, но могу попробовать подсказать - метод isdigit ))
angree77
Egorro13
Даже близко не гуру, но могу попробовать подсказать - метод isdigit
Спасибо друг, второй раз выручаешь )))
нашел решение, цифры отделил от буковок одним циклом, буковки другим, хотя если заморочится можно все одним циклом сделать, вот только метод isdigit проверяет является ли символ цифрой и выдает значение True или False, а если за цифрой идет еще одна цифра, то в список попадут две цифры, например дана входная последовательность:
A54v253c3 идея такая разбить данную строку на два списка, в одном цифры, в другом буквы
string = ['A', 'v', 'c']
integ = [54, 253, 3]
так вот я к чему проверяя методом isdigit в этом же цикле получаем совершенно другой список integ
integ = [5, 4, 2, 5, 3, 3]
короче как обычно без поллитра не разобраться
Egorro13
angree77
так вот я к чему проверяя методом isdigit в этом же цикле получаем совершенно другой список integ
Судя по всему, проверяешь каждый отдельный символ, если он цифра - эту цифру в список и добавляешь. А надо тогда уж проверять следующий, если он тоже цифра - прибавлять к текущему в какой-то временной строке, если не цифра - преобразовывать строку в число и помещать в список, строку обнулять для поиска следующего числа. Или проще и короче через регулярку:
 import re
s = input()
for m in re.findall("\d+", s):
    print(int(m))
py.user.next
angree77
Например имеется строка типа a32B103c4N5, и надо ее распаковать т.е. операция со строковыми переменными
  
>>> import re
>>> 
>>> s = 'a32B103c4N5'
>>> 
>>> out = [(i, int(j)) for i, j in re.findall(r'(\D+)(\d+)', s)]
>>> out
[('a', 32), ('B', 103), ('c', 4), ('N', 5)]
>>>
angree77
Други, столкнулся с очередной проблемкой сортировка словаря, надо отсортировать словарь по убыванию значений…
Вроде как получилось
list_d = list(d.items())
print(list_d)
list_d.sort(key=lambda i: i[1], reverse=True)
for i in list_d:
print(i[0], i[1])
Egorro13
angree77
Други, столкнулся с очередной проблемкой сортировка словаря, надо отсортировать словарь по убыванию значений…
Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
angree77
Egorro13
Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
Друг в качестве ключей используются строковые переменные, слова из текстового файла, а в качестве значений кол-во повторений в тексте… вариант с сортировкой по ключам ну ни как не подходит, только по значениям, т.е. выход был один преобразовать словарь в кортеж и в кортеже уже делать с ним что хошь
Sea_2704
Здравствуйте) я недавно открыла свой интернет-магазин, нахожусь в стадии начального развития) буду рада видеть всех вас в качестве подписчиков в своей группе https://vk.com/club181034237)
Egorro13
angree77
Друг в качестве ключей используются строковые переменные, слова из текстового файла, а в качестве значений кол-во повторений в тексте… вариант с сортировкой по ключам ну ни как не подходит, только по значениям, т.е. выход был один преобразовать словарь в кортеж и в кортеже уже делать с ним что хошь
Примерно набросал, о чем речь: skeys - отсортированный по значениям словаря (случайным числам от 0 до 100) список ключей этого словаря, в цикле выводится тот же словарь, но уже в “отсортированном” виде (хотя сам словарь фактически и не сортируется:
 import random
d = dict()
for i in range(10):
    d[f'key{i}'] = random.randint(1, 100)
print(d)
skeys = sorted(d, key=lambda k: d[k]) # сортировка - по значению (d[k])
for k in skeys:
    print(f'{k}: {d[k]}')
angree77
Други помогите, глаз чего то совсем замылился.. решаю задачку на вход поступает кол-во игр сыгранных футбольной командой и количество забитых голов в следующем формате
3
Зенит;3;Спартак;1
Спартак;1;ЦСКА;1
ЦСКА;0;Зенит;2
надо текущий формат преобразовать к следующему
Команда:Всего_игр Побед Ничьих Поражений Всего_очков
Зенит:2 2 0 0 6
ЦСКА:2 0 1 1 1
Спартак:2 0 1 1 1
очки начисляются по следующей схеме за победу 3, за ничью 1, и за проигрыш 0
Сделал через словарь, т.е. команды поставил в качестве ключей, а остальное обсчитываю по ходу дела
столкнулся с трудностью не получается посчитать кол-во побед и поражений
raw = int(input())
check = []
dt = {}
for i in range(raw): # input data
gol = input().split(';')
check += [gol]
col = len(check[0])
for i in range(raw):#преобразование к числам голов
for j in range(1, col, 2):
check[i][j] = int(check[i][j])
for i in range(raw):# создание словаря с командами
for j in range(0, col, 2):
if check[i][j] not in dt:
dt[check[i][j]] = []
#print(dt) #промежуточная проверка как создался словарь
game = 0
win = 0
loss = 0
for i in range(raw): #подсчет кол-ва игр сыгранных каждой командой
for j in range(0, col, 2):
if check[i][j] in dt:
game += 1
dt[check[i][j]].append(game)
game = 0 #обнуляем счетчик игр для следующей команды

# Не понятный момент для меня или кол-во голов засунуть в словарь и дальше работать только со словарем или мозговать как причесать то что ниже
for key in dt:
for i in range(raw):
for j in range(col):
if key == check[i][j] and check[i][1] > check[i][3]: # сравнение если больше то победа
win +=1
if key == check[i][j] and check[i][1] < check[i][3]:# если меньше то проигрыш
loss +=1
dt[key].append(win)
dt[key].append(loss)
win = 0
loss = 0
print(dt) #промежуточный вывод того что насчиталось
Нужен совет засовывать или нет кол-во голов в словарь, чтобы в дальнейшем работать только со словарем
Тонкость сего процесса в том что при сравнении цифр надо учитывать положение команды (так уж природно сложилось что команда в списке стоит либо под 0 индексом либо под 2 и относительно нее сдвигаться
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB