【paiza問題集】「標準入力その2」をPythonとGASの両方で解いたコード紹介リンク集

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

■ 標準入力メニュー2 ■

2 つの文字列の半角スペース区切りでの分割 Python3編

3 つの文字列の半角スペース区切りでの分割 Python3編


【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 Python3編

paiza問題集のPythonとGASのコード紹介へ戻る
初めてのGASへ戻る


自己紹介へ

【paiza問題集】「標準入力その1」をPythonとGASの両方で解いたコード紹介リンク集

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

1 行の入力 Python3編

2 行の入力 Python3編

3 行の入力 Python3編

10 行の入力 Python3編

【行入力】1,000 行の入力 Python3編

paiza問題集のPythonとGASのコード紹介へ戻る
初めてのGASへ戻る


自己紹介へ

Pythonの辞書をループを用いて「サザエさん」のキャラを取り出す

この記事を読むことで、

・Pythonの辞書の「キー」及び「値」とは何か

・辞書自体をそのまま表示

・「辞書.items()」を使って、辞書をループを使って取り出す

の学習が出来ます。

辞書の例として、国民的アニメの「サザエさん」のキャラクターの「職業をキー」に、「キャラクターを値」にしています。

辞書は{“キー”:”値” , “キー”:”値” ,・・・}の構造になっていて、サザエさんキャラを例にすると、{“大黒柱”:”磯野波平” , “主婦”:”フグ田サザエ”}などになります。

サザエさんキャラの中から、こちらの5名を用意しました。
辞書の名前は「chara_dic」です。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'フグ田タラオ','ペット':'タマ'}

まずは、ループで辞書のキーと値を取り出す前に、print関数でシンプルに辞書自体を表示させてみます。

コードはこちらです。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'フグ田タラオ','ペット':'タマ'}

#辞書自体を「そのまま」出力
print(chara_dic)

辞書を「そのまま」取り出した実行結果です。

無事に出力されましたが、少し見辛いですよね。

そこで、今度はこの辞書をループを使って出力してみます。


コードに下記を追加します。

キーになるのはkey:職業や特徴で、となるのはvalue:キャラクター名として、
forループで(key,value)を指定とすると、「大黒柱,磯野波平」から、「ペット,タマ」までの全てのメンバーを取り出せます。

#書き方は、「 辞書.items(): 」
chara_dic.items()

を使って、キーであるkeyと、であるvalueを取り出します。
ここまでのコードと実行結果です。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'フグ田タラオ','ペット':'タマ'}

#辞書.items()を使ってループで出力
for (key,value) in chara_dic.items():
  print(key,value)

これでも辞書の「キー」と「値」が表示されて、先程よりかは幾分見やすくなりましたが、もう少し日本語の体裁を整えたいと思います。


下記のようにprint文内の日本語を整えて表示します。

print(key+"の、"+value+"さんです。")

ここまでのコードと実行結果です。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'フグ田タラオ','ペット':'タマ'}

#辞書.items()を使ってループで出力
for (key,value) in chara_dic.items():
  print(key+"の、"+value+"さんです。")



もう少し「キー」と「値」を見やすくしたいので、コードをこの様に書き換えます。

print("【"+key+"】の、【"+value+"】さんです。")

ここまでのコードと実行結果です。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'フグ田タラオ','ペット':'タマ'}

#辞書.items()を使ってループで出力
for (key,value) in chara_dic.items():
  print("【"+key+"】の、【"+value+"】さんです。")

お疲れ様でした。ブレイクタイムPhotoは、

千葉県の房総半島、外房の御宿の海です。

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

PythonのリストをループとIF文、enumerate関数を使ってサザエさんキャラを取り出してみた。

この記事を読むことで、

Pythonのリストを単純にループを使って取り出す方法

・enumerate関数を使って取り出す方法

・IF文の復習

strで数値と文字列をprint文で表示する方法

が可能になります

具体例として使うのは、国民的アニメのサザエさんです。
その中から4人の名前をcharacterというリストにこの様に格納しました。

chara=['波平','サザエ','カツオ','タマ']

リストの添え字は「0(ゼロ)」から始まります。
このリストの場合、末尾の「タマ」は3です。

このリストの添字0の波平さん、添字1のサザエさん、添字2のカツオまでが「人間」で、添字3のタマが「猫ちゃん」です。

そこで、typeという変数を用意して、添え字が3のタマの場合のみtypeを「猫ちゃん」に、それ以外は「人間」と表示する様にプログラミングしました。
シンプルなIF文による分岐をしています。

#サザエさんのキャラクターのリスト
chara=['波平','サザエ','カツオ','タマ']

#ループを使ってリストを取り出す
#i=3のタマのtypeを「猫ちゃん」にする
for i in range(len(chara)):
  if i==3:
    type='猫ちゃん'
  else:
    type='人間'
  print(chara[i]+':'+type)

