位置情報で子どもの居場所をお知らせ

先日0からpythonを勉強しようと思い書籍を購入しました。
プログラミングに関する知識も一切なく、詰まってしまったので教えていただきたいです。

書籍では複数のif文を書いてみるという項で

x = 2
if x == 2:
print("数値は3です。")
if x % 2 == 0:
print("数値は偶数です。")
if x % 2 != 0:
print("数値は奇数です。")

>>数値は2です。
>>数値は偶数です。

という例文になっていますが、
二つ目のifの文を入れると
SyntaxError: invalid syntax とpythonに怒られてしまいます。(二つ目のifに注意が入る)

この文に誤りがあるのか、あるいは全くの初心者なので根本的に勘違いしているのでしょうか。
教えて下さい!

質問者からの補足コメント

  • 書籍にはコードがのっているURLも付いているのでそこからコピペもしましたが、同じエラーでした。
    自分でももう少し粘ってみますが、再三トライした上での質問です。解答を頂けますと幸いです。

      補足日時:2019/01/21 10:33

A 回答 (7件)

実際にやってみると、コマンドからpythonと打って、インタラクティブシェルを起動させて、コードを入力するとそうなりますね。


2つ目の if文に入る前にENTERキーを打って、構文のネストから抜けて(行頭の『...』から『>>>』にして)ください。

それでイケると思います。(ネストから抜けると、そのたびに式が評価(この場合print文が出力されたりされなかったり)されます)
    • good
    • 0

printの前は必ず半角空白4個でインデントしてみる。


他の行はインデント無しにする。
ソ―スはUTF-8で書く。
ソースはファイルに書いてから、ファイルを実行する。

とすれば動きます。
    • good
    • 0

これはNo.2さんの言う通り、どこかに空白が入っていると思います。


試しに、今正しく動いている"if x == 2:"のifの前に、半角スペースを入れて見て下さい。
同じ、エラーが発生すると思いますよ。
pythonの仕様の問題でしょうね。

******ここから******
if x % 2 != 0:
print("数値は奇数です。")
******ここまで*******
の間にプログラムの各行の左と右に余計なスペースがないかを確認。それでまだ、エラーが出る様であれば、
一旦、2つ目のifの箇所を全て削除して、1つ目のifの箇所をコピーして、2つ目の箇所に貼り付ける。

ということをやってみてはどうでしょうか?。
    • good
    • 0

○使用環境


 OSは? Window?Linux?Mac?
 Pythonのバージョンは? 2.?と3.?とでは大きく違います。
 プログラムはどこに書いた?それとも会話モード?
 ファイルに書いたのなら
  ファイルを書くのに使ったアプリは何?
  ファイルの実行方法は?
○エラー内容
Pythonのエラー表示は

プログラムのエラーが発生した箇所
   ^
エラー内容: より詳細なエラー内容

って感じになっています。
^の場所が、エラー発生箇所です。
真因が別にあることもありますが、まずは、この ^ の箇所を確認します。



熟練のプログラマでも、これくらいの内容を確認しないとエラーは直せません。

 質問するなら、上記の内容を書くようにしましょう。


また、今回は書籍とサイトに元があるとのことですが、
その署名やURLが書いてあれば、回答者側でもある程度確認できます。




で、再現実験しようといろいろやってみたのですが、
ファイルに書いて実行する方法では、なかなか再現せず。
ありがちな間違いをしても、 Invalid syntaxではなく、より詳しいメッセージが出ます。



> 二つ目のifの文を入れると

というところが気になったので、対話モードでやってみたところ
>>> x = 2
>>> if x == 2:
... print("数値は3です。")
... if x % 2 == 0:
File "<stdin>", line 3
if x % 2 == 0:
^
SyntaxError: invalid syntax
>>>

とエラーが再現しました。

そういえば、対話モードでは、いったん空行入れないと、次のブロック(インデントを戻した状態)へは進めなかったような。

x = 2
if x == 2:
 print("数値は3です。")

if x % 2 == 0:
 print("数値は偶数です。")

if x % 2 != 0:
 print("数値は奇数です。")

と入れれば(全角空白は直して)とりあえず実行はできます。



ただ、このような複数行にわたるプログラムは「ファイルに書いてまとめて実行」するのを想定しています。
やり方を変えましょう。
    • good
    • 0

> プログラミングに関する知識も一切なく



ということならハードルが低いjavascriptあたりから初められるとよいと思いますよ
    • good
    • 0

x = 2


if x == 2:
  print("数値は3です。")
if x % 2 == 0:
  print("数値は偶数です。")
if x % 2 != 0:
  print("数値は奇数です。")

