2017-07-16 2 views
-2

空白になっているのPython 3でプログラミングのコードです:Pythonの言語への完全な紹介:表示は、ここで

import sys 


    Zero = [" *** "," * * ","*  *","*  *","*  *"," * * "," *** "] 

    One = [" * ", "** ", " * ", " * ", " * ", " * ", "***"] 

    Two = [" *** ", "* *", "* * ", " * ", " * ", "* ", "*****"] 

    Three = [" *** ", "* *", " *", " ** ", " *", "* *", " *** "] 

    Four = [" * ", " ** ", " * * ", "* * ", "******", " * ", 
    " * "] 

    Five = ["*****", "* ", "* ", " *** ", " *", "* *", " *** "] 

    Six = [" *** ", "* ", "* ", "**** ", "* *", "* *", " *** "] 

    Seven = ["*****", " *", " * ", " * ", " * ", "* ", "* "] 

    Eight = [" *** ", "* *", "* *", " *** ", "* *", "* *", " *** "] 

    Nine = [" ****", "* *", "* *", " ****", " *", " *", " *"] 

    Digits = [Zero, One, Two, Three, Four, Five, Six, Seven, Eight, Nine] 

    try: 
     digits = sys.argv[0] 
     row = 0 
     while row < 7: 
      line = "" 
      column = 0 
      while column < len(digits): 
       number = int(digits[column]) 
       digit = Digits[number] 
       line += digit[row] + " " 
       column += 1 
      print(line) 
      row += 1 
    except IndexError: 
     print("usage: bigdigits.py <number>") 
    except ValueError as err: 
     print(err, "in", digits) 

私はbigdigits.pyを実行すると、それはこのことを示しています

enter image description here

私のPythonバージョンは3.5.3です。

+0

Pythonファイルは、一度にブロックをコピーしてIDLEインタープリタに貼り付ける以外にも実行できます。 – jonrsharpe

+1

また、 'digits = sys.argv [1]'が必要です。 'sys.argv'を使用しようとしている場合は、REPLセッションからではなく、コマンドラインからスクリプトを実行してください。 –

+0

[ファイル]> [新しいファイル]に移動し、そこでコードを貼り付けることを検討してください。インデント(この場合はオフ)の良いアイデアが得られます。また、キーボードでF5キーを押してコードを実行することもできます。 – PeskyPotato

答えて

1

盲目的にコピーして貼り付ける前に、コピーしているコードを理解してください。

問題はdigits = sys.argv[0]です。あなたはまた、使用部分'usage: bigdigits.py <number>'を無視しました。明らかに、著者は誤ってsys.argvを誤解していました。

実行中python bigdigits.py {number} - >sys.argv['bigdigits.py', 'number'] - >digits = sys.argv[1]を使用して、実際にコマンドライン引数から数値を取得します。 プログラムにコマンドライン引数(数値)を指定するか、digits = sys.argv[0]を数字の入った文字列に変更する必要があります。 digits = "1"

私はIDLEを利用できないため、sys.argv[0]として何が使用されているのかわかりません。また、エラーが発生しない理由についてはわかりません。これをテストするにはsys.argv[0]を印刷することができます。

コード例から、本のコードは実際には悪いです。内部(while column < len(digits):)は、すべての数字に対して完全に冗長です。< 10.変数の命名(大文字小文字の区別)は恐ろしいものです。大文字と小文字が異なる変数を使用する場合も同じです(digitsおよびDigits)。 forwhileの代わりにはるかに良いでしょう。この例がwhileの概念を導入する場合、それはむしろ悪い例です。ちょうど私の2セント。

+0

ありがとうございました!私は今コードを理解することができます! sys.argv [0]はユーザーが入力するコマンドラインのスクリプト名であることがわかりました。それがうまくいかないのは不思議ではない! –

-2

Digits定義の前に余分な空白があります。これは構文エラーです。したがって、プログラムの実行を妨げます。

+0

これが理由であれば、質問はトピックから外れており、今後の読者にとってはあまり有用ではないようです。コメントを削除して投稿することを検討してください。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅあなたは私がやったように "typo"として閉じることができます。 –

+0

@ Jean-FrançoisFabre 'sys.argv [0]'がタイプミスか 'sys.argv'の誤解であったかどうか分からなかったからではありませんでした。 –

関連する問題