Pythonでループの基礎と内包表記を対応付けて解説「私、失敗しないので。」

この記事を読むことで、ループの基本的なコードの書き方と、その同じコードを内包表記ではどのように書くのかを対応づけていて、また、標準入力の使い方が理解出来ます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

・ループの内包表記ってイマイチ分かんないよ。混乱するんだもん。
・ついでに標準入力についてザッとおさらいしたい

とう方にお役立て頂けたらと思い、記事を書きました。
特に内包表記は通常のループの表記と一つずつ対応付けているので、この記事を読む頃には内包表記って案外簡単じゃん♪ってなっているでしょう。

今回標準入力でキーボードから入力させる文字列は、ドクターX 外科医 大門未知子の決め台詞、「私、失敗しないので」です。

この記事の前編として、Pythonでループの基礎2つずつ増加と標準入力「同情すんなら金をくれ!」を掲載しました。
今回は、その記事の後編となります。
もしもお時間がありましたら、前編もご覧頂けますと、より一層理解が深まるかと思います。

まずは基本的なループです。
0から4までの数を表示します。

for i in range(5):
    print(i)

このコードを内包表記で書くと、たったの1行で済みます。

[print(i) for i in range(5)]

実行結果です。

内包表記は、

[ 計算(表示)結果 いつものfor文 ]

という書式になるので、この数列を2倍にすることも可能です。

<2倍の基本的な書き方>

for i in range(5):
    print(i*2)

<2倍の内包表記>

[print(i*2) for i in range(5)]

実行結果です。

では、30から-3ずつカウントダウンしていくコードです。

for i in range(30,0,-3):
    print(i)

内包表記です。

[print(i) for i in range(30,0,-3)]    

実行結果です。

では、いよいよ「私、失敗しないので」を指定の回数だけ表示させる、基本のFor文のコードと、内包表記の解説に移ります。
標準入力でキーボードから「私、失敗しないので」を入力してループで指定の回数までを表示するコードです。

#表示する回数
N=5

#ドラマの名台詞←ここを標準入力に変更
print('あなたが好きな名セリフを入力して下さい--->>',end='')
Dialogue=input()

for i in range(N):
    print(str(i)+':'+Dialogue)

内包表記です。

#表示する回数
N=5

#ドラマの名台詞←ここを標準入力に変更
print('あなたが好きな名セリフを入力して下さい--->>',end='')
Dialogue=input()

#ここを内包表記でループしている
[print(str(i)+':'+Dialogue) for i in range(N)]

最後までお読み頂きありがとにゃん(=^x^=)

この記事の前編では、ループの基本的な動作と、ここでの内容がちょっと分かりにくいなと思われた方向けの構成になっております。
Pythonでループの基礎2つずつ増加と標準入力「同情すんなら金をくれ!」

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

Pythonでループの基礎と2つずつ増加、ドラマの名台詞を表示、「同情すんなら金をくれ!!!!」

この記事を読むと、ループの基礎の基礎、ループで2つずつ増加して表示させること、
逆に数を減らしていくこと、ドラマの名台詞をループで指定した回数分だけ表示させること、標準入力の理解が出来ます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

・Python始めたばかりで、ループの書き方ってどうやるのか分からないんだけど・・・。
・Pythonのループで2ずつ増加(1個飛ばし)ってどうやるの?

・逆に減らすのは?
・指定の文字列をループで指定した回数分表示させたいんだけれど。

とお悩みな方にお役立て頂けたらと思い、記事を書きました。

指定の文字列表示に使う具体例は、ドラマの名台詞です。
「同情すんなら金をくれ!」
「僕は死にません!あなたが好きだから、僕は死にましぇ〜〜〜ん」
「私、失敗しないので」

の3つのセリフを使います。

まずは基本的なループです。
0から19までの数を表示します。

for i in range(20):
    print(i)

このようにrangeで指定する場合は、その数未満の数が対象になるので、0〜19までが表示の対象となります。
その実行結果です。

これを、2つずつの増加のループに書き換えます。
rangeのカッコ内に

range(開始,終了(指定未満),増加分)

と書きます。

for i in range(0,20,2):
    print(i)

2ずつ増加の実行結果です。

では、逆に数を減らす場合にはどうしたら良いでしょうか。

range(開始,終了(その数は含まない),減らす分)

ここでは、30から1までを3ずつ減らすコードと実行結果を記載します。

for i in range(30,0,-3):
    print(i)

3つずつ減らされていることと、0は含まれていないことが確認できました。

では、今度は指定の数だけドラマの名台詞を表示させてみます。
平成の名ドラマ「家なき子」の安達祐実さんのセリフ、「同情すんなら金をくれ!」を5回表示させます。
Nに表示回数の5、Dialogueにセリフを入れてコードを書いて実行します。

#表示する回数
N=5

