

初プログラミングがPythonで、そのPython歴1日の超初心者です。  
身長と体重から、BMIを求めて、太り過ぎか、ちょうどいいのか、痩せすぎなのかを判定するプログラムを作りました。そちらはうまくいきました。その類題として今度は、弧度法と度数法を相互に変換するプログラムを書いています。

今はエレガントさは全く求めてなくて、とりあえず機能させることを目標にしております。

[code]

    from math import pi
    
[/code]

を使用してpiを16桁の近似値として使いますが、それ以外のモジュールの機能はインポートせずに作りたいです。  
アドバイスを貸してください。

独学手探り1日目なので、圧倒的に知識不足です。

[code]

    def angle():
        to_radian = input("度数法から弧度法への変換ですか？ y/n")
        '''
        上のinputでy/nで答えてもらって 答えが y なら、度数法から弧度法へ変換する分岐へ、そうでないなら弧度法を度数法に変換するといったことをさせたいです。その表記が↓で、if to_radian = y の部分でシンタックスエラーが出てしまいます。そこがなんとなく怪しいとは思っていましたが、まだ変数扱いなど慣れていないのもあり、訳が分からなくなってしました。なお、エラーで先に進めてないので、その後も後もあっている自身はありませんが。。
        '''
    
        if to_radian = y:
            angle = input("度数法で角度を入力してください。")
            angle_to_radian_coef = int(angle) / 180
            angle_to_radian = int(angle_to_radian_coef) * pi
            print("度数法で " + str(angle) + "°" + "は弧度法では " + str(angle_to_radian) + "ラジアンです。")
            print("πを用いて " + str(angle_to_radian_coef) + "πラジアンと表記することもできます。"
    
        else:
            radian = input("弧度法で角度を入力してください。ただしπは省略し係数のみ入力してくだ
        さい。")
            radian_to_angle = int(radian) * 180 
            print("弧度法で " + srt(radian) + "π" + "は度数法では " + str(radian_to_angle) + "° です"           
    
    #ここまでがdefで関数を定義した。以下でそれを実行。、
    
    angle()
    
[/code]


CC BY-SA 4.0
2019-08-13T17:25:08.447
57335
2019-08-14T01:28:05.887
2019-08-14T01:18:45.527
5246
35454
question
python3 numpy
inputで入力された変数の内容によって分岐を作りたい


ここまでの内容を自力で書いているならば、慌てずにエラーを解読していけばとりあえず機能させる実力はついていると感じます。  
まずは落ち着いてエラー周辺のコードと過去のプログラムを見直してみてください。

アドバイス

  * SyntaxError: invalid syntax(最初のif文で発生) 
    * `=`は **代入** であり、比較には`==`を用いる  
`to_radian = y`は変数`to_radian`に変数`y`を代入している

  * NameError: name 'y' is not defined 
    * 変数`y`は定義されていない。`"y"`に書き換えて文字列と比較する
  * NameError: name 'srt' is not defined 
    * `str`を`srt`と間違わない
  * SyntaxError: invalid syntax (`else:`以下で発生) 
    * `print()`の閉じ括弧を忘れない(閉じていない箇所は2箇所あります)

とりあえずアドバイス通りに書き直せば、コンパイルエラーは発生せずに実行できるようになります。  
ただし実行するとint型への変換で桁落ちする場合や、入力エラーが発生する場合があります。

  * degree to radianで 90 を入力する 

> 度数法で 90°は弧度法では 0.0ラジアンです。

  * radian to degreeで 1.57を入力する 

> ValueError: invalid literal for int() with base 10: '1.57'

上記は目的と異なる出力だと思いますので、intやfloatについて復習しながら頑張ってください。

ちなみにコード内のコメント「上のinputで～」にて具体的な質問内容が記述されていますが、コードを熟読する前に困っている内容が一目瞭然となりますので質問文に書いた方が回答を得やすいと思います。


CC BY-SA 4.0
2019-08-14T01:28:05.887
57344
2019-08-14T01:28:05.887
9820
57335
answer