2017-02-06 3 views
0

У меня есть недопустимая ошибка синтаксиса и пространство выделяются на звездочкеИспользования Python для написания MakeHuman файлов: недействительная Ошибка синтаксиса

"* modifier macrodetails/Caucasian ' + str(CaucasianQuotient) + '\n\" 

Я прошел через все эти несколько раз, но я до сих пор не знаю, что происходит не так

ListOfBodyShape = ['Round', 'RoundBottom', 'RoundTop', 'RoundMuscular', 'MuscularBottom', 'MuscularTop', 'Muscular', 'TopBottom'] 
ListOfHeight = ['Medium', 'MediumShort', 'TallMedium', 'TallShort', 'Tall', 'Short'] 
ListOfHairStyle = ['Short', 'Long', 'CurlyShort', 'CurlyLong'] 
Gender = ['Male', 'Female'] 
ListOfAges = ['Child', 'Teen', 'Adult', 'Elder'] 

MuscleQuotient = 0 
AfricanQuotient = 0 
ProportionQuotient = 0 
GenderQuotientQuotient = 0 
HeightQuotient = 0 
BreastSizeQuotient = 0 
AgeQuotient = 0 
BreastFirmnessQuotient = 0 
AsianQuotient = 0 
CaucasianQuotient = 0 
WeightQuotient = 0 

for a in range(len(ListOfBodyShape)): 
    for b in range(len(ListOfHeight)): 
     for c in range(len(ListOfHairStyle)): 
      for d in range(len(Gender)): 
       for e in range(len(ListOfAges)): 
        f = open(ListOfBodyShape[a] + ' ' + ListOfHeight[b] + ' ' + ListOfHairStyle[c] + ' ' + Gender[d] + ' ' + ListOfAges[e] + '.mhm', 'w') 

        f.write('version v1.1.0\n\ 
        tags untitled\n\ 
        camera 6.0 347.5 -0.113847193662 0.694580827356 -0.399507358182 0.6375\n\ 
        modifier macrodetails-universal/Muscle ' + str(MuscleQuotient) + '\n\ 
        modifier macrodetails/African ' + str(AfricanQuotient) + '\n\ 
        modifier macrodetails-proportions/BodyProportions '+ str(ProportionQuotient) +'\n\ 
        modifier macrodetails/Gender ' str(GenderQuotient) + '\n\ 
        modifier macrodetails-height/Height ' + str(HeightQuotient) + '\n\ 
        modifier breast/BreastSize' + str(BreastSizeQuotient) + '\n\ 
        modifier macrodetails/Age ' + str(AgeQuotient) + '\n\ 
        modifier breast/BreastFirmness ' + str(BreastFirmnessQuotient) + '\n\ 
        modifier macrodetails/Asian ' + str(AsianQuotient) + '\n\ 
        modifier macrodetails/Caucasian ' + str(CaucasianQuotient) + '\n\ 
        modifier macrodetails-universal/Weight ' + str(WeightQuotient) + '\n\ 
        eyes HighPolyEyes 2c12f43b-1303-432c-b7ce-d78346baf2e6\n\ 
        clothesHideFaces True\n\ 
        skinMaterial skins/default.mhmat\n\ 
        material HighPolyEyes 2c12f43b-1303-432c-b7ce-d78346baf2e6 eyes/materials/brown.mhmat\n\ 
        subdivide False\n') 
+0

Вокруг 'глаз HighPolyEyes' линия ... У вас нет' + '\ n'' –

ответ

1

Во-первых, вы должны понимать, что вам не нужны диапазоны на ваших петлях.

for a in range(len(ListOfBodyShape)): # a range 
    x = ListOfBodyShape[a] # get value with index 

точно такой же, как

for x in ListOfBodyShape: # get value 

Sidenote: Python именования-конвенции сказать не начинать переменные с заглавной буквы


Я бы предложил не пытаться написать один большой кусок текста.

Я не знаю, как должен выглядеть ваш вывод, но у Python есть многострочные строки, поэтому вы не должны сами писать \n, если вам не нужно.

Плюс, \n\ - это не просто новая линия.

Так начните с этой

f.write("""version v1.1.0 
tags untitled 
camera 6.0 347.5 -0.113847193662 0.694580827356 -0.399507358182 0.6375\n""") 

А потом я бы рекомендовал использовать строку форматирования.

f.write("modifier macrodetails-universal/Muscle {}\n".format(MuscleQuotient)) 

И не забывайте использовать f.close()

Или вы можете сделать это

filename = "{} {} {} {} {}.mhm".format(ListOfBodyShape[a], ListOfHeight[b], ListOfHairStyle[c], Gender[d], ListOfAges[e]) 
with open(filename), 'w') as f: 
    f.write(...) 
# f.close() automatically 
2

знак "+" отсутствует до ул в этой строке:

'modifier macrodetails/Gender ' str(GenderQuotient) + '\n\ " 

Также используйте f.close() в конец.

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