#ドラマの名台詞
Dialogue='同情すんなら金をくれ!'

for i in range(N):
    print(Dialogue)

5回出力されました。
あの頃の安達さんの表情が蘇ります(涙)
で、range(5)は5未満なのに、5回表示されるのはおかしいじゃん!
4回にならね?
と思われたアナタ、鋭いです!!

print文の下記を変更して、ループの変数「i」も同時に表示させてみます。

print(str(i)+’:’+Dialogue)

コードと実行結果です。

#表示する回数
N=5

#ドラマの名台詞
Dialogue='同情すんなら金をくれ!'

for i in range(N):
    print(str(i)+':'+Dialogue)

他のセリフに変えるには、4行目のDialogueのところを変更して実行します。

#表示する回数
N=5

#ドラマの名台詞←ここを101回目のプロポーズに変更
Dialogue='僕は死にません!あなたが好きだから、僕は死にましぇ〜〜〜ん!'

for i in range(N):
    print(str(i)+':'+Dialogue)

武田鉄矢さんの金八先生とは全く異なるキャラで必死な愛を感じました。
ただ、当時、どこかの中学生の男子が真似して車の運転手に怒られていたという話を噂程度に聞いたことがあります。

では、ドラマのセリフを標準入力を使って、都度変更させるコードにしてみます。

print(‘あなたが好きな名セリフを入力して下さい—>>’,end=”)

end=”で、改行しないで直後に入力できるようにしている。

標準入力はinput関数を使用して、Dialogueに代入しています。

Dialogue=input()

では、コードと実行結果です。

#表示する回数
N=5

#ドラマの名台詞←ここを標準入力に変更
print('あなたが好きな名セリフを入力して下さい--->>',end='')
Dialogue=input()

for i in range(N):
    print(str(i)+':'+Dialogue)

今回は標準入力で使用したのは、米倉涼子さん演じるドクターX 外科医 大門未知子 さんの決め台詞です。

この記事の後半は、こちらで扱ったコードを中心に、基本のFor文コードと内包表記でのコードを対応付けていきます。
Pythonでループの基礎と内包表記を対応付けて解説「私、失敗しないので。」

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

【Python初心者必見!!】改行の仕方、円周率の使って面積、球体の体積、円周を計算する関数の使い方、二乗3乗などの累乗の計算の仕方、戻り値の小数点以下桁指定

この記事を読むと、今更聞けないPythonの改行の仕方、二乗・3乗などの累乗の計算、円周率を使った計算で円の面積、球の体積(公式も載せました!!)、円周を求める関数を呼び出し、小数点以下を含めた桁指定が習得出来ます。

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

・あの、今更ですけど、Pythonで改行の仕方って聞いても良いですか?
・Pythonでxの二乗、3乗などの累乗ってどうするの?
・そもそも関数ってどうやって呼び出すの?
・関数を呼び出してそこで計算させた戻り値の小数点以下の桁数が多過ぎで、こんなに表示出来ないよ!

とお悩みな方にお役立て頂けたらと思い、記事を書きました。
私も初心者なので、思いっきり初心者目線で書いているので、冗長な所もあるかもしれません。悪しからず。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

まず、改行ですが、

print('Hello World 1112 fri\n')

の「\n」(バックスラッシュn)で改行をしています。
Macですと、どうやってバックスラッシュを出すのか私は結構悩みました。やり方は簡単で、Windowsの時だった[Alt]に当たる[option]キーを押しながら、「エンマーク」で表示可能です。


この記事を書いている今日は11月12日の金曜日なのでHelloWorldの後に上記の様に日付と曜日を入力しています。

これは、プログラミング学習を始める前のルーティーンとしてPythonで求めています。
プログラミングは好きで始めたこととはいえ、どうしても気分が乗らないこともあります。そんな時でも「HelloWorldと日付だけ」を表示するプログラムを作ることが私のルーティーンとなっています。

五郎丸さんのルーティーンみたいなものかな。

さて、このプログラムでは、円の面積を求める関数area(引数:半径r)、球の体積を関数globe(引数:半径r)、円周を求めるcircle(引数:半径r)を使っています。

引数って、カレーライスを作るときに入れるニンジンとかジャガイモ、玉ねぎ、カレールーみたいなものかな。

今回は引数rは共通なので、それぞれの関数呼び出しの前に、

r=5

を記述しました。
ここでは半径rを5cmとしています。

それぞれの関数の呼び出しのコードです。
上から、円の面積、球の体積、円周の長さです。

#それぞれの関数の呼び出し
area_ans=(area(r))
globe_ans=(globe(r))
circle_ans=circle(r)

上記の3つの関数を呼び出して、そこで計算した値(戻り値)をそれぞれarea_ans(求めた円の面積)、globe_ans(求めた球の体積)、
circle_ans(求めた円周の長さ)に代入して、小数点以下も含めた桁指定をして、結果を表示します。