実行結果です。

このコードにenumerate関数を使うと、添字と値を同時に表示させることが可能になります。

enumerateを使うことによって、リストの添字i=0,1,2,3とリストの中身のキャラクターを同時に扱えます。

#サザエさんのキャラクターのリスト
chara=['波平','サザエ','カツオ','タマ']

#ループを使ってリストを取り出す
#i=3のタマのtypeを「猫ちゃん」にする
for i,member in enumerate(chara):
  if i==3:
    type='猫ちゃん'
  else:
    type='人間'
  print(i,member+':'+type)

このように書き換えられます。

実行結果です。

更に最後のprint文を変更して、実行結果に表示する日本語を、より伝わりやすく改変することも可能です。

str(i)を使うことによって、数値を文字と一緒にprint文内に表記しております。

#サザエさんのキャラクターのリスト
chara=['波平','サザエ','カツオ','タマ']

#ループを使ってリストを取り出す
#i=3のタマのtypeを「猫ちゃん」にする
for i,member in enumerate(chara):
  if i==3:
    type='猫ちゃん'
  else:
    type='人間'
  print('家族No.'+str(i)+' '+member+'さんは「'+type+'」です。')

実行結果です。

この様に、enumerate関数を使うと表記の自由度が増します。
ループ、リストとセットで復習にもなりました。

お疲れ様でした。ブレイクタイムPhotoは、

千葉県房総半島外房、御宿の海です。
ここの海は透明度が高いことが魅力の一つです。

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

Pythonで辞書を使ってサザエさんのキャラクターを職業別に出力

この記事を読むことで、

・Pythonの辞書の基本的な作り方

・キーと値の指定の仕方


・次のデータの追加方法


・辞書から「キーを指定」して「値を取り出す方法」


・標準入力の復習

が学べます。

この記事で作成する辞書の具体例として、国民的アニメ「サザエさん」のキャラクターを用います。

辞書は、「キー」と「値」で構成されていて、 {(波かっこ)} で括って、下記のように記述します。

chara_dic={'大黒柱':'磯野波平'}

上記の場合は【キー】が「大黒柱」で、【値】が「磯野波平」です。
キーと値は「:」で区切っています。

辞書は、「 ,(カンマ) 」で区切ることによって、データを追加出来ます。
同様にして、他のキャラクターも追加しました。

chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ'}

この辞書をそのまま出力するコードはこちらです。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」

chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ'}

print(chara_dic)

実行結果です。


次に、指定したキーの値のみを取り出してみます。
カツオくんにしようと思います。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」

chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ'}

print(chara_dic['小学生'])#ここでキーを指定しています。

実行結果です。


この例ではキーに’小学生’と入力しましたが、変数keyに代入する書き方も掲載致します。
今度は主役のサザエさんを出力します。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ'}

key='主婦'#キーを変数に代入します。

print(chara_dic[key])#変数キーを指定しています。

変数を使ったやり方でも無事に出力出来ました。


今度は、標準入力を使って、好きなキャラクターを表示出来る様に改変します。
そこで入力した内容をIF分岐を使って表示させます。

標準入力で入力する際にアルファベット1文字で簡単な操作性にする為、

「波平さん」の大黒柱を【d】、
「サザエさん」の主婦を「housewife」から【h】、
「カツオくん」の小学生を「Elementary school student」から【e】、
「タラちゃん」の幼児を「infant」から【i】、
「タマ」はペットの【p】

に致します。

標準入力は下記の様に、変数typeに代入します。

type=input()

ここで【d】や【i】などの文字を変数typeに格納します。

また、辞書に新たなキャラクターを追加致します。
キーは「その他」で、値は「伊佐坂先生」を加えました。

chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ','その他':'伊佐坂先生'}

それでは、ここまでのコードと実行結果です。

#サザエさんのキャラクターの辞書
#職業や特徴を「キー」、名前を「値」
chara_dic={'大黒柱':'磯野波平','主婦':'フグ田サザエ','小学生':'磯野カツオ','幼児':'タラちゃん','ペット':'タマ','その他':'伊佐坂先生'}

#ここで標準入力を使用します。
print('【d】大黒柱、【h】主婦、【e】小学生,【i】幼児,【p】ペット 【記号】を入力>>>',end='')
type=input()


#標準入力で入力した半角英字によって分岐しています。
if type == 'd':
  key='大黒柱'
elif type=='h':
  key='主婦'
elif type=='e':
  key='小学生'
elif type=='i':
  key='幼児'
elif type=='p':
  key='ペット'
else:
  key='その他'
  
print(chara_dic[key])#変数キーを指定しています。

typeに【d】を入力した場合。

typeに【i】を入力した場合。

typeに指定の半角英字以外を入力した場合(仮に【x】と入れてみました。)


お疲れ様でした。ブレイクタイムPhotoは、

