質問内容
match()
を使えるようにしたい- 使えない場合、代替手法が知りたい(matchを使わずに同じ動作をするコードなどが知りたいです)
作業環境
- MacOS 12.3.1
- conda 4.14.0
- Python 3.10.6(仮想環境にインストールされているバージョン)
- PySimpleGUI 4.60.3 (仮想環境にインストールされているバージョン)
- VSCode
発生しているエラー
matchが悪さをしているようです。
教材のコードをまるごとコピペしているのでコードに間違いはないと思います。
VSCodeの表示上でもif
やwhile
など、ピンク色に変わっているのに、match
とcase
はデフォルトの色のままなので、検知してくれていないみたいです。
Error
python
1[Running] python -u "/Users/hoge/Desktop/20220926_Python_clear-code-lessons/converter.py" 2 File "/Users/hoge/Desktop/20220926_Python_clear-code-lessons/converter.py", line 23 3 match values['-UNITS-']: 4 ^ 5SyntaxError: invalid syntax 6 7[Done] exited with code=1 in 0.11 seconds
コード(一部抜粋)
環境さえつくっていただければ再現可能な最小限のコードです↓
python
1import PySimpleGUI as sg 2 3layout = [ 4 [ 5 sg.Input(key = '-INPUT-'), 6 sg.Spin(['km to mile','kg to pound','sec to min'], key = '-UNITS-'), 7 sg.Button('Convert', key = '-CONVERT-') 8 ], 9 [sg.Text('Output', key = '-OUTPUT-')] 10] 11 12window = sg.Window('Converter',layout) 13 14while True: 15 event, values = window.read() 16 17 if event == sg.WIN_CLOSED: 18 break 19 20 if event == '-CONVERT-': 21 input_value = values['-INPUT-'] 22 if input_value.isnumeric(): 23 match values['-UNITS-']: 24 case 'km to mile': 25 output = round(float(input_value) * 0.6214,2) 26 output_string = f'{input_value} km are {output} miles.' 27 28 window['-OUTPUT-'].update(output_string) 29 30window.close()
調べたこと
過去に似たような質問がありましたので確認してみました。
この方は、matchがPython 3.10から実装でしたが3.9を使用されていたのでエラーが出ていたとのことでした。
私は3.10なのでこちらには該当しなさそうです。
パッケージ一覧
必要かどうか分かりませんが、仮想環境にインストール済みのパッケージ一覧も載せておきます。
# Name Version Build Channel bzip2 1.0.8 h0d85af4_4 conda-forge ca-certificates 2022.9.24 h033912b_0 conda-forge libffi 3.4.2 h0d85af4_5 conda-forge libsqlite 3.39.3 ha978bb4_0 conda-forge libzlib 1.2.12 hfd90126_3 conda-forge ncurses 6.3 h96cf925_1 conda-forge openssl 3.0.5 hfd90126_2 conda-forge pip 22.2.2 pypi_0 pypi pysimplegui 4.60.3 pypi_0 pypi python 3.10.6 hc14f532_0_cpython conda-forge readline 8.1.2 h3899abd_0 conda-forge setuptools 65.3.0 pypi_0 pypi tk 8.6.12 h5dbffcc_0 conda-forge tzdata 2022c h191b570_0 conda-forge wheel 0.37.1 pypi_0 pypi xz 5.2.6 h775f41a_0 conda-forge
回答1件
あなたの回答
tips
プレビュー