Python кірістірілген ауқым функциясы және айнымалы мәндер

Мен getopt арқылы пәрмен жолының дәлелдерін алып, ұсынылған мәндерге сәйкес келетін сценарий жазып жатырмын, сол мәндерді циклдегі шектеулер ретінде пайдаланыңыз. Төмендегі код фрагменті:

try:
    start_pod, end_pod, topo_value = map(int, args)
except ValueError, error_msg:
    if 'invalid' in str(error_msg):
        err_funct('Non-integer values supplied: {%s}' % args)
    else:
        err_funct(error_msg)

for pod in range(start_pod, end_pod):
    print 'value of pod: %s' % pod
    for switch in range(1,5):
        print 'value of switch: %s' % switch

Менде тұрған мәселе «ауқым» функциясымен. Менің ойымша, бұл бүтін сандардан өтіп жатырмын (карта функциясы бүтін сандар тізімін түрлендіреді) және мен қателесу функциясы арқылы жұмыс істейтіндерден басқа жұмыс істемейтін болсам, бірақ неге ол жұмыс істемейді .

Егер мен сценарийімді дұрыс сандармен, мысалы: 'some_script.py 1 1 5', сценарий ештеңені қайтармайды.

0

2 жауаптар

Сценарий шақыруыңыз дұрыс емес:

>>> range(1,1)
[]

( start_pod және end_pod екеуі де 1 болады).

ауқымы (i, j) функциялары келесі тізімді [i, i + 1, .., j - 1] қайтарады. Немесе басқаша айтқанда, соңғы нүкте әрқашан жойылады.

Келесі жолдағы ауқымға арналған кодын өзгертуге тырысыңыз ... :

for pod in range(start_pod, end_pod + 1):
2
қосылды

Өзіңізге тән мысалды қойыңыз. Сенің айтарым, маңызды бөлік жоқ - аргс деген не?

Егер мен өзімнің мысалға дәл келтіріп, үстіңгі жағына қоссаңыз,

args = ['1', '1', '5']

онда ол сіз жай ғана айтқан сияқты әрекет - шығу жоқ.

Алайда, бұл мүмкін емес, өйткені, содан кейін start_pod және end_pod бірдей.

Егер орнына мен болсам

args = ['1', '5', '1']

онда шығуды аламын. Кодтарыңызға берілген командалық жолмен кодты қалай жеткізуге болады (бұл блоктың алдында сіздің кодыңызда басып шығару repr (args) жасаңыз) және одан қандай нәтиже күтуге болады?

1
қосылды