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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python

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

Q&A

解決済

5回答

5723閲覧

python3.6 にてif文が正常に動かない。

PEMPEM

総合スコア27

Python

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

0グッド

0クリップ

投稿2017/11/22 17:58

編集2017/11/23 23:36

###前提・実現したいこと
python3.6で if文が正常に動作していません。
記述ミスでしょうか。
下記を実行すると、a=30では20が表示されます。
a=10では何も表示されません。

追記
すみません。
今朝は正常に実行しました。
プログラム作成中に、IF分のelseが動作していないようだったので
IFのみで作成して実行しても、elseが動作してませんでした。
何が起こっていたのか??です。
###試したことコードを上げました。

###発生している問題・エラーメッセージ

エラーメッセージ なし

###該当のソースコード

a = 10 if a > 20: a = a - 10 else: a = 0 print(a) ###試したこと 課題に対してアプローチしたことを記載してください ```>>> a = 30 >>> if a > 20: ... a = a - 10 ... else: ... a = 0 ... >>> print(a) 20 >>> a = 10 >>> if a > 20: ... a = a - 10 ... else: ... a = 0 ... >>> print(a) 0 >>> コード

###補足情報(言語/FW/ツール等のバージョンなど)
python3.6

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

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

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

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

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

can110

2017/11/23 00:36

コード部分のインデントが分かるようにコード表示部分を修正ください(最終行の```が抜けているようです)
Lhankor_Mhy

2017/11/24 02:02

ご提示いただいた対話モードでの動作は正しいもののように見えます。対話モードでは正しく動作するが、ソースコードファイルにして実行をすると正しく動作しない、ということでよろしいのでしょうか?
PEMPEM

2017/11/24 02:39

質問時も対話モードで実行しておりましたが、elseのみ動作していなかったですが、今朝は正常に動作しておりました。同じtxtを使用していたので不思議です。
guest

回答5

0

インデントが次のように揃っているなら、問題なく実行できるはずです。

Python

1a = 0 2if a > 20: 3 a = a - 10 4else: 5 a = 0 6 7print(a)

もしこれでも上手くいかないのであれば、更に情報が必要です。

  • ご提示のコードは、何かのコードの一部か?
  • 実行環境が特殊でないか?
  • 他のコードなら上手く動作するのか?

などなど。


teratailには、コードを見やすく表示する機能があります。
質問編集画面を開き、コードを選択した状態で<code>ボタンを押してください。
特にPythonの場合、インデントが崩れるとコードの意味が変わってしまいます。

投稿2017/11/22 18:02

編集2017/11/22 18:04
LouiS0616

総合スコア35658

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

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

PEMPEM

2017/11/23 00:24

実行時にindentエラー出ていなく、 >>> 空欄 >>> の結果が出ています。
LouiS0616

2017/11/23 01:38

ちょっと考えづらい状況です。 なにか別のコードの一部というわけではないですか?
guest

0

自己解決

この度はありがとうございました。
if文が正常に実行されない現象は、私と息子で発生しました。
息子の課題を作成中に、if文のelse動作が正常動作していないのに気が付き
私が簡単なIF文のみを作成して、実行させました時に発生しました。
長い時間作成してたので、単純なミスが有ったのかもしれませんが、今では現象の再現が出来ません。
同じコードを実行させると、今朝は解がしっかり帰って来ました。
実際に作っていたプログラムでも、動作確認出来ました。

不思議な現象で、原因が掴めませんが解決とさせていただきます。

皆様 ありがとうございました。

投稿2017/11/24 02:47

PEMPEM

総合スコア27

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

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

0

追記された対話モードでのif(a=30の場合)、else(a=10の場合)は正しく動作しています。
このサイトでコードの流れを見ることができるので、疑問に思う部分を確認ください。

実行結果

Python 3.5.4 |Anaconda custom (64-bit)| (default, Nov 8 2017, 14:34:30) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a = 30 >>> if a > 20: ... a = a - 10 ... else: ... a = 0 ... >>> print(a) 20 >>> a = 10 >>> if a > 20: ... a = a - 10 ... else: ... a = 0 ... >>> print(a) 0

投稿2017/11/24 01:28

can110

総合スコア38234

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

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

0

まさかとは思いますがpythonの対話モードで
以下のように入力してしまっているのではないでしょうか。
上記一連の流れを見ての予測になります。
[追記]
確認ですが質問者様のコードを実行したあとprint(a)を実行すると何が表示されますか。

python

1a = 0 2if a > 20: 3 a = a - 10 4 a 5else: 6 a = 0 7 a 8

投稿2017/11/23 05:04

編集2017/11/23 05:06
wakame

総合スコア1170

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

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

0

print(a)の前にインデントを入れちゃっているのではないですか?

投稿2017/11/23 04:54

KojiDoi

総合スコア13669

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

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

LouiS0616

2017/11/23 04:59

私もそれを疑ったのですが、その場合発生する現象が逆なのです。 a=30の際は出力されず、a=0のとき出力されるはずなんですよね...
KojiDoi

2017/11/23 05:12

なるほど。 やはり質問者氏にはちゃんと実際に実行に使ったスクリプトを正しく掲載していただくしかないですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問