仕様: Ubuntu 13.04、Python 3.3.1
背景: Python のまったくの初心者が、この「手動ソート」の問題に遭遇しました。
私が求められたこと: 「ユーザーに 3 つの数値を入力してもらい、それらを 3 つの異なる変数に格納してもらいます。リストや並べ替えアルゴリズムを使用せずに、これら 3 つの数値を最小から最大の順に手動で並べ替えます。」
私が思いついたもの:
number = input("Please enter 3 numbers: ")
number = list(number)
a = int(number[0])
b = int(number[1])
c = int(number[2])
new_l = []
if a > b and a > c:
new_l.append(a)
if b > c:
new_l.append(b)
new_l.append(c)
else:
new_l.append(c)
new_l.append(b)
print(new_l)
if b > a and b > c:
new_l.append(b)
if a > c:
new_l.append(a)
new_l.append(c)
else:
new_l.append(c)
new_l.append(a)
print(new_l)
if c > a and c > b:
new_l.append(c)
if a > b:
new_l.append(a)
else:
new_l.append(b)
new_l.append(a)
print(new_l)
私の質問は次のとおりです。私の解決策は非常に限られていることを認識しています。まず、入力文字列がリストに変換されると、すべての数字をユーザーが意図した個々の数字に正しく分割する方法がないため、3 つの 1 桁の数字しか処理できません。第 2 に、このソリューションを使用することにより、コーダーは 3 つの数字を比較するために考えられるすべてのシナリオを列挙することを余儀なくされます。たとえば、100 以上の数字のユーザー入力を受け入れるようにスクリプトを変更する必要がある場合、これは非常に柔軟性に欠ける可能性があります。
上記の質問、またはこの問題を別の方法で解決する方法に関するガイダンスを共有していただければ、非常に助かります。ありがとうございました。