円周率を扱うのに、モジュールをインポートしています。

#円周率を扱うのに、インポートしている
import math

円の面積を計算するのに、事情はr**2で半径の二乗を求めています。
**の後を3にする球体や立方体など3次元の体積が求められます。

#円の面積を計算。**で二乗を使っている
def area(r):
    return r**2*math.pi

球体の体積の公式は、

V=\frac{4}{3}πr^{3}

なので、体積を計算する関数のコードは、

#球の体積を計算。**で3乗を使っている
def globe(r):
    return 4/3*math.pi*r**3

となります。

また、円周の長さを求めるコードは

#円周を求める
def circle(r):
    return 2*math.pi*r

となります。

円周率はご存知の通り、3.14159265359…と桁数が膨大なので、戻り値の表示はここでは整数も含めた5桁で表示します。
コードはこの様になります。

#桁数を指定して表示
print('円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。')
print('球の体積は'+'{:.5}'.format(globe_ans)+'cm ^3です。')
print('円周は、'+'{:.5}'.format(circle_ans)+'cmです。')

戻り値って、出来上がったカレーライスみたいなものかな。

計算結果です。

それでは、ここまで踏まえた全コードを掲載します。

#円周率を扱うのに、インポートしている
import math

#円の面積を計算。**で二乗を使っている
def area(r):
    return r**2*math.pi

#球の体積を計算。**で3乗を使っている
def globe(r):
    return 4/3*math.pi*r**3

#円周を求める
def circle(r):
    return 2*math.pi*r

#半径を指定
r=5

#それぞれの関数の呼び出し
area_ans=(area(r))
globe_ans=(globe(r))
circle_ans=circle(r)

print('Hello World 1112 fri\n')

#桁数を指定して表示
print('円の面積は'+'{:.5}'.format(area_ans)+'cm ^2です。')
print('球の体積は'+'{:.5}'.format(globe_ans)+'cm ^3です。')
print('円周は、'+'{:.5}'.format(circle_ans)+'cmです。')

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

PythonでV6の名曲を例に内包表記をしてみた。

この記事を読むと、Pythonの基本的な内包表記を使って、for文を短いコードで動かすことが可能になります。
また、内包表記で今月(2021年11月)に解散してしまったV6の名曲も表記致します。
その際、リストを使って、昇順、降順の表記行っています。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

リストの内包表記を通して、この間解散してしまったV6の名曲を振り返ります。
メンバーは
トニセン(年長3人):坂本昌行、長野博、井ノ原快彦
カミセン(年少3人):森田剛、三宅健、岡田准一
で、私はトニセンとカミセンの間の年齢なので、感慨深いものがあります。

まずは、内包表記のごくごく基礎から入って行きます。
0から9まで表示するシンプルなループです。
range(10)となっているので10未満の数が表示されます。

for i in range(10):
    print(i)

結果はこの様になります。

このコードを内包表記を使うとたった1行で書ける様になります。
書式はこの様になります。

[結果 for文]

それでは内包表記で書いていきます。

[print(i) for i in range(10)]

出力結果を改行区切りではなく、配列として表示したい場合を普通のfor文で書くと

#空のリスト
array=[]

#いつものループで空のリストarrayに要素を追加
for i in range(10):
    array.append(i)

print(array)

もっと短く書くには、これも内包表記を使います。

#内包表記でたった1行
print([i for i in range(10)])

次は計算をさせてみます。
この配列の要素それぞれの二乗を求めます。

#[計算式 for文]
print([i**2 for i in range(10)])

慣れてきた所でリストを使います。
計算用リストarrayの要素をそれぞれ二乗しています。

#計算用リスト
array=[1,3,5,7,9,11,13,15]

#[計算式 for in リスト]
print([i**2 for i in array])

リストを使った内包表記にも慣れて来た頃で、いよいよV6の名曲リストを作成します。

#V6の中で特に私が好きな曲
v6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#[計算式 for in リスト]
[print(music) for music in v6]

表示結果です。

曲名を昇順にしたい時は、コードの途中に

リスト名.sort()

を追記します。

#V6の中で特に私が好きな曲
v6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#昇順
v6.sort()

#[計算式 for in リスト]
[print(music) for music in v6]

降順にしたい時は

リスト名.sort(reverse=True)

と改変します。

#V6の中で特に私が好きな曲
v6=['MUSIC FOR THE PEOPLE',
'愛なんだ',
'WAになっておどろう',
'Darling',
'CHANGE THE WORLD',
'Orange',
'BEAT YOUR HEART',
'MADE IN JAPAN',
'Believe Your Smile',
'Be Yourself!'
]

#降順
v6.sort(reverse=True)

#[計算式 for in リスト]
[print(music) for music in v6]

