2016-03-08 2 views
-3

Я пытаюсь написать программу, которая проходит через элементы в списке. Делает эти предметы отдельно по частям, а затем присваивает им значение. В этом случае я использую числа как свои предметы. Я хочу назначить значение как простого, так и другого. (. Представленный как 'р', 'е', или 'O') Пример кода:Как предотвратить появление вложенных циклов для нескольких повторений одного значения?

testCode = '' 
testCodeList = [] 
prime = ['2','3','5','7'] 
even = ['4','6','8'] 
other = ['1','9'] 
list = ['76'] 
for item in list: 
    for num in item: 
     for eve in even: 
      if num == eve: 
       testCode = testCode + 'e' 
      else: 
       for pri in prime: 
        if num == pri: 
         testCode = testCode + 'p' 
        else: 
         for othello in other: 
          if num == othello: 
           testCode = testCode + 'o' 
          else: 
           pass 
print testCode 

А вот пример вывода:

АЗТП

Как это сделать, только дайте мне «pe», как и я тоже? Спасибо за помощь!

+0

Вы действительно хотите, чтобы элементы списка были строками? – EduardoCMB

+1

Как бы это было равным «peo», если у вас были только «7» и «6»? Вы ищете «pe»? –

+0

На самом деле это только печатает 'pppe'. – TigerhawkT3

ответ

0

Нет причин использовать кучу вложенных циклов, если вы просто хотите проверить членство. Используйте оператор in.

testCode = '' 
prime = ['2','3','5','7'] 
even = ['4','6','8'] 
other = ['1','9'] 
lst = ['76'] 
for item in lst: 
    for num in item: 
     if num in even: 
      testCode += 'e' 
     if num in prime: 
      testCode += 'p' 
     if num in other: 
      testCode += 'o' 

Это приводит к testCode быть 'pe' по желанию. Обратите внимание, что повторное добавление в строку, вероятно, не лучший способ сделать что-то. Подумайте о добавлении к list, который вы никогда не использовали, testCodeList. Кроме того, присвоение имени list означает, что вы не можете использовать встроенную функцию list() без дополнительных усилий.

+0

Спасибо за вашу помощь! Я всего лишь n00b, делающий python для развлечения на стороне. Это большая помощь! Благодаря! –

1

Три внутренних для петель, где вы переходите через простые, эвены и другие, где проблема лежит. Вы должны сделать это вместо того, чтобы:

testCode = '' 
testCodeList = [] 
prime = ['2','3','5','7'] 
even = ['4','6','8'] 
other = ['1','9'] 
list = ['76'] 
for item in list: 
    for num in item: 
     if num in even: 
      testCode = testCode + 'e' 
     elif num in prime: 
      testCode = testCode + 'p' 
     elif num in other: 
      testCode = testCode + 'o' 
     else: 
      pass 

Также в зависимости от вашей цели этого кода, вы можете заменить декларацию о even, prime и other списках с функциями/команды, чтобы проверить, если номер находится в факт даже, простой или другой. Другими словами, например, для части even, вы можете проверить, не делит ли число на два вместо проверки, существует ли число в списке even. Это можно сделать, заменив if num in even: на if int(num) % 2 == 0:.

+0

Спасибо! это большая помощь! –

Смежные вопросы