マクセルアクアパーク品川
(東京都品川区にある水族館です。)

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

Python自作サンプル集へ戻る

写真クリエイターとしての活動
自己紹介

【人狼ゲームでPythonの総復習】日向坂46の2024年お正月「人狼ゲーム」でPythonの入門〜関数までの総復習が出來るサンプルコードを作ってみました。

この記事では、2024年お正月に配信された、日向坂46の人狼ゲームの配信を元に、Pythonの入門〜関数までの総復習が出来るサンプルコードを作ってみました。

こちらのYouTube動画です。

配信の感想は、アメブロの記事に、四期生の正源司 陽子(しょうげんじ・ようこ)さん推しの視点で書きました。

この記事で学習出来ることは、

・「=」代入と「==」比較演算子の違い

・無料で使えるオンラインのエディター紹介

・乱数とIF文で勝敗バトル

・Whileループと乱数で勝敗バトル

・↑記事に関数を導入

・Forループの基本的な使い方

・人狼役職の配列表示

・配列とForループ

・プログラミング学習コンテンツの紹介

についての概要が掴めます。
それでは「おひさま(ファンのネーム)」もPython学習中の方も、宜しくお願いします


プログラミングの学習を始めた頃、「=」と「==」の違いで少し迷った時期がありました。

これについては、実際に手を動かしてコードを書いてみると、その疑問が氷解出来ました。

まず、「=」の代入ですが、変数roleに役職「市民」を代入して、print文で表示させます。

ご存知の方には恐縮ですが、コメントは「#」を付けます。

#変数roleに「市民」を代入
role='市民'

#役職を表示する
print(role)

実行結果はこちらです。

roleという変数に、役職「市民」が代入されて出力されました。
この後、roleに「裏切り者」を代入して出力します。

role='市民'

#別の役職、「裏切り者」を代入
role='裏切り者'

print(role)

実行結果です。

このように、代入では入れる値によっては上書きされるというイメージを持って頂けたらと思います。

一方で、「==」は、等しいかどうかの判定を行います。

role='人狼'

#boolで等しい時はTrue、そうでなければFalse
print(bool(role=='市民'))

「人狼」と「市民」は等しくないので、この様な実行結果になります。

IF文では、もしも「まっさらな市民」だとしたら自分は退場して、騎士などの役職持ちのメンバーに頑張ってもらいたい時は、例えばこの様に記述します。

role='市民'

#役職が市民だったら退場する
if role=='市民':
    print('自分は退場して、騎士や霊媒師などに頑張ってもらう')

実行結果です。

ここでもし、「==」を「=」にしてしまうと、エラーが出てしまって、正しく実行されません。

7行目の所でエラーが出ています。

「=」の代入と、「==」の比較演算子の違いは、実際に書いてみるのが一番理解できました。

とはいえ、「書いてみて」と言われても、プログラミングって環境構築に結構な時間や手間が掛かりますよね。

そこで、すぐに試してコードを書いて実行できる、オンライン上で無料の開発環境IDEを次の項目で紹介します。


結論ですが、paiza.ioがオススメです。

「コード作成を試してみる(無料)」→ 「Python3」 からすぐに学習開始出来ます。

無料のオンラインエディタ(IDE)を調べたら10個ぐらい出てきて、どれを使おうか迷いましたが、

・登録なしですぐ使える

・日本語対応


・標準入力機能が使える

といった点から、paiza.ioをオススメします。

ここでは、標準入力を使ってみます。
paiza.ioの下のタブの「入力」を選択して、自分のやりたい役職を入力します。

この状態で下記のコードを実行します。
変数roleに標準入力で入れた役職が入り、それを出力します。

#標準入力で、やりたい役職を入力する
role=input()

#その役職を表示する
print('私が1番やりたい役職は【'+role+'】です。')

標準入力についてはここまでにして、次からはランダムな数字である乱数を使って、ゲーム的な要素をプログラミングに取り入れてみます。


ここから、乱数を使って、「市民チーム」と「人狼チーム」の勝敗を出力するといった、ゲーム的要素を入れたコードを書いて行きます。

1から10までの乱数を作って、5以上だったら人狼チームの勝ち、そうで無ければ市民チームの勝ちとします。

乱数は、import random で使える様になり、1から10のランダムな整数は random.randint(1,10)で生成します。
その乱数を変数numに代入します。

勝者を入れる変数は、winnerを使います。

#乱数を使える様にする
import random

#1から10までの乱数を作る
num=random.randint(1,10)

#5以上だったら人狼チームの勝利
if num>=5:
    winner='人狼'
else:
    winner='市民'

#勝敗結果を出力
print('勝者は【'+winner+'】チームです!!')

実行結果です。

何回か実行してみると、

実行結果が変わりました。
このままでも、どっちが勝ったのか分かるのですが、乱数の数値が何だったのか知りたいので、numも表示させてみます。

