私はPythonにかなり慣れていないので、趣味の興味として取り上げました。検索を行ったところ、「コンピューティングの実践」の演習がたくさんありました。そのうちの1人が、以下に示すようなASCII図の作成について質問しました。
とても簡単な練習のように思えますが、数字を使ってこれを描くことに頭を悩ませているようには見えません。この練習では、上の絵は数字「1」を使って描かれたと述べています。
また、0未満または100を超える数値を使用して、ASCII図面を作成することはできません。
別の例を次に示します。
ここでの入力は数字「2」でした。
最初の画像を表示する方法を見つけましたが、指定された数値を使用することなく、whileループ内の単純な「else」を使用して、0以下の数値を除外できるようにしました。 100以上。
行き止まりになりました。
最初の図面を作成するために変数番号を使用しない上記の私のコード:
while True:
s = input("Give me a number to make a drawing with that is between 0 and 100: ")
if not s.isdigit():
print ("Error, only numbers will make this program run.")
continue #Try Again but with a number this time
if int(s) >= 100:
print ("The number is bigger than or equal to 100 and won't work. \nDo try again.")
continue #try again
if int(s) <= 0:
print ("The number is smaller than or equal to 0 and won't work. \nDo try again.")
continue #try again
else:
print ("%5s" %("*" *3),"\n"'%5s' %("* *"),"\n" '%7s' %("*** ***"),"\n" '%7s' %("* *"),"\n" '%7s' %("*** ***"),"\n" '%5s' %("* *"),"\n" '%5s' %("*" *3))
print ('Want to make another drawing ?')
continue #make another drawing
演習では、次のように述べています。
サイズが$n$のASCII図形は、1行または複数行で構成されています。各行ではスペースと星(*)のみが許可されます。行の各星の後にスペースは許可されないため、「\n」または改行で終了する必要があります。そして、上記の例が続きます。
変数入力に依存する新しいコード例: また、このコード例では、入力が1のときにトリガーするように設定されていますが、入力数を増やすと、図面全体を「拡大」する際に問題が発生します。
while True:
A = input("Give me a number to make a drawing with that is between 0 and 100: ")
b = "***"
c = "*"
d = " "
if not A.isdigit():
print ("Error, only numbers will make this program run.")
continue #Try Again but with a number this time
if int(A) >= 100:
print ("The number is bigger than or equal to 100 and won't work. \nDo try again.")
continue #try again
if int(A) <= 0:
print ("The number is smaller than or equal to 0 and won't work. \nDo try again.")
continue #try again
else :
range(1,99)
if int(A) == (1) :
print ((d *((int(A))*2)) + b,)
print ((d *((int(A))*2))+ c + d + c,)
print ((d *((int(A))*0))+ b + d + b,)
print ((d *((int(A))*0))+ c + d*5 + c,)
print ((d *((int(A))*0))+ b + d + b,)
print ((d *((int(A))*2))+ c + d + c,)
print ((d *((int(A))*2)) + b,)
continue #try again
しかし、ASCII数値内のスペースの数が1から2に増加するとともに、スペースの数が「増加」するという問題がまだあります。
3行目も問題があるので、コンソールの側面に沿って表示する必要があるため、側面から0の間隔にする必要がありますが、2の間隔で2に増やす必要があります。 。