#問題1
Hello World を出力してください。
回答1
print ("Hello World")
解説・補足1
出力関数Print() を使います。
#おまけ問題1.5 (input 関数)
任意の2つのAとBが与えられるとする。 (=AとBが入力される) AとBの積が偶数か奇数か判定してください。 (=偶数の場合Evenと出力し、奇数の場合、Oddと出力する)
回答1.5
a=int(input())
b=int(input())
#(別解)a, b = map(int, input().split())
n=(a*b)%2
if n==0:
print("Even")
else:
print("odd")
解説・補足1.5
If文とmap関数を使うとうまくいきます。
if文
if 条件式A:
条件式Aが真(true)の場合に実行する処理
elif 条件式B:
条件式Aが偽(false)で、条件式Bが真(true)の場合に実行する処理
else:
すべての条件式が偽(false)の場合に実行する処理
このようにに書きます。
さらに論理演算子(and,or)を使って条件式を書くことで複数の条件で評価(判定)をかけることができます。
なにか例になるコードを書く。
map関数
map関数とは「シーケンスの構成要素すべてに対して、ある関数の処理を行わせるという高階関数」のことである、ってWikiに書いてはありますが、これはつまり、map関数を使うと配列の要素全てにアクセスして、同じ処理を適用させることが出来るということです。
書き方は、画像にあるように第一引数にどのような処理をしたいかの関数を書き、第二引数に処理をされる配列(イテレータ)を書きます。そうすると、例えば、リスト012の中身をすべて2倍にしたいというときに、わざわざFOR文でまわさなくとも、MAP関数を使ってリスト配列すべての要素にアクセス処理を適応することができます。
#問題2
Hello Worldという文字列 を一文字ずつ出力してください。
回答2
for i in "hello world":
print(i)
別解あり
解説・補足2
for文を使います。
for文とは
for文は「指定された回数、毎回同様な処理を実行する」ものです。書き方は画像を見るとわかりやすいです。
反復可能オブジェクトとは、文字の羅列である文字列や、リストなどのことです。繰り返しのたびに、中の要素を一つずつ渡す形です。
今回の問題の場合は"hello world"という反復可能オブジェクトである文字列に対して、一文字一文字について処理を繰り返しています。
list()関数で文字列型からリスト型に変えてからfor文で回すとわかりやすいです。
list()関数
n="hello world"
for i in n:
print(i)
リスト型も反復可能オブジェクトであります。
そのため問題2は文字列型をリスト型に変換してからFOR文でまわすこともできます。LIST関数を使うことでそれができます。(list関数は、データ型を文字列から一文字一文字に区切ったリスト型に変換することができます。)
x=list("ABCDE")
print(x)
実行結果→["A","B","C","D","E"]
#問題3
Hello World でoだけとばして、一個ずつ出力する
回答3
for i in "hello world":
if i!="o":
print(i)
解説・補足
・for文の中にIF文を入れることができます。
・条件式の「≠」は!で書くことができます
#問題4
1〜10までをリストに格納し、それぞれの数を2乗した値を出力してください。
回答4
my_list = []
for i in range(1,11):
my_list.append(i**2)
print(my_list)
my_list = [i**2 for i in range(1,11)]
print(my_list)
解説・補足4
連番を作りたいときに、for文とrange関数を使います。
range関数の使い方
rangeは一定の値範囲の連番を作成するのを得意をする関数です。rangeは省略されて書かれることが多いですが、
本来range(開始, 終了, 増分)の書き方で書きます。
省略するときは、開始と増分は省略して書くことができます。省略したときは、デフォルトの値を使います。開始のデフォルト値は0、増加量は1になります。
rangeとよく組み合わせて使用するのがリストとFOR文なのですが、FORではよく見ますね。
range関数について気をつけてほしいこと↓
「○終了=○未満」ということ
例えば
for x in range(5):
print(x)
#→01234
開始0、終了5なのですが、終了とは未満なので4までしか出力されません。気をつけましょう。
さらに、連番もしくは数列を作成してリストに入れる方法として、リスト内包表記といものがあります。
リスト内包表記とは
後半のFOR文で生成した連続数値にたいして、前半に書いてある処理を施すというものです。 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/d65c5881-e8ae-45d2-883e-681ef01cae94.png) 書き方は、まず生成するリストを格納する変数を作る。それから連続した数値を生成するためにForを用いて、どのぐらい繰り返すかはコレクション、生成した関数を一度ループ変数においておいてから、すべての要素に適応する処理を書くという順番で処理しているって意識して書くとわかりやすいです。 上でも記したように、このrangeで生成される連番に気をつけましょう。#問題5
変数”number”が与えられるとする。1からnumberまで整数を判定する。が3の倍数の場合には”Fizz”、5の倍数の場合には”Buzz”、3かつ5の倍数の場合には”FizzBuzz”を、出力して下さい。 それ以外は入力した数字を、そのまま出力して下さい。
回答5
number = int(input())
for i in range(number):
if i % 15 == 0:
print( "FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
解説・補足5
定番の問題です。
FOR文で1からNUMBERってまでの連続数値をまわして、それぞれに対してIFで判定をかけるというコードになります。
このとき、15の倍数を一番最初にもってくるのがポイントになります。なぜなら。3の倍数に15の倍数が含まれているので、3の倍数を先に選別してしまうと、15の倍数もそこで抜かれてしまって、FIZZBUZZが出力されなくなってしまうからです。
ゼミ1の演習は以上で終了になります!お疲れ様でした!
難しかったでしょうか?
文法書を読んでも実際書いてみると以外に書けない、難しいみたいなところがあることも多いと思います。実際自分でプログラムを書くことで身につくのでどんどん気になったものは書いていってみましょう。