上記のようにprintの前に半角の空白がきちんとついてますか?
(このサイトでは投稿すると半角の空白が詰められてしますのであえて全角で投稿しています)
これをインデント(字下げ)といいます。
インデントがきちんとしていないとパイソンはエラーになります。
インデントがきちんとしているか確認してください。
インデントは必ず半角の空白で行ってください。全角ではエラーになります。
エディタは半角の空白と全角の空白が区別できるものが良いです。(メモ帳などを使用してはいけません)
    • good
    • 1

>SyntaxError: invalid syntax


は構文エラーです
単純なミスの場合が多いので
書籍のコードとよく見比べて
全く同じコードがかけているかを確認してください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qこのプログラムを教えてください。

このプログラムを教えてください。

Aベストアンサー

以下のPGで実現出来ます。
難解なところは特にありません。
初めて見る関数などの無いよう、敢えて四則演算を用いて解を導いています。
これを見て、数式の解を表現する1つの方法をぜひ身に付けて下さい。

/* 課題1 */
/* maru.c */

#include<stdio.h>
#include<string.h>
#define PI 3.14

int main() {

float d; /* 入力の直径 */
float e; /* 円周 */
float m; /* 面積 */
float s; /* 表面積 */
float v; /* 体積 */

printf("直径を入力してください[cm]: ");
scanf("%f", &d);

d = d / 2; /* 入力直径を半径に変換 */
d = d / 100; /* 入力値の単位変換 [cm]→[m] */

printf("(1)円の円周 [m] =%f\n", 2 * PI * d );
printf("(2)円の面積 [m2]=%f\n", PI * d * d );
printf("(3)球の表面積[m2]=%f\n", 4 * PI * d * d );
printf("(4)球の体積 [m3]=%f\n", (4.0 / 3.0) * PI * d * d * d);

return 0;
}

以下のPGで実現出来ます。
難解なところは特にありません。
初めて見る関数などの無いよう、敢えて四則演算を用いて解を導いています。
これを見て、数式の解を表現する1つの方法をぜひ身に付けて下さい。

/* 課題1 */
/* maru.c */

#include<stdio.h>
#include<string.h>
#define PI 3.14