#乱数を使える様にする
import random

#1から10までの乱数を作る
num=random.randint(1,10)

#5以上だったら人狼チームの勝利
if num>=5:
    winner='人狼'
else:
    winner='市民'

#勝敗結果を出力
print('勝者は【'+winner+'】チームです!!')
print(num)

あとは、1行で表示されるようにしたいのと、numもprint文の中に一緒に入れたいのですが、数値型の変数を文字列型と一緒に使う場合には、str(num)と書きます。

#乱数を使える様にする
import random

#1から10までの乱数を作る
num=random.randint(1,10)

#5以上だったら人狼チームの勝利
if num>=5:
    winner='人狼'
else:
    winner='市民'

#勝敗結果と乱数を一緒に出力
print('numが「'+str(num)+'」より、勝者は【'+winner+'】チームです!!')

実行結果です。


ループを使ってちょっとRPGっぽく、市民チームと人狼チームのHPを指定して、HPが0になったらループを抜けて負けにしてみます。

Whileループの継続条件は、両方のチームのHPが0以上の場合です。

攻撃されるとHPが減って、攻撃によってどれぐらいHPが減るのかを乱数attackで指定します。

flagが0だったら人狼チームの攻撃、1だったら市民チームの攻撃にします。

改行は「\n」を使います。

ちょっと複雑だな・・・と思われた方は、次の次のForループの所まで読み飛ばして頂いても大丈夫です♪

#乱数を使える様にする
import random


#市民チームと人狼チームのHP初期値を10にする
shimin_HP=10
jinro_HP=10

#whileループでバトル!!
while shimin_HP>0 and jinro_HP>0:

    #相手チームに与えるダメージは1から5までの乱数にする
    attack=random.randint(1,5)

    #0だったら人狼チームの攻撃、1だったら市民チームの攻撃にする
    flag=random.randint(0,1)

    if flag==0:
        print('人狼チームが市民チームに「'+str(attack)+'」のダメージを与えた')
        #攻撃された市民チームのHPがマイナスされる
        shimin_HP-=attack
    else:
        print('市民チームが人狼チームに「'+str(attack)+'」のダメージを与えた')
        #攻撃された人狼チームのHPがマイナスされる
        jinro_HP-=attack
    print('市民チームHP残:'+str(shimin_HP)+'\n人狼チームHP残:'+str(jinro_HP))
    print('----------')
    
#勝敗結果
if shimin_HP>jinro_HP:
    winner='市民'
else:
    winner='人狼'

print('勝者は【'+winner+'】チーム!!')  

実行結果は長いので省略させて頂きますm(_ _)m

コード自体が長くなってきて、メンテナンスの意味も込めて、次の項目ではバトルの部分と勝敗結果をdefを使って関数にして、関数をループ中やprint文の中から呼び出してみるようにコードを書き換えてみます。


バトルの部分を関数battleにして、whileループで呼び出し、勝敗結果をprint文の中で呼び出すコードに書き換えてみました。

#乱数を使える様にする
import random


#市民チームと人狼チームのHP初期値を10にする
shimin_HP=10
jinro_HP=10


#defで関数battleを定義する
def battle(shimin_HP,jinro_HP):
    
    #相手チームに与えるダメージは1から5までの乱数にする
    attack=random.randint(1,5)

    #0だったら人狼チームの攻撃、1だったら市民チームの攻撃にする
    flag=random.randint(0,1)

    if flag==0:
        print('人狼チームが市民チームに「'+str(attack)+'」のダメージを与えた')
        #攻撃された市民チームのHPがマイナスされる
        shimin_HP-=attack
    else:
        print('市民チームが人狼チームに「'+str(attack)+'」のダメージを与えた')
        #攻撃された人狼チームのHPがマイナスされる
        jinro_HP-=attack
    print('市民チームHP残:'+str(shimin_HP)+'\n人狼チームHP残:'+str(jinro_HP))
    print('----------')
    
    return shimin_HP,jinro_HP


while shimin_HP>0 and jinro_HP>0:
    #関数battleを呼び出している
    shimin_HP,jinro_HP=battle(shimin_HP,jinro_HP)    
    
#defで関数winを定義している
def win():
    if shimin_HP>jinro_HP:
        winner='市民'
    else:
        winner='人狼'
    return winner

#print文の中で関数winを呼び出している
print('勝者は【'+win()+'】チーム!!')


上記のWhileループの他にForループがあって、配列と一緒に使うのに便利です。
人狼ゲームの役職の配列を作ってその中身を取り出すのにForループを使って行きます。
その前に、Forループの基本的な使い方を確認します。

・0から4まで1ずつ加算

#0から4まで1ずつ加算
for i in range(5):
    print(i)

実行結果です。

もっと短いコードで書ける、内包表記を使うとこの様になります。

#0から4まで1ずつ加算
for i in range(5):
    print(i)

