2016-04-22 3 views
0

В настоящее время изучает питон. Обычно парень из С ++.Python simple for loop issue

if wallpaper == "Y": 
    charge = (70) 
    print ("You would be charged £70") 
    wallpaperList.append(charge) 

elif wallpaper == "N" : 
    charge = (0) 

else: 
    wallPaper() 

surfaceArea 
    totalPapers = 0 
    for item in range (len(wallpaperList)): 
     totalPapers += wallpaperList[item] 

Я пытаюсь сделать цикл for для инструкции if.

В C++ это будет только простой

for (I=0; i<pRooms; i++){ 
} 

Я пытаюсь добавить код выше в цикле, но я, кажется, не в состоянии.

Благодаря

+0

Покажите код, который неисправного, пожалуйста. –

+1

Не уверен, что вы зацикливаете ... если это 'pRooms', вы делаете' for i в xrange (pRooms): ' – erip

+0

. Исправьте свой отступ, также, в настоящее время есть ошибки, а в Python - отступы. – heltonbiker

ответ

4

Python петли перебрать все в итерацию:

for item in wallpaperList: 
     totalPapers += item 

В современном C++, это аналогично:

std::vector<unsigned int> wallpaperList; 

// ... 

for(auto item: wallpaperList) { 
    totalPapers += item 
} 

Вы также можете просто использовать функцию sum:

cost = sum(wallpaperList) 

Если плата 70 каждый раз, почему бы не просто умножить?

while wallPaper == 'Y': 
    # ... 

    # Another satisfied customer! 
    i += 1 

cost = i * 70 
2

Для точного эквивалента вашей for петли используйте range:

for (i=0; i<pRooms; i++){ # C, C++ 
} 

for i in range(pRooms):  # Python 
    ... 

Обе петли перебирать значения 0 к pRooms-1. Но python дает вам другие варианты. Вы можете перебрать элементы списка без использования индекса:

for room in listOfRooms: 
    if room.wallpaper == "Y": 
     ... 

постижений Список также приятно. Если вы не заботитесь о print вызовов в коде, вы можете вычислить стоимость в одной строке с чем-то вроде этого:

totalPapers = sum(70 for room in listOfRooms if room.wallpaper == "Y")