宜しかったらコピペしてアレンジしてみて下さい。

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

PythonでBE:FIRST(ビーファースト)の平均年齢を辞書とリストと関数とループを使って求めてみた。

この記事を読むと、AAA(トリプルエー)のラッパーSKY-HI日高 光啓(ひだか みつひろ)さんのオーディションプロジェクトの7人組ボーイズグループ、BE:FIRST(ビーファースト)の平均年齢をPythonで関数を使って求めるプログラミングが理解出来ます。
辞書、リスト、ループ、関数のおさらいと生年月日を扱った処理にも触れています。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

普段FMラジオでFM TOKYO さんの朝番組、ONE MORNING(ユージさん、吉田明世さんがパーソナリティ)の番組を聴いていて、BE:FIRST7人の早起きの秘訣を聴いていたことから、BE:FIRSTの最年少のリュウヘイ(RYUHEI黒田竜平)がなんと14歳って聴いて、なんて若いのにすごいんだ!!(落ち着いているし、180cmの高身長)と思って、メンバーの平均年齢を調べるためにPythonでプログラミングをして見ました。

簡単にBE:FIRSTについて書くと、公式サイトによると、

SOTA 2001年1月18日 174cm 島雄壮大さん
SHUNTO 2003年9月1日 174cm 久保舜斗さん
MANATO 2001年4月29日 173cm 廣瀬真人さん
RYUHEI 2006年11月7日 180cm 黒田竜平さん
JUNON 1998年5月23日 183cm 池亀樹音さん
RYOKI 1999年4月26日 177cm 三山凌輝さん
LEO 1998年9月8日 179cm 上村礼王さん

の7人です。

デビュー曲
BE:FIRST / Gifted. -Music Video-

メンバーが、ラジオで早起きの秘訣を教えてくれました。
私が特に参考にしたのは、前の日に「何時に起きる」と決めておくという提案です。
どなただっっけ???

7人もいると、なかなか覚えられないので、このような辞書を作りました。

befirst={‘SOTA’:’20010118′,’SUNTO’:’20030901′,’MANATO’:’20010429′,’RYUHEI’:’20061107′,’JUNON’:’19980523′,’ROYOKI’:’19990426′,’LEO’:’19980908′}

ご覧の通り、キーがメンバーのお名前で、値がメンバーの生年月日です。
これをループにして、関数を呼び出してお一人ずつ、今日の日付からの差で年齢を求め、求めた年齢を配列に追加して、その配列から平均年齢を求めるといった流れになります。

こんな感じに実行できました。

では、コードです。

プログラミングやPythonにご興味のある方は、コメントを頼りに読んでみて下さい。

#日付や計算のためにインポートしています。
import datetime
import math

today=int(datetime.datetime.today().strftime("%Y%m%d"))
print("今日は"+str(today)+"です。\n")

#メンバーの年齢を格納するための配列
member=[]

#この関数で計算してるよ! 10000で割っているのは生年月日の桁数からの調整
def calc_age(born):
    age=math.floor((today - int(born)) / 10000)
    return age

#メンバー紹介の辞書
befirst={'SOTA':'20010118','SUNTO':'20030901','MANATO':'20010429','RYUHEI':'20061107','JUNON':'19980523','ROYOKI':'19990426','LEO':'19980908'}
print("メンバーの生年月日の辞書を表示します。")
print(befirst)
print()

#辞書をループを使って、関数に送り込んで、年齢を格納する配列に追加している
for i in befirst:
    age=calc_age(befirst[i])
    member.append(age)

print("メンバーの年齢を算出しました。")
print(member)
print()

ans=sum(member)/float(len(member))
print("平均年齢は"+str(ans)+"歳です。")

    
    

良かったらコピペしてアレンジしてみて下さい。

しばらく胃腸の病気で療養していて、プログラミングお休みしていたから、すごい時間かかっちゃった・・・。

参考にしたサイト
https://teratail.com/questions/138394

