1

Тема: Зупинка циклу .

Завдання функцією вибити всі непарні елеменит , а всі парні поділи на 2 . ТАк ось в другому циклі без кінця лелить 1.0 як зупинити виконання циклу ?

lst = [1,2,3,4,5,6]

def modify_list(l):
    for a in l:
        if int(a)%2 != 0:
            poz = l.index(a)
            del l[poz]
    
    for x in l:
        poz = l.index(x)
        rez = int(x)/2
        print (rez)
        l.insert(poz,rez)

modify_list(lst)

print (lst)

2

Re: Зупинка циклу .

Прихований текст

Cтавиш ipdb
ставиш брейкпоинт

import ipdb; ipdb.set_trace()

и запускаєш програму. Воно зупиниться там де той код що вище
значення змінних дивтися p poz чи p l, до наступного брейкпоинта c, виконати наступну стрічку коду n, вихід q.


Прихований текст
lst = [1,2,3,4,5,6]
def is_odd(n):
    return n%2==0
def modify_list(list):
    return [int(n/2) for n in list if is_odd(n)]
 
print(modify_list(lst))

# [1.0, 2.0, 3.0]
Подякували: Blast1

3 Востаннє редагувалося Blast (30.11.2014 17:21:06)

Re: Зупинка циклу .

Singularity написав:
Прихований текст

Cтавиш ipdb
ставиш брейкпоинт

import ipdb; ipdb.set_trace()

и запускаєш програму. Воно зупиниться там де той код що вище
значення змінних дивтися p poz чи p l, до наступного брейкпоинта c, виконати наступну стрічку коду n, вихід q.


Прихований текст
lst = [1,2,3,4,5,6]
def is_odd(n):
    return n%2==0
def modify_list(list):
    return [int(n/2) for n in list if is_odd(n)]
 
print(modify_list(lst))

# [1.0, 2.0, 3.0]

Намагався переробити в одну функцію, не виходить.

4

Re: Зупинка циклу .

lst = (1,2,3,4,5,6,7,8,9,10,11,12)
def modify_list(list):
    for n in list:
    return [int(n/2) for n in list if  n]    
        if n%2==0:
            return False
        else:
            return True
print(modify_list(lst))

5

Re: Зупинка циклу .

def modify_list(list):
    return [int(n/2) for n in list if n%2==0]

6

Re: Зупинка циклу .

[n//2 for n in lst if not n%2]

7

Re: Зупинка циклу .

та де має зупинитися цикл просто запиши Break

8 Востаннє редагувалося Master_Sergius (15.05.2015 11:15:04)

Re: Зупинка циклу .

По-перше, видалення елементів під час проходження ітератором по цьому ж списку може дати нехороші результати:

Прихований текст

Ось неправильний код, де хотілося б видалити всі парні елементи, а також надрукувати просто кожен елемент перед цим:

l = [1,2,6,4,5]

def modify_list(l):
    for elem in l:
        print elem
        if elem % 2 == 0:
            del l[l.index(elem)]
    return l

print modify_list(l)

результат виконання:
1
2
4
[1, 6, 5]

По-друге, це дійсно краще реалізувати генераторами списків, наприклад, перша частина задачі вирішується ось так:

new_list = [n for n in l if n % 2 == 0]

А додавши ще ділення на 2, що вже зробили люди вище, ви отримаєте те, що треба