isPalidrome (mystr)
を - mystr
はそうpalidrome、False
ある場合True
を返します。この関数は機能します。1行の条件文(C++スタイル)
今、私はそうのような単純な主な機能があります。
mystr =''
isitapalindromealready = lambda : if isPalindrome(mystr) ==True: return "" else return 'not'
while mystr != 'quit':
mystr = input("enter a string: ")
print ('{} is {} a palindrome'.format(mystr, isitapalindromealready())
をしかし、私は構文エラーを取得する -
File "scratch1.py", line 45
isitapalindromealready = lambda : if isPalindrome(mystr) ==True: return "" else return 'not'
^
SyntaxError: invalid syntax
私は上記の私のロジックを複製すると非常に接近して同様のスレッドを確認しました(ちょうどどこでも関数としてラムダを呼び出さない)。
Conditional statement in a one line lambda function in python?
しかし、答えのいずれもが、それは構文エラーである理由を説明しません。 PEP 8を無視すると、if
と同じ行にelse
を含めることができない限り、構文は有効です。
ヘルプ、オプション、代替の検討事項はありますか? BTW:私は、この単純なプログラムを書いて、はるかに大きなモジュールのロジックサイズを減らすためにこの機能をチェックしました。 isPalindrome
の中の回文が機能しているかどうかを調べることができます。それは私の質問のポイントではない。
@DYZ:以前の編集で投稿されたエラーメッセージが無効になったので、ロールバックしました。 –
[Pythonには三項条件演算子がありますか?](https://stackoverflow.com/questions/394809/does-python-have-a-ternary-conditional-operator) –