最後までお読み頂きありがとにゃん(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

Python乱数randrangeでラーメン激戦区のメニューを見てみた。

この記事を読むことによって、Pythonのリストの初歩的な扱いが可能になります。
リストの添字を乱数にして、ラーメンのメニューを求めるプログラムになります。

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

胃腸の病気で1ヶ月ぐらいプログラミングから離れてしまいましたので、リハビリがてらにラーメンのプログラムを作ってみました。

私、今お粥とスープと介護食がやっとなので、ラーメンなんて食べたらどうなるか・・・ですが、そんな状態でも元が食いしん坊なので(胃腸弱いくせに)ラーメンのメニューをたらたらと見ていました。

そこで、山手線沿線で調べてみて、最も美味しそうだと私が思った、南大塚にある創作麺工房 鳴龍 (NAKIRYU) さんのメニューを元にPythonでメニューの配列を作って、インデックスを乱数にしてプログラミングしてみました。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

思いっきり遊びです!!

Pythonの進捗状況(私のロードマップ)

配列menuを以下のように致しました。

menu=[‘坦坦麺’,’麻辣坦坦麺’,’坦坦つけ麺’,’塩ラーメン’,’梅塩ラーメン’,’海老ワンタン’]

細かいようですが、坦々麺ではなく、こちらでは担担麺のようですね。

配列menuの長さは6です。

なのでインデックスは、0,1,2,3,4,5の6つになりますね。

まぁ、これぐらいなら数えれば良いのですが、めんどくさいので、len(menu)で配列の長さ6を求めました。

乱数は、random.randrange(0,len(menu))で求めています。

これで、(0から5)までのインデックスの乱数を求めています。

つまり、(0から6未満)、すなわち(0,5)の乱数を求められます。

似たようなので、randintというのがありますが、これだと(0,len(menu))となり、(0から6)、0,1,2,3,4,5,6で長さが7となり、余ってしまうのでこのようなエラーが出てしまします。

これは、index=6となり、配列の要素が0から5までしかないのに対して、6が求まってしまったので、範囲を超えているよ、というエラーです。

そこで、エラーを修正して実行しました。

では、コードです。

import random

menu=['坦坦麺','麻辣坦坦麺','坦坦つけ麺','塩ラーメン','梅塩ラーメン','海老ワンタン']
index=random.randrange(0,len(menu))

print('今日は'+menu[index]+'食べよっかな。\n')

良かったらコピペしてアレンジしてみて下さい。

最後までお読み頂きありがとにゃん(=^x^=)

Pythonの進捗状況(私のロードマップ)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何順でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Python で今日の運勢は??randintで星座占い♪

この記事では、星座占いをテーマに、Pythonでの乱数の使い方と、順位によってメッセージを分岐して表示する方法を学びます。

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

胃腸の病気で1ヶ月ぐらいプログラミングから離れてしまいましたので、リハビリがてらに星座占いプログラムを作ってみました。

思いっきり遊びです!!

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

私はおうし座ですので、変数seizaのところに「おうし」と入れました。

実行結果です。

チョベリなんとか・・・ってありますけれど、かつて「コギャル」と呼ばれた方(多分今頃はアラフォーさん?)が女子高生だった頃に流行った言葉です。

チョベリグ・・・超ベリーグッド
チョベリブ・・・超ベリーブルー
チョベリバ・・・超ベリーバッド

だったかな。

懐かしいな。

それを使ってみました。

さて、コードの説明ですが、import randomで、乱数を発生させています。

これは後に運勢の順位に使います。

num=random.randint(1,12)

で、1から12までの乱数を発生させています。

「へびつかい座」を入れる場合でしたら、random.randint(1,13)になりますね。

似たようなもので、randrangeがありますが、これはrandom.randrange(1,12)だった場合は、12「未満」になります。

あとは演算子。

==とイコール2つで1位だったらの条件指定になります。

=と、一つだけだと代入になるので。

あとはelif分の<=で何位以下、elseでそれ以外(この場合12位)です。

では、コードです。

import random

seiza="おうし"
num=random.randrange(1,12)

print("今日の"+seiza+"座は"+str(num)+"位です!")

if num==1:
    print('超超超超超超超・・・おめでとう!!\n')
elif num<=3:
    print('チョベリグ!\n')
elif num<=9:
    print('ふつー\n')
elif num<=11:
    print('チョベリブ!\n')
else:
    print('がび〜〜〜〜〜〜〜〜〜〜ん\nチョベリバ(涙)')

良かったらコピペしてアレンジしてみて下さい。

最後までお読み頂きありがとにゃん(=^x^=)

Pythonの進捗状況(私のロードマップ)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何順でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonで半端ならK.O….踊♪

おはこんばんちは!
うにゃうにゃエンジニアの猫です(=^x^=)

Adoさんの歌って、プログラミングの教材になるんですよね。
今回は踊からヒントを得たプログラムを作ってみました。

関連記事:C言語うっせぇわループ

サイトマップはこちらから

Python自作サンプルに戻る
C言語自作サンプルに戻る
メインメニューに戻る
基本情報技術者試験

自己紹介

Pythonの進捗状況(私のロードマップ)

歌詞に「半端ならK.O.」とありますね。
ここから半端、つまり、割り算をして割り切れなかったら負け、割り切れたら勝ちという割り算ゲームを格闘ゲームをイメージして作りました。
余りが0で割り切れたなら勝ち、余りが出たら負けです。

まずは、実行してみます。

ここで被除数(割られる数)を入力します。
「9」

次に除数(割る数)を入力します。
「2」


割り切れませんので、余り、半端なのでK.O.されて負けました。

次は8を2で割ってみます。

割り切れてK.O.,勝ちしました。

それではこのプログラムのポイントとなる箇所をトレースしてみます。

最初の入力画面のコードです。
ここで、標準入力を使って、被除数(割られる数)を入力しています。
>>>のすぐ後に入力出来るようにprint文の中で、

end=””

を使っています。

#dividendは被除数(割られる数)
print("被除数(割られる数)を入力して下さい>>>",end="")
dividend=int(input())

次に、除数(割る数)を標準入力を使って入力しています。

#divisorは除数(割る数)
print("除数(割る数)を入力して下さい>>>",end="")
divisor=int(input())

その後、割り算して余りを求め、結果を返す関数を呼び出しています。

#remainder(余り)を計算する関数を呼び出す
judge=dance_div(dividend,divisor)
print("果たして'YOU'の勝敗結果は・・・・!")

割り算を計算して、余りがあるかどうかによって文字列msgに「YOU WIN」または「YOU LOSE」を戻り値として返すようにしています。

#割り算してあまりを返す関数
def dance_div(dividend,divisor):
    remainder=dividend%divisor
    print("被除数(割られる数)="+str(dividend))
    print("割る数="+str(divisor)+"\n")
    print("余り【"+str(remainder)+"】\n")

    #もしも余りが0だったら勝ち!    
    if remainder==0:
        msg="YOU WIN!!!!!!!!!!!!!!!!!!!"
    else:
        msg="YOU LOSE....." 

    return msg       

最後にこのプログラム全体のコードを掲載します。

#割り算してあまりを返す関数
def dance_div(dividend,divisor):
    remainder=dividend%divisor
    print("被除数(割られる数)="+str(dividend))
    print("割る数="+str(divisor)+"\n")
    print("余り【"+str(remainder)+"】\n")

    #もしも余りが0だったら勝ち!    
    if remainder==0:
        msg="YOU WIN!!!!!!!!!!!!!!!!!!!"
    else:
        msg="YOU LOSE....." 

    return msg       

print("\n ♪ 半端ならK .O ..... ♪ \n")        
#dividendは被除数(割られる数)
print("被除数(割られる数)を入力して下さい>>>",end="")
dividend=int(input())

#divisorは除数(割る数)
print("除数(割る数)を入力して下さい>>>",end="")
divisor=int(input())
print()

#remainder(余り)を計算する関数を呼び出す
judge=dance_div(dividend,divisor)
print("果たして'YOU'の勝敗結果は・・・・!")

#結果を出力
print(judge+"\n")

宜しかったら、コードをコピペしてアレンジして見てください。

最後までお読み頂きありがとにゃん(=^x^=)

■参考文献■
じっくり丁寧にPythonを学びたい方向け。
まずはpaizaラーニングなどの学習コンテンツで学んで、基礎をマスターしたら、この本でじっくりと初級から中級レベルを目指せます。

関連記事:C言語うっせぇわループ

サイトマップはこちらから

Python自作サンプルに戻る
C言語自作サンプルに戻る
メインメニューに戻る
基本情報技術者試験

自己紹介

Pythonの進捗状況(私のロードマップ)

Pythonの進捗状況(私のロードマップ)

この記事ではPythonに絞って、ゲーム感覚でプログラミングを楽しめて、尚且つ、出来るだけコストを書けず挫折しにくい学習方法を紹介しています。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

paizaラーニング さんという学習コンテンツで、1レッスンに8個程度のチャプターがあります。入門講座の他に完全無料の「体験版」があるので、自分との相性の合う言語を手軽に探せます。

2021年2月21日からPythonの学習を本格的に始めました。
それまでは幾つかの言語を自分探し的にやっていました。
2021年5月5日(GW最終日)に体験版及び入門講座を終えました。

体験版と入門講座のLesson6までをまず行いました。
ここまでで変数、条件分岐、ループ、リスト(他の言語でいう配列)が学べます。

その後、Lesson7の関数に進む前にレベルアップメニューの問題集のリンクがあるので、そちらで条件分岐、配列、配列活用メニュー、二重ループメニューを終わらせ、最後にCランクレベルアップメニューをクリアしました。

レベルアップ問題集は、順番に解いていくと最後の問題が解けるようにテーマごとに構成されていて、まずは自力で解いて、それから正解した場合でも必ず模範解答を確認して、もっと良いやり方があったらそのやり方でも問題を解いてみました。

Cランクアップメニューをクリアした後、Lesson7の関数に進み、最後の動画レッスン(2021年5月5日現在)のLesson10までで関数に加えてクラス、例外処理を学びました。

動画レッスンには内包表記はありませんが、レベルアップ問題集の模範解答などを見て、内包表記が少し分かる程度の知識があれば、この本、「独習Python」を読めると思います。

paizaにはスキルチェックというものがあり、ランクがDランク、Cランク、Bランク、Aランク、1番上がSランクになります。

私は2021年12月現在Cランクですが、Cランクの問題は解ける問題もありばそうでない問題もあり、安定して解けるのはDランクの問題なので、実質的な実力はDランクだと思っています。

そこで、実質的にCランクの問題を安定して解ける力をつけ、さらに上を目指すのに、「レベルアップ問題集」のPythonのコードと仕事で必要になるGASのコード(スプレッドシートを使用)をブログで公開しています。

関連記事:paizaレベルアップ問題集をPythonとGASの両方で解いてみた集
これは、DランクからCランクにレベルアップするための、Cランク獲得ストーリーを参考にしています。



■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

出来れば基本情報技術者試験合格レベルの知識もあった方がより分かりやすいかも知れませんが、ITパスポートのみという方でも、論理演算とか知っていれば学習可能かも知れません。

2021年5月23日からKivyを初め、今現在はPython×kivyで2021年内にアプリを開発出来るよう、仕事と並行して勉強しています。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

【Pythonクラス爆速理解!!】「月曜日はウンジャラゲ♪」で、「昭和のギャグ」からクラスが学べちゃうんですョ!!

この記事を読むことで、Pythonのクラスが「脳にダイレクトに衝撃を与えながら記憶に残って定着して使いこなせる」様になります。
と、申すのも、Pythonでのクラス学習に教材として、故・志村けんさんが歌う「ウンジャラゲ」を使って学んでいくからです。

この記事ではPythonを学んでクラスまで辿り着いた昭和生まれのミドル世代中高年の方々に、どこまでも優しい記事を心がけて書いておりますが、Pythonのクラスを勉強中の平成・令和生まれの方も宜しかったらお立ち寄り下さい。内包表記も使っているので、ループの学習中の方もどうぞご覧下さい。

プログラミング初心者で、子どもの頃にTV で「志村けんさん」のギャグを見て笑っていた昭和の方々を対象にしていますが、若い方でも志村けんさんをご存知の方は大勢いらっしゃると思います。

プログラミングを学んでいる私のような年配の方で、若い方から学ぶのはチョット・・・とためらいのある方は、こちらの記事と併せて、クラスよりももっと前の基礎文法も扱っている当ブログのPython自作サンプル集もご覧下さいませ。

関連記事(ループで「僕は死にましぇ〜〜ん」・「同情すんなら金をくれ!!」):Pythonでループの基礎と2つずつ増加、ドラマの名台詞を表示、「同情すんなら金をくれ!!!!」

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

クラス=設計図
インスタンス=クラスという設計図から作られた「具体的な」製品
というと、なんだか小難しい感じがするので、

クラス=志村けんさんの「ウンジャラゲ」を例にして、「何」曜日は「ナニナニナニ♪」といったフォーマット
インスタンス=そのフォーマットから作った、「月曜日はウンジャラゲ」、「火曜日はハンジャラゲ」・・・「日曜日はランラランらランランっ!」と言った「具体的な」各曜日ごとの踊り

という認識でコードを書いています。

下記の動画は、今回学ぶ「Pythonのクラスの基礎の基礎」の教材として使っているので、お忙しい方も出来れば「最初の1分程度まで(日曜日まで)」を先に見ておいて頂けると、楽しみながらPythonのクラスの理解が深まると思います。
動画右下の歯車マークから再生スピードを2倍速にすると、余計に笑えるかも知れませんヨ!)