#内包表記
[print(i) for i in range(5)]

内包表記の実行結果も上のループと同じになります。

・0から9まで2ずつ加算

#0から9まで2ずつ加算
for i in range(0,10,2):
    print(i)

#内包表記
[print(i) for i in range(0,10,2)]

実行結果(同じなので、片方だけのスクショです。)

・5から1まで1ずつ減算

#5から1まで1ずつ減算
for i in range(5,0,-1):
    print(i)

#内包表記
[print(i) for i in range(5,0,-1)]

以上が、Forループの基本的な使い方です。


配列って、なんか難しそうだ・・・と思われた方は、配列とは団地みたいなものをイメージして下さい。

団地の0号室に「市民」が住んでいて、1号室に「霊媒師」が住んでいて・・・そんなイメージです。

普通の団地と異なるのは、0号室から始まることです。

#配列を定義
array=['市民','霊媒師','占い師','騎士','裏切り者','人狼']

#配列を出力
print(array)

出力結果です。

配列は0から始まるので、例えば「占い師」を表示させたい場合は、array[2]になります。

#配列を定義
array=['市民','霊媒師','占い師','騎士','裏切り者','人狼']

#配列を出力
print(array[2])

次の項目では、先ほどのループと配列を合わせた、プログラミングでは使用頻度の高いコードを掲載します。


ループを使って、配列の中身を取り出します。
通常の表記と、内包表記を併記します。

#配列を定義
array=['市民','霊媒師','占い師','騎士','裏切り者','人狼']

#Forループで配列の出力
for role in array:
 print(role)
 
#内包表記
[print(role) for role in array]

実行結果です。

この記事ではここまでで、Pythonの入門〜関数までの総復習が出来たと思います。

もっと詳しく勉強したい方は、下記の学習コンテンツがオススメです。
いきなり本を買っても良いのですが、出来れば動画学習コンテンツで多少知識を入れてからの方が、本当に必要なお買い物が出来ると思います。

本も紹介させて頂きます。


初めてのプログラミング学習では、やはり講師の説明を聞きながら動画を見て、それを自分のPCで動かして試してみる・・・という方法がハードルが低いので、オススメの学習コンテンツを2つ紹介します。

どっちが良いのか迷われた方は、両方の無料レッスンを受けてみて、自分に合いそうな方を取り入れて下さい。

ドットインストール
paizaラーニング

ご精読誠にありがとうございました。

■ 独習Python ■
Kindle版
単行本(ソフトカバー)

長々と書いてしまいましたが、本当に読んで下さって有難うございます。
大変、お疲れ様でした。


ブレイクタイムPhotoは・・・

遊歩道の桜

地元の遊歩道の桜並木です。

トップページに戻る

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その2 「FINAL問題 【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法が学べます。GASでは二次元配列として取得、出力する方法が学べます。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


【半角スペース区切りでの文字列の分割】5 つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:文字列one two three four fiveを、半角スペースで分割して出力してください。

入力される値
なし


期待する出力
one two three four fiveを半角スペースで区切り、区切られた文字列を改行区切りにして 5 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

one
two
three
four
five

ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。

■ Pythonでの解き方 ■

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力

2:配列を確認

3:ループで出力

で、行います。

手順1で、文字列「one two three four five」にsplitメソッドを使って空白の所で文字列を分割してリストに代入します。
その部分のコードです。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

手順2では、リストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

#リストarrayをそのまま出力
print(array)

その出力結果です。

手順3では、リストarrayに格納されたことが確認できたので、arrayをループで出力します。そのコードと出力結果です。

#ループでリストを出力する
for num in array:
    print(num)

このループの所を内包表記で記述したコードです。先ほどのシンプルなループのコードと比較すると、内包表記が分かりやすくなります。

#ループでリストを出力する
for num in array:
    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

これまでの手順で作成したコードです。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#リストをそのまま表示する
print(array)


#ループでリストを出力する
for num in array:
    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

求められる出力に対して冗長な箇所はコメントアウトします。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#リストをそのまま表示する
#print(array)


#ループでリストを出力する
#for num in array:
#    print(num)

#内包表記でリストを出力する
[print(num) for num in array]

提出用にスッキリと最小限のコードに致しました。

#文字列を分割してリストarrayに格納
array='one two three four five'.split(' ')

#内包表記でリストを出力する
[print(num) for num in array]

プログラムを実行した出力結果です。

■ GASでの解き方 ■

今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。
空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートの黄色いセルに出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’one two three four five’.split(‘ ‘);

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

//ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

手順7:array2をスプレッドシートの黄色いセルに出力する

ss.getRange(2,1,array2.length).setValues(array2);

実行後のスプレッドシートです。

GASでの全コードはこちらになります。

