2016-04-22 21 views
0

現在、Pythonを学んでいます。通常はC++の男です。Python forループの問題

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] 

if文のforループを実行しようとしています。

は、C++では、これはちょうど私がループのために上記のコードを追加しようとしていますシンプルな

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

になりますが、私は失敗しているようです。

おかげ

+0

、失敗のコードをしてください表示します。 –

+1

あなたがループしているかどうか分かりません... 'pRooms'なら' xrange(pRooms)の 'iのために: – erip

+0

あなたのインデントを修正してください。また、現在は間違いがあり、Pythonではインデントが重要です。 – heltonbiker

答えて

4

Pythonのループが反復可能ですべてを反復:

std::vector<unsigned int> wallpaperList; 

// ... 

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

あなたはまた、単にsum機能を使用することができます。

for item in wallpaperList: 
     totalPapers += item 

現代のC++では、これはに似ています。

cost = sum(wallpaperList) 

毎回70の場合は、どうして乗算をしないのですか?あなたのforループの完全に同等のために

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

    # Another satisfied customer! 
    i += 1 

cost = i * 70 
2

rangeを使用します。

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

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

両方のループが値pRooms-1から0を反復処理します。しかし、pythonには他のオプションがあります。あなたは、インデックスを使用せずにリストの要素を反復処理することができます

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

リスト内包もいいです。あなたのコード内print通話気にしないのであれば、あなたはこのようなもので1行にコストを計算することができます:

totalPapers = sum(70 for room in listOfRooms if room.wallpaper == "Y") 
関連する問題