では、いよいよプログラムを詳しく見ていきます。
最初に志村けんさんのセリフとBGMを出力するコードです。
これはシンプルなprint文です。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')

ポイントと言っても、4行目のprint文で改行の「バックスラッシュn」を使っている所ぐらいでしょうか。「バックスラッシュ」はMacをお使いの方は【option】+【¥】で表示されます。Windowsの方はこちらをご参照ください。

では、クラスJarageを作って行きます。
まずは、インスタンス化する時に自動的に最初に呼ばれるコンストラクタの部分です。
簡単に書くと、初期化するメソッド(関数)です。
初期化 → 月曜日 → 初期化 → 火曜日 → 初期化 → 水曜日・・・
という具合に呼び出されるので、必ず初期化が必要です。

#クラスJarage
class Jarage:

    #コンストラクタで初期化している。
    def __init__(self,week,spell):
        self.week=week
        self.spell=spell

selfというのは、呼ばれた月曜日、火曜日・・・の各曜日自体のことです。
weekに曜日を、spellに「ウンジャラゲ」、「ハンジャラゲ」といった呪文(!?)を引数にしています。
クラスで使うメソッド(関数)には「self」が必要です!!

次は、「何曜日」が「ナンジャラゲ」になるのか出力するsongメソッドです。

#何曜日は何ジャラゲかを出力するsongメソッド   
    def song(self):
        print(self.week+'曜日は、'+self.spell)