function standardInput08() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss = SpreadsheetApp.getActiveSheet();

  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array = 'one two three four five'.split(' ');

  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2 = [];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i = 0; i < array.length; i++) {
    array2.push([array[i]]);
  }

  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

  //array2をスプレッドシートの黄色いセルに出力する
  ss.getRange(2, 1, array2.length).setValues(array2);

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

恵比寿ガーデンプレイス、フランスのクリスタルメーカー、バカラのシャンデリア

←前の問題へ          標準入力その3へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その2」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その2 「STEP: 2 3 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法が学べます。GASでは二次元配列として取得、出力する方法が学べます。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


3 つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:
文字列He likes paizaを、半角スペースで分割して出力してください。

入力される値
なし

期待する出力
He likes paizaを半角スペースで区切り、区切られた文字列を改行区切りにして 3 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

He
likes
paiza

ではまず、Pythonで解いてみます。

今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。

■ Pythonでの解き方 ■

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力
2:配列を確認
3:ループで出力

で、行います。

手順1で、文字列「He likes paiza」にsplitメソッドを使って文字を分割します。
その部分のコードです。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

手順2では、リストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

#リストarrayをそのまま出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
そのコードと出力結果です。

#リストarrayをループで改行して出力する
for string in array:
    print(string)

このループの所を内包表記で記述したコードです。

#リストarrayをループで改行して出力する
for string in array:
    print(string)
    
#内包表記で出力する
[print(string) for string in array]

この手順で作成したコードです。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#リストarrayをそのまま出力
print(array)

#リストarrayをループで改行して出力する
for string in array:
    print(string)
    
#内包表記で出力する
[print(string) for string in array]

求められる出力に対して冗長な箇所はコメントアウトします。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#リストarrayをそのまま出力
#print(array)

#リストarrayをループで改行して出力する
#for string in array:
#    print(string)
    
#内包表記で出力する
[print(string) for string in array]

提出用にスッキリと最小限のコードに致しました。

#splitメソッドで分割したものをリストarrayに代入
array='He likes paiza'.split(' ')

#内包表記で出力する
[print(string) for string in array]

プログラムを実行した出力結果です。

■ GASでの解き方 ■

今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートの黄色いセルに出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’He likes paiza’.split(‘ ‘)

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

//ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for(let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

手順7:array2をスプレッドシートの黄色いセルに出力する

ss.getRange(2,1,array2.length).setValues(array2);

実行後のスプレッドシートです。

GASでの全コードはこちらになります。

function standardInput07() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss = SpreadsheetApp.getActiveSheet();

  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array = 'He likes paiza'.split(' ')

  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2 = [];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i = 0; i < array.length; i++) {
    array2.push([array[i]]);
  }

  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

  //array2をスプレッドシートの黄色いセルに出力する
  ss.getRange(2, 1, array2.length).setValues(array2);

}

宜しかったらコピペしてアレンジして見て下さい。
お疲れ様でした、ブレイクタイムフォトはこちらになります。

お台場の観覧車、扇風機!?

←前の問題へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その2」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集 】標準入力その2「STEP: 1 2 つの文字列の半角スペース区切りでの分割」をPythonとGASで解いたコード紹介

この記事を読むことで、PythonとGASでsplitメソッドを使って、文字列を空白部分で分割してリスト(配列)に格納し、ループを使ってリストを出力する方法、Pythonではそのループの記述と対応して、内包表記で書く方法、GASでは二次元配列として取得、出力する方法を掲載致しました。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)

GAS(Google Apps Script)はスプレッドシートを使ってコードを書いていおります。


1 2つの文字列の半角スペース区切りでの分割 (paizaランク D 相当)

問題:
文字列Hello paizaを、半角スペースで分割して出力してください。

入力される値
なし

期待する出力
Hello paizaを半角スペースで区切り、区切られた文字列を改行区切りにして 2 行で出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。

Hello
paiza

ではまず、Pythonで解いてみます。
今回は、paiza.ioを使って解きます。paiza.ioの使い方はこちらから。

手順として、

1:リストarrayにsplitメソッドを使って空白で文字を区切って配列に入力

2:配列を確認

3:ループで出力

で、行います。

手順1で、文字列「Hello paiza」にsplitメソッドを使って文字を分割します。
その部分のコードです。

#配列arrayにsplitメソッドで空白を区切りにして格納する
array='Hello paiza'.split(' ')

手順2でリストarrayに分割して文字列がそれぞれ格納したことをprint文で確認します。

array='Hello paiza'.split(' ')

#配列arrayをそのまま出力
print(array)

その出力結果です。

リストarrayに格納されたことが確認できたので、arrayをループで出力します。
変数msgに配列の中身を順番に代入して出力しています。
そのコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

#配列arrayをループで出力
for msg in array:
    print(msg)

このループの所を内包表記で記述したコードと出力結果です。

array='Hello paiza'.split(' ')

print(array)

for msg in array:
    print(msg)
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

