私はPythonにはかなり新しく、Project Eulerの課題を試しています。私は現在、ネストされたforループを正しく動作させるのに問題があります。私のコードは次のようになります。Python-期待どおりに機能しないループのためにネストされました
def palindrome():
for i in range(999,317,-1):
for a in range(999,317,-1):
s = str(i*a)
if s[0] == s[5] and s[1] == s[4] and s[2] == s[3]:
return(s)
print(palindrome())
プログラムのポイントは2つの3桁の数字の積で可能な最大回文を見つけることです。私はこのプログラムを実行するとき、私は一貫して答え580085を得る。それは回文であるが、間違った答えであることが分かっている。
コンクリート質問:私は不適切ないくつかの方法でループのネスト/
- を使用していますか?
- 2つのループを使用せずに回文を検索する方法はありますか?
あなたの2番目のforループは 'for a range(i、317、-1):'に変更することができます。返す代わりに、すべての回文をリストに追加し、ループの両方の後に最大を得ることができます – depperm
@depperm 1つの最大の回文を保存し、大きい場合は新しいものに変わります。 –
def isPalindrome(number): str(number)== '' .join(反転(str(number)))else False – Shijo