一旦ここまでのクラスJarageのコードをまとめます。

#クラスJarage
class Jarage:

    #コンストラクタで初期化している。
    def __init__(self,week,spell):
        self.week=week
        self.spell=spell

    #何曜日は何ジャラゲかを出力するsongメソッド   
    def song(self):
        print(self.week+'曜日は、'+self.spell)

クラスの中にあるsongメソッドを使うのに、

mon=Jarage(‘月’,’ウンジャラゲ’)

とすると、月曜日はウンジャラゲ、と入るようにします。
変数self.weekに「月(曜日)」、変数self.spellに「ウンジャラゲ(呪文)」が入り、これをリストを使って、各曜日用意します。

次に、月曜日から日曜日までインスタンス化する処理です。

#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')

この後、各曜日を格納するリストeverydayを、各曜日の英語略で作ります。

everyday=[mon,tue,wed,thu,fri,sta,sun]

このリストeverydayをループを使って順々にインスタンス化していくコードです。

#ループを使って各曜日のインスタンス化を行う
for day in everyday:
    day.song()

このループの部分を内包表記で書くと、ループのコードが1行にシンプルに記述出来ました。

#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday] 

内包表記の公式
[結果 for〜(いつものFor文)]

では、クラスJarageの中のsongメソッドをループで呼び出して各曜日表示します。
これまでのコードに出力文「だいじょぶだぁ」などを加えたコードと、実行結果です。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')