配列arrayの出力確認や通常のループと内包表記の2度使っている箇所が冗長ですのでコメントアウトしたコードです。

array='Hello paiza'.split(' ')

#print(array)

'''
for msg in array:
    print(msg)
'''
    
#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]

出力結果です。

最後に提出用にスッキリと最小限のコードに致しました。

array='Hello paiza'.split(' ')

#配列arrayをループで出力する所を内表表記で記述
[print(msg) for msg in array]


今度は、同じ問題をGASで解いてみます。
まず、スプレッドシートにこの様に配置しました。

この黄色く塗りつぶしたセルの所に二次元配列として取得した文字列が格納された配列を出力します。空白区切りの文字を分割して配列に格納して、更にループを使って二次元配列にします。

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順はこのようになります。

1:SpreadSheetAppから階層を辿って現在のシートにアクセスする

2:splitメソッドを使って文字列を分割して配列arrayに代入する

3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

このコードを関数「standardInput1」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput1() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();
  
}

手順2:splitメソッドを使って文字列を分割して配列arrayに代入する

const array=’Hello paiza’.split(‘ ‘);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //splitメソッドを使って文字列を分割して配列arrayに代入する
  const array='Hello paiza'.split(' ');

}

手順3:分割した文字列が配列arrayに追加出来たことをログ出力で確認する

console.log(array);

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  
  //分割した文字列が配列arrayに追加出来たことをログ出力で確認する
  console.log(array);

}

手順4:配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する

let array2=[];

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  //配列arrayに格納された文字列を二次元配列として追加する配列array2を宣言する
  let array2=[];

}

手順5:ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  //ループを使ってarrayに格納された文字列を二次元配列としてarray2に追加する
  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
}

手順6:スプレッドシートに出力する前に、ログでarray2を出力して確認する

console.log(array2);

コードと出力結果です。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  //スプレッドシートに出力する前に、ログでarray2を出力して確認する
  console.log(array2);

}

手順7:array2をスプレッドシートのセルA2を起点とした黄色いセルに出力する

ss.getRange(2,1,array2.length).setValues(array2);

セルA2(2,1)を起点として、配列の長さ分だけ黄色い所に出力します。

function standardInput1() {

  const ss=SpreadsheetApp.getActiveSheet();
  const array='Hello paiza'.split(' ');
  console.log(array);

  let array2=[];

  for (let i=0;i<array.length;i++){
    array2.push([array[i]]);
  }
  
  console.log(array2);

  //スプレッドシートのセルA2を起点とした黄色いセルに出力する
  ss.getRange(2,1,array2.length).setValues(array2);

}

実行後のスプレッドシートです。


お疲れ様でした。ブレイクタイムPhotoは、

よみうりランドのジュエルミネーションの鉛筆工場です。
Xmasの時期に撮影しました。

←標準入力その1へ          次の問題へ→

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その2」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介

【paiza レベルアップ問題集】標準入力その1 「FINAL問題 【行入力】1,000 行の入力」をPythonとGASで解いたコード紹介

この記事を読むことで、ループを使って1000行分もの文字列をPythonの標準入力で取得・出力する方法と、GASではスプレッドシートを用いて1000行の配列をループで作成して、それを別の列に出力する方法を掲載しております。

このコーナーでは、プログラミング学習コンテンツのpaizaラーニングのレベルアップ問題集の同じ問題をPythonとGAS(Google Apps Script)で解いたコードを掲載しております。

Pythonではpaizaに入会しなくても問題集を解きたい方向けにpaiza.ioを用いております。paiza.ioの使い方はこちらから。

(入会するか否かは問題集を解いて見てからの読者様のご判断にお任せ致します。
どちらの選択をされても記事を読めるようになっておりますので、安心して下さい。)


【行入力】1,000 行の入力 (paizaランク D 相当)

問題:
s_1, s_2, s_3, … s_999, s_1000 の 1,000 個の文字列が与えられます。
文字列を与えられた順番通りに出力してください。

この記事では、下記の入力例1の場合を例にして、文字列の出力を行います。

入力例1
paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

出力例1

paiza0
paiza1
paiza2
paiza3
paiza4
paiza5
paiza6
paiza7
paiza8
paiza9



(以下略)



paiza990
paiza991
paiza992
paiza993
paiza994
paiza995
paiza996
paiza997
paiza998
paiza999

ではまず、Pythonで解いてみます。


下準備として、paiza.ioにこの様に入力します。
(入力例1をそのままioにコピーしたのみで、画像はその一部です。)

(以下略・・・)

手順として、

1:問題文から1000行と分かっているので、ループを1000回まわし、ループの中で標準入力で取得した文字列を変数tempに格納して出力する

で、行います。

Pythonのコードはこちらになります。
また、コメントが複数行に渡る場合は「’」のシングルクォーテーション3つ「”’」か「”」のダブルクォーテーション3つの「”””」でコメントの開始位置と終了位置に掲載します。

