Форум сайта python.su
0
Есть список из 198 элементов, нужно разбить его на вложенные по 6 элементов вида: а=[, ….].
Офлайн
34
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)
Офлайн
0
благодарю)
Офлайн
0
M= ('пика','чирва','бубны','трефы')
R
'6','7','8','9','10','валет','дама','король','туз')
def cards ( A, B, trump):
A
R1, M1)
B
R2, 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
Помогите разобраться, пожалуйста, очень интересно)
Офлайн
2
код в теги помести, нихера ж не понятно
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])))
Отредактировано bs0d (Окт. 2, 2014 00:58:43)
Офлайн
0
спасибо)
Офлайн
0
Не могли бы вы помочь в следующем решении задачи. Благодарю)
Сгенерировать случайным образом последовательность длиной 200 элементов, состоящую из чисел 0 и 1, таким образом, чтобы число подряд идущих единиц не превышало 2, а число подряд идущих нулей не превышало 4.
Офлайн
6
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
Отредактировано Nata (Окт. 8, 2014 00:21:16)
Офлайн
857
>>> 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] >>>
>>> 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' >>>
Отредактировано py.user.next (Окт. 9, 2014 01:56:20)
Офлайн
0
Всем огромное спасибо)
Офлайн