int main() {

float d; /* 入力の直径 */
float e; /* 円周 */
float m; /* 面積 */
float s; /* 表面積 */
float v; /* 体積 */

printf("直径を入力してください[cm]: ");
scanf("%f", &d);

d = d / 2; /* ...続きを読む

Q構造体の勉強をしているのですが1と2は同じなのでしょうか?違うのでしょうか? もし違うならなぜ違うの

構造体の勉強をしているのですが1と2は同じなのでしょうか?違うのでしょうか?
もし違うならなぜ違うのか説明してください‼︎
よろしくお願いします。

1.typedef struct roll{メンバー};

2.typedef struct {メンバー}roll;

Aベストアンサー

「struct の直後に来るのが型でメンバーの後に来るのが新しい構造体の名前」の「型」と「構造体の名前」の違いってなんだろ.

さておき, これは typedef の仕様との関係がありますねぇ.

まず構造体の定義を完全に書くと
struct 構造体タグ メンバー定義 宣言子;
という形になります. ここで構造体タグは識別子, メンバー定義は
{ メンバーの宣言 }
という形で宣言子は変数やら配列やらポインタやらを表します. struct 以外は省略可能なのですが, 実際に意味を持つのは
・宣言子を省略する: 「struct 構造体タグ」で表される新しい構造体を定義する
・メンバー定義を省略する: 「struct 構造体タグ」で表される構造体型の変数などを宣言する
・構造体タグを省略する: 構造体タグがなんらかの理由で不要なときにはこの形式もあります
・メンバー定義と宣言子を省略する: 「struct 構造体タグ」で表される構造体型があることを宣言する
の 4つに限られます (全部省略しちゃダメなのは明らかだと思うけど). 再度確認しておくと, 「struct 構造体タグ」で 1つの型を表します.

質問文にある 2つの文を (typedef を除いて) 解釈するとそれぞれ
1. 宣言子を省略している. roll が構造体タグで, 「struct roll」という型を定義する
2. 構造体タグを省略している. roll は宣言子で, この場合は roll という変数を宣言する
となります. そして, *typedef がなければ*どちらも合法です (ただし, 当然ですが意味は違います).

で typedef の影響が出ます. typedef は
宣言子に含まれる識別子に対し, 「typedef がなければ与えられるはずの型」の別名として定義する
という働きをもちます. 例えば
int FOO, *Bar;
だと
・FOO は int型の変数
・Bar は int へのポインタ型の変数
なので, ここに typedef を付けた
typedef int FOO, *Bar;
では
・FOO は int型の別名
・Bar は int へのポインタ型の別名
となります. このように typedef では「別名を定義する」都合上, 宣言子はどうしても必須となります. 従って, 宣言子が省略された 1 はダメということになります.

「struct の直後に来るのが型でメンバーの後に来るのが新しい構造体の名前」の「型」と「構造体の名前」の違いってなんだろ.

さておき, これは typedef の仕様との関係がありますねぇ.

まず構造体の定義を完全に書くと
struct 構造体タグ メンバー定義 宣言子;
という形になります. ここで構造体タグは識別子, メンバー定義は
{ メンバーの宣言 }
という形で宣言子は変数やら配列やらポインタやらを表します. struct 以外は省略可能なのですが, 実際に意味を持つのは
・宣言子を省略する: 「struct 構造体タグ」...続きを読む

Q無料のプログラミングスクールを途中でやめる場合

30代女性です。事務職経験あり、PC作業には抵抗ありません。
HP製作も趣味でしていました。
エンジニアに転向しようかと思い、
東京の転職保証型の無料プログラミングスクール(GEEK JOBなど)に通おうか迷っています。

途中で合わないと感じたら辞めてもOKとサイトに記載されていますが
本当でしょうか?
終了ギリギリになって辞める人もいるんでしょうか?

地方でも0円スクールなどあるようですが、カリキュラムが古いなどという
情報を見たのでスクールは厳選しようと考えています。

または、有料でもなるべく安くて良いオススメのスクールがあれば教えてください。

Aベストアンサー

20代向けと書いてあるけど行けるのかな?
プログラミングは生半可な気持ちではできないよ。
数学の数列とか2次元配列とか好きでした?

Qpythonのデータ型に組み込み型があると思いますが、なぜ組み込み型と呼ぶのでしょう? なにが何に組

pythonのデータ型に組み込み型があると思いますが、なぜ組み込み型と呼ぶのでしょう?
なにが何に組み込まれているのでしょう?
オブジェクトにデータ型が組み込まれているという意味でしょうか?

Aベストアンサー

型が言語に組み込まれている。
https://docs.python.org/ja/3/library/stdtypes.html

クラス型なんかは組み込み型や他のクラス型の組合せでPythonプログラム上で定義できるけど、組み込み型が何もなかったらクラス型の定義もできないですから。

QC言語でプログラミングを組みたいんですがcosの使い方がわかりません

x_i = cos((pi*(2i-1))/2N) (i=1,2,…,N)

という式で、N=5,9,17の時の値を求めたいのですが、うまくできません。

頑張ってN=5の式を作ってみたのですがうまくいきませんでした。
C言語、プログラミング初心者でわからないのでできるだけ丁寧に教えていただけると助かります。

自分で作ってみたプログラムを書いてみたので、どこが違うか、またどうすればいいかを教えていただきたいです。



#include <stdio.h>
#include <math.h>

#define iMAX 5

#define PI 3.1415926535


int main()
{

int i ;

int x[iMAX] ;

int n = ((PI * (2i-1) ) / 10) ;

double cos ( n ) ;



for (i = 1; i < 5; i++) {

x[i] = cos ( n );

}


for (i = 1; i<=5; i++) {

printf("x[%d] = %d\n",i,x[i]);

}


return 0 ;


}

x_i = cos((pi*(2i-1))/2N) (i=1,2,…,N)

という式で、N=5,9,17の時の値を求めたいのですが、うまくできません。

頑張ってN=5の式を作ってみたのですがうまくいきませんでした。
C言語、プログラミング初心者でわからないのでできるだけ丁寧に教えていただけると助かります。

自分で作ってみたプログラムを書いてみたので、どこが違うか、またどうすればいいかを教えていただきたいです。



#include <stdio.h>
#include <math.h>

#define iMAX 5

#define PI 3.1415926535


i...続きを読む

Aベストアンサー

cosの結果はdouble型です。
x_i = cos((pi*(2i-1))/2N) は、コード上、正確には
x_i = cos((pi*(2*i-1))/(2*N)) です。
N=5の場合、iを1からNまで変化させればOKです。
以下のようにしてください。
#include <stdio.h>
#include <math.h>
#define N 5
#define PI 3.1415926535
int main()
{

int i;
double x_i;
for (i = 1; i <= N; i++) {
x_i = cos((PI*(2*i-1))/(2*N));
printf("x[%d] = %f\n",i,x_i);
}
return 0;
}
-----------------------
以下、実行結果です。
x[1] = 0.951057
x[2] = 0.587785
x[3] = 0.000000
x[4] = -0.587785
x[5] = -0.951057

cosの結果はdouble型です。
x_i = cos((pi*(2i-1))/2N) は、コード上、正確には
x_i = cos((pi*(2*i-1))/(2*N)) です。
N=5の場合、iを1からNまで変化させればOKです。
以下のようにしてください。
#include <stdio.h>
#include <math.h>
#define N 5
#define PI 3.1415926535
int main()
{

int i;
double x_i;
for (i = 1; i <= N; i++) {
x_i = cos((PI*(2*i-1))/(2*N));
printf("x[%d] = %f\n",i,x_i);
}
return 0;
}
-----------------------
以下、実行結果です。
x[...続きを読む

Qインタプリタ言語とスプリクト言語

インタプリタ言語とスプリクト言語の違いがいまいち分かりません。

分かる方よろしくお願いいたします。

Aベストアンサー

スクリプト言語
一般の利用者でも扱える程度に簡単で、短い台本(スクリプト)を書く目的で使われる様な、プログラミング言語の分類
技術者が使う様な、高機能ながら高難度な汎用言語と比べられる。

インタプリタ
ソースコードを、なんらかの翻訳作業をしながら実行する、処理系の分類
コンパイラ
ソースコードを、なんらかの翻訳作業をまとめて行い実行可能な形式を作り出す、処理系の分類

インタプリタ言語
とくにそのようなプログラミング言語の分類は無い
インタプリタ処理系で実行されることが一般的なプログラミング言語、ならばスクリプト言語が多く挙げられるが、
言語によって処理系が固定されることは通常あり得ない

Qプログラミング入門者が、独学でプログラミング勉強を始めるとすれば何言語がいいでしょう? ブラウザで動

プログラミング入門者が、独学でプログラミング勉強を始めるとすれば何言語がいいでしょう?
ブラウザで動くjavascriptがいいと思ったのですが、将来的な拡張性、初心者に扱えるかを考えると、やはり自分で決めることができません。
アドバイスをお願いします。

Aベストアンサー

取り合えず、コーディングに親しむことを最優先にするなら
pythonかな。最初は楽な言語が良いでしょう。

Cはプロの現場でさえ、組込系を除いてほぼ絶滅状態。
最近は知ってる人が少ないです。

javascriptは癖が強いので、最初の言語としてはちょっと…
webをやるときに勉強すれば良いと思います。

JavaやC#はオブジェクト指向の呪いが多くて、
初心者には少しハードルが高い。

pythonは使い始めるのが簡単。最初は電卓がわりに使いはじめて
徐々に手順を組んで動かすことを覚えるなんてことが可能。
Javascriptと同様、複雑なデータ構造が簡単に表現できる。
構文が美しい。
只だし、開発元に日本語の資料が豊富。入門書も沢山有ります。
プログラマが好む言語としては、そのての各種ランキングで
だいたい今3位くらいです(^-^;

QCのif文の書き方の質問です

『x=a & j=1 』の様に、『&』の前後に式を書くことがありますか?
使ったことがないので、ここに質問させて頂いております。
コメント、説明頂けますと大変有り難いです。

if stype=='L' then
x=a & j=1 //===
elseif stype=='M' then
x=a+(h/2) & j=2//============
else x=a+h & j=3//=================
end

以上、宜しくお願いします。

Aベストアンサー

見た目から、命令の区切りに使っているように見えますが、
公式マニュアルを確認しても ; や , はありましたが & は見つけられなかったので断言はできません。

https://help.scilab.org/docs/6.0.1/ja_JP/comma.html
https://help.scilab.org/docs/6.0.1/ja_JP/semicolon.html

Qこの写真のようになってしまうのは何故でしょうか?

この写真のようになってしまうのは何故でしょうか?

Aベストアンサー

該当のブツを試したことはありませんけども……。

https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code
内容的に細分化して、1つのGitリポジトリから分裂(?)している為、Adafruit-Raspberry-Pi-Python-Code.gitでは何も取得できないからじゃないですかね?

ADS1x15を使いたいなら…
https://github.com/adafruit/Adafruit_Python_ADS1X15
からではないでしょうか?
「Installation」のところに手順は書かれているので試してみてはどうでしょう?

Q解答が怪しいので教えて欲しいです。 【c言語】 int a=5, b=3 ; の時の演算結果を2進数

解答が怪しいので教えて欲しいです。

【c言語】
int a=5, b=3 ; の時の演算結果を2進数で書きなさい.
8bit記述すればよい.
a << b

Aベストアンサー

添付図参照
青色がa=5の状態です。
黄色がaを3ビット左へシフト状態です。(a<<3 即ち a<<b)


人気Q&Aランキング