'''
問題文から1000行と分かっているのでループを1000回まわし、
ループの中で標準入力で取得した文字列を変数tempに格納して出力する
'''

for i in range(1000):
    temp=input()
    print(temp)

この手順で作成したプログラムを実行した出力結果の一部です。

(以下略・・・)


次は、同じ問題をGASで解いてみます。
まず、この様なスプレッドシートを用意しました。

今回はA列の入力欄にpaiza0,paiza1,paiza2・・・paiza997,paiza998,paiza999と1000行ものデータを用意しなければなりません。さすがに手打ちではきついので、まず最初にこのようなコードを作成致しました。

文字列作成準備の手順です。

1:SpreadSheetAppからアクティブシートにアクセスする

2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

4:スプレッドシートのA列に格納する前にログで確認する

5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

※スプレッドシートに表示する場合は、二次元配列としての配列に追加をして作成します※

手順1: SpreadSheetAppから階層を辿って現在のシートにアクセスする

const ss = SpreadsheetApp.getActiveSheet();

ここで定数ssにSpreadsheetAppから階層を辿ってアクティブシートにアクセスしています。

関数「loop1000」の中にコードを書いていきます。

function loop1000() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順2:A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言

let columnA=[];

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();

  //A列にpaiza0からpaiza999まで出力するのに事前に文字列を格納する配列columnAを宣言
  let columnA=[];

}

手順3:ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく

ループ内の変数iを0から999まで変化させて、文字列「paiza」に「+i」でくっつけて、paiza0〜paiza999をループを利用して生成しています。

また、スプレッドシートは二次元配列の為、「 [‘paiza’ + i ] 」としています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  //ループを使って配列columnAにpaiza0からpaiza999までの値を追加していく
  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

}

手順4:スプレッドシートのA列に格納する前にログで確認する

console.log(columnA);

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  //A列に出力前にログで二次元配列が生成できたことを確認
  console.log(columnA);

}

実行した所、ログでは1000行は多過ぎて全ては表示しきれませんでしたが、二次元配列の形になっていることは確認出来ました。

(・・・ 途中省略 ・・・)

手順5:スプレッドシートのA列の入力の下に配列columnAの値を格納する

ss.getRange(2,1,columnA.length).setValues(columnA);

paiza0〜paiza999まで出力するセルはA2を起点としているので、2行目1列で(2,1)としています。

その後にこの配列の長さである、columnA.lengthで1000行分を確保しています。

function loop1000() {

  const ss=SpreadsheetApp.getActiveSheet();
  let columnA=[];

  for(let i=0;i<1000;i++){
    columnA.push(['paiza'+i]);
  }

  console.log(columnA);

  //スプレッドシートのA列の入力の下に配列columnAの値を格納する
  ss.getRange(2,1,columnA.length).setValues(columnA);

}

このコードの実行結果です。

(・・・ 途中省略 ・・・)

スプレッドシートはpaiza0からpaiza999までの1000行表示出来ました。
最初の行が見えるように行固定致しました。


準備が整ったところで、A列の文字入力部分を二次元配列として取得して、C列の黄色いセルにそのまままの順番で文字列を出力します。プログラミングの手順は下記のようになります。

6:SpreadSheetAppからアクティブシートにアクセスする

7:A列の値を定数numに格納する

8:numをC列に出力する

手順6: SpreadSheetAppから階層を辿って現在のシートにアクセスする

これを関数「standardInput5」の中に書いていきます。
Standard Inputで、標準入力の意味です。

function standardInput5() {

  //SpreadSheetAppから階層を辿って現在のシートにアクセスする
  const ss=SpreadsheetApp.getActiveSheet();

}

手順7:A列の値を定数numに格納する

const num=ss.getRange(2,1,1000).getValues();

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  
  //A列の値を定数numに格納する
  const num=ss.getRange(2,1,1000).getValues();

}

手順8:numをC列に出力する

ss.getRange(2,3,1000).setValues(num);

function standardInput5() {

  const ss=SpreadsheetApp.getActiveSheet();
  const num=ss.getRange(2,1,1000).getValues();

  //numをC列に出力する
  ss.getRange(2,3,1000).setValues(num);

}

実行結果です。

(・・・中略・・・)

ここまでで、「標準入力その1」は終了致しました。


お疲れ様でした。ブレイクタイムPhotoは、

遊歩道で撮影した桜です。

←前の問題へ    標準入力その2へ→      

ご精読有難うございました。

■ GASの入門書の紹介です ■

詳解! Google Apps Script完全入門 [第3版]
単行本
Kindle版(電子書籍)

■ 関連記事 ■

paizaレベルアップ問題集「標準入力その1」へ戻る
paizaレベルアップ問題集_PythonとGASのコード紹介トップページへ

写真クリエイターとしての活動
自己紹介