Найти - Пользователи
Полная версия: Вложеные списки
Начало » Python для новичков » Вложеные списки
1 2 3 4 5
@mary@
Есть список из 198 элементов, нужно разбить его на вложенные по 6 элементов вида: а=[, ….].
GreyZmeem
Itertools recipes:
def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
@mary@
благодарю)
@mary@
M= ('пика','чирва','бубны','трефы')
R'6','7','8','9','10','валет','дама','король','туз')
def cards ( A, B, trump):
AR1, M1)
BR2, M2)
if not ( R1 and R2 in R or M1 and M2 and trump in M ):
raise TypeError('введите точные данные')
if A==trump:
return A
else:
return B
if A.index(R)> B.index(R):
return ‘A’
else:
return ‘B’
Задание: 5. Разработать функцию, которая определяет, может ли первая указанная карта побить вторую указанную карту по правилам «подкидного дурака». Входные аргументы: данные о первой карте (масть и ранг), данные о второй карте, масть козыря. Необходимо реализовать проверку входных данных на корректность, если они некорректны, то создать исключение. Выходное значение функции: Истина, если бьёт, Ложь если не бьёт.
Ошибка: NameError: name ‘R1’ is not defined
Помогите разобраться, пожалуйста, очень интересно)


bs0d
код в теги помести, нихера ж не понятно
M = ('пика','чирва','бубны','трефы')
R = ('6','7','8','9','10','валет','дама','король','туз')
def cards (A, B, trump):
	(M1, R1) = A
	(M2, R2) = B
	print(M1, R1)
	print(M2, R2)
	print('козырь: %s' % trump)
	if (R.index(R1) > R.index(R2) and M1 == M2) or (M1 == trump):
		return True
    
	return False
print(cards((M[1], R[8]), (M[2], R[2]), (M[0])))
@mary@
спасибо)
@mary@
Не могли бы вы помочь в следующем решении задачи. Благодарю)
Сгенерировать случайным образом последовательность длиной 200 элементов, состоящую из чисел 0 и 1, таким образом, чтобы число подряд идущих единиц не превышало 2, а число подряд идущих нулей не превышало 4.
Nata
import random
def generate():
        seq=[]
        for i in range(200):
                if seq[-2:]==[1]*2:
                        seq.append(0)
                elif seq[-4:]==[0]*4:
                        seq.append(1)
                else:
                        seq.append(random.randint(0,1))
        return seq
py.user.next
>>> import random
>>> 
>>> def f(n, r1, r2):
...     assert r1 > 0 and r2 > 0
...     out = []
...     el = (0, 1)
...     er = [0, 0]
...     for _ in range(n):
...         while True:
...             e = random.choice(el)
...             if e == el[0]:
...                 er[0] += 1
...                 er[1] = 0
...             else:
...                 er[1] += 1
...                 er[0] = 0
...             if (e == el[0] and er[0] <= r1) or \
...                (e == el[1] and er[1] <= r2):
...                 out.append(e)
...                 break
...     return out
... 
>>> f(200, 4, 2)
[0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1]
>>>

Add
Немного параметризовал:
>>> import random
>>> 
>>> def f(el=(), er=(), n=0):
...     assert len(el) == len(er)
...     out = []
...     r = [0] * len(el)
...     for _ in range(n):
...         while True:
...             e = random.choice(el)
...             i = el.index(e)
...             t = r[i] + 1
...             r = [0] * len(r)
...             r[i] = t
...             if t <= er[i]:
...                 out.append(e)
...                 break
...     return out
... 
>>> f('01', (4, 2), 200)
['0', '1', '0', '1', '1', '0', '0', '1', '1', '0', '1', '1', '0', '1', '1', '0', '0', '0', '0', '1', '1', '0', '0', '1', '1', '0', '0', '1', '0', '0', '0', '0', '1', '1', '0', '0', '1', '1', '0', '1', '0', '0', '1', '1', '0', '0', '0', '0', '1', '0', '1', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '1', '0', '1', '1', '0', '1', '0', '0', '0', '0', '1', '0', '0', '0', '1', '0', '0', '1', '1', '0', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '0', '0', '1', '1', '0', '0', '0', '1', '1', '0', '0', '0', '1', '0', '1', '1', '0', '0', '0', '0', '1', '0', '0', '1', '0', '1', '1', '0', '1', '1', '0', '1', '0', '0', '1', '1', '0', '1', '0', '1', '1', '0', '1', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '1', '0', '0', '1', '1', '0', '0', '0', '1', '1', '0', '1', '1', '0', '1', '1', '0', '1', '1', '0', '0', '1', '1', '0', '1', '1', '0', '1', '0', '0', '1', '1', '0', '1', '1', '0', '0', '0', '0', '1', '1', '0', '0', '1', '0', '0', '0', '1', '1', '0', '1', '1', '0', '0', '0', '1']
>>>

Переделал в генератор:
>>> import random
>>> 
>>> def f(el=(), er=(), n=0):
...     assert len(el) == len(er)
...     rep = [0] * len(el)
...     for _ in range(n):
...         while True:
...             e = random.choice(el)
...             i = el.index(e)
...             t = rep[i] + 1
...             rep = [0] * len(rep)
...             rep[i] = t
...             if t <= er[i]:
...                 yield e
...                 break
... 
>>> f('01', (4, 2), 200)
<generator object f at 0xb739eb94>
>>> ''.join(f('01', (4, 2), 200))
'11010010011010110011011010110011011000011000100101011010110001010001101101010110101011010110110011011001001100110110011010010011010101000010100110011011000110011010110110101101101100110100110001011010'
>>>
@mary@
Всем огромное спасибо)
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