case do problem

Alf P. Steinbach alfps at start.no
Tue Mar 2 13:04:21 EST 2010


* Alf P. Steinbach:
> * Alf P. Steinbach:
>> * Tracubik:
>>> hi, i've to convert from Pascal this code:
>>>
>>> iterations=0;
>>> count=0;
>>> REPEAT;
>>>   iterations = iterations+1;
>>>   ...
>>>   IF (genericCondition) THEN count=count+1;
>>>   ...
>>>   CASE count OF:
>>>     1: m = 1
>>>         2: m = 10
>>>         3: m = 100
>>
>> Uhm, is this syntactically valid Pascal? As I recall, every Pascal 
>> construct was delimited in some way. Once I had the complete Pascal 
>> syntax in my head, but alas, not anymore...
>>
>>
>>> UNTIL count = 4 OR iterations = 20
>>>
>>> i do something like this:
>>>
>>> iterations = 0
>>> count = 0
>>>
>>> m_Switch = (1,10,100)
>>>
>>> while True:
>>>     iterations +=1
>>>     ...
>>>     if (genericCondition):
>>>         count +=1
>>>     ...
>>>     try:
>>>         m = m_Switch[count-1]
>>>     except: pass
>>>     if count = 4 or iterations = 20
>>>
>>> the problem is that when count = 4 m_Switch[4-1] have no value, so i 
>>> use the try..except.
>>
>>   iterations = 0
>>   count = 0
>>   while not( count == 4 or iterations == 20 ):
>>       iterations += 1
>>       # ...
>>       if generic_condition:
>>           count += 1
>>       # ...
>>       m = (1, 10, 100, 100)[count]
> 
> Add one extra 100 there.

Oh dear, it's one of those days.

    if 1 <= count <= 3:
        m = (1, 10, 100)[count - 1]


>>> Is there a better solution to solve this problem?
>>
>> Define "better". Do you mean faster, more clear, shorter, using less 
>> memory, what?
>>
>> Above I've assumed that you want to get rid of the try block, since 
>> that's what you're asking about:
>>
>>
>>> and, generally speaking, the try..except block slow down the 
>>> execution of the program or not?
>>
>> Probably, but don't think about it. Python programming is at a level 
>> where that kind of efficiency doesn't count. Or, ideally it shouldn't 
>> count.
>>
>>
>> Cheers & hth.,
>>
>> - Alf



More information about the Python-list mailing list