#クラスJarage
class Jarage:

    #コンストラクタで初期化している。
    def __init__(self,week,spell):
        self.week=week
        self.spell=spell

    #何曜日は何ジャラゲかを出力するsongメソッド   
    def song(self):
        print(self.week+'曜日は、'+self.spell)


#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランのランっ!')


#曜日のリスト
everyday=[mon,tue,wed,thu,fri,sta,sun]

#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday] 

print('\n志村けん:「だいじょぶだぁ!!」') 
print('-------------------------------------------\n') 

わざわざクラスなんて「しちめんどくさい」ことしないで、そのままコピペの方が良くね?と思われるかもしれませんし、私もそんなこと考えなくもないですが。

いかんいかん、プログラミングを勉強する者としては!!

そこで、最後に「猫曜日はうんにゃにゃんにゃんにゃん(=^x^=)っm」を加えることにします。

これはリストeverydayに「cat」を追加して、「猫(猫曜日の猫)」、「うんにゃにゃんにゃんにゃん(=^x^=)っm」と引数を2つ指定したオブジェクトを作れば良いだけなので、簡単に改造できそうですね。

追加したコードです。

#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')

#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]

追加の実行結果です。

はい、これで無事に「猫曜日」が追加されました!!

・・・いったい自分は何をしているんだろう…。という気にもなりましたが、昭和のギャグも令和でのプログラミングの勉強に繋がっていたってことで。

それではこの追加のコードを含めて、ここまでの全コードを掲載します。

#志村けんさんのコールと「ウンジャラゲのBGM」
print('-------------------------------------------')
print('志村けん:「さぁ、みんな揃って【ぶわぁぁぁぁぁぁぁっと】参りましょうか!!」')
print('・・・BGM・・・\n')

#クラスJarage
class Jarage:

    #コンストラクタで初期化している。
    def __init__(self,week,spell):
        self.week=week
        self.spell=spell

    #何曜日は何ジャラゲかを出力するsongメソッド   
    def song(self):
        print(self.week+'曜日は、'+self.spell)


#曜日とその呪文のインスタンスを生成
mon=Jarage('月','ウンジャラゲ♪')
tue=Jarage('火','ハンジャラゲ♪')
wed=Jarage('水','スイスイスイ♪')
thu=Jarage('木','モーリモリ♪')
fri=Jarage('金','キンキラキン♪')
sta=Jarage('土','ギンギラギンのギンギラギンのギンギラギンのギン♪')
sun=Jarage('日','ランラランらランランっ!')
#猫曜日を追加
cat=Jarage('猫','んにゃにゃにゃにゃんにゃん(=^x^=)mm!')

#曜日リストの末尾に「cat」を追加
everyday=[mon,tue,wed,thu,fri,sta,sun,cat]

#内包表記で各曜日のインスタンス化のループを作る
[day.song() for day in everyday] 

print('\n志村けん:「だいじょぶだぁ!!」') 
print('-------------------------------------------\n') 

今回教材に使った曲は、「植木等 ハナ肇とクレイジー・キャッツの曲」だそうです。
実は、ハナ肇さんは大学の先輩なんです。

最後まで読んでくださって、ありがとうございます。
あなたを愛しています(=^x^=)

■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。

Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。

サイトマップはこちらから

Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介

Pythonの進捗状況(私のロードマップ)

モバイルバージョンを終了