質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3699閲覧

なぜエラーになったのか全くわかりません。教えてください。m(_ _)m

kizemi

総合スコア2

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/04/04 08:47

言語はpythonです。プログラミングを始めて一週間ぐらいの初心者です。
エラーの理由がわかりません。誰か教えてください一生のお願いです。

import tkinter as tk

root = tk.Tk()
root.geometry("200x100")

1b1 = tk.Label(text="LABEL")
btn = tk.Button(text="PUSH")

1b1.pack()
btn.pack()
tk.mainloop()

というふうに書いたら
invalid decimal literalというエラーが出てきました。
1b1 = tk.Label(text="LABEL")
この文の最初の1のところがおかしいみたいなのですが、なんでおかしいのか全くわかりません。先輩方どうか教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ChatGPTの回答

invalid decimal literalというエラーが出てきました。
1b1 = tk.Label(text="LABEL")
この文の最初の1のところがおかしいみたいなのですが、なんでおかしいのか全くわかりません。先輩方どうか教えてください。

"invalid decimal literal" エラーは、数値リテラル(数値の表現方法)が無効である場合に発生します。この場合、1b1は数値リテラルとして認識されており、bは数値リテラルとしては無効な文字であるため、エラーが発生しています。

もし、 1b1 が変数名である場合は問題ありませんが、数値リテラルとして使用する場合は、 1 や 1.0 のように正しい数値の表現方法を使用してください。

例えば、以下のように修正することでエラーを解決できます。

arduino

1tk.Label(text="LABEL")

もしくは、

arduino

1label_text = 1 2tk.Label(text=label_text)

などといった具合に、正しい数値の表現方法を使用してください。

1b1 という変数名は問題ありませんか?

1b1 は Python の変数名として有効です。Python では、変数名は文字、数字、およびアンダースコアの組み合わせで構成されている必要がありますが、最初の文字は文字またはアンダースコアである必要があります。

ただし、通常、変数名はわかりやすく、理解しやすい名前にすることをお勧めします。1b1 という変数名は、意味が不明瞭で、他のプログラマーが理解しにくい可能性があるため、避けることが望ましいです。より意味のある名前を付けることで、コードの可読性が向上し、メンテナンスが容易になります。

1b1の最初の文字1は数字ではありませんか?

すみません、間違いがありました。1b1 は変数名としては有効です。変数名は文字、数字、アンダースコアの組み合わせで構成されますが、最初の文字は文字またはアンダースコアである必要があります。したがって、1b1 は変数名として有効であり、1 は数字として解釈されます。ただし、1b1 を数値リテラルとして使用する場合は、前に 0x を付けると 16 進数として解釈され、0b を付けると 2 進数として解釈されます。例えば、0x1b1 は 16 進数の 433 を表し、0b1b1 は 2 進数の 3 を表します。

本当に1b1 は変数名としては有効ですか?

おっしゃる通り、1b1 は Python では変数名として有効ではありませんでした。変数名は、アルファベット、数字、アンダースコアの組み合わせで構成されますが、最初の文字はアルファベットまたはアンダースコアである必要があります。

したがって、 1b1 を変数名として使用しようとすると、構文エラーが発生します。最初の文字が数字であるため、Python の構文解析器はこの識別子を変数名として解釈しようとせず、代わりに無効な数値リテラルとして扱います。

おっしゃる通り、混乱を招く間違いをしてしまい申し訳ありませんでした。

1b1lbl(数字のイチではなく小文字のエル)に修正してください。

投稿2023/04/04 08:55

編集2023/04/04 09:12
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/04/04 10:02

「初心者の”うまく行かない"の90%は、タイプミスの類い」という法則ですね。
can110

2023/04/04 10:48

そうですね。でも今回の質問の底にある 「でも、なんで最初の一文字が数字の変数名は(大抵のプログラミング言語では)ダメなの?」 という素朴な疑問に答えるのは相当面倒くさいという… あと、こんな簡単な質問に意外とおバカな回答を繰り返してしまうChatGPTってやっぱり面白いなと思います。 「お前、やっぱり自分の言ったこと理解してねえじゃん」って。
kizemi

2023/04/04 12:31

丁寧に答えていただきありがとうございます!おかげで動きました!m(_ _)m
guest

0

ベストアンサー

他に回答ついている通り、「1b1 」が数字で始まっているので pythonの変数として不正だからです。

どこかのサイトを参考にしたのでしょうが、そこに書いてあったのはたぶん「1b1」イチ・ビー・イチ ではなく、「lbl] エル・ビー・エル でしょう。 label を省略したもので、button の btn、 text の txt などと共によく使われるものです。

投稿2023/04/04 10:01

TakaiY

総合スコア12747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kizemi

2023/04/04 12:30

ありがとうございます。おかげで動きました!m(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問