python基礎構文　腕試し


#問題1 
`Hello World を出力してください。`

**回答１**

```python:回答1
print ("Hello World")
```


**解説・補足１**
出力関数Print（）　を使います。

#おまけ問題1.5　（input　関数）
`任意の2つのAとBが与えられるとする。
（＝AとBが入力される）
AとBの積が偶数か奇数か判定してください。
（＝偶数の場合Evenと出力し、奇数の場合、Oddと出力する）`

**回答1.5**

```python:回答２
a＝int(input())
b=int(input())
#（別解）a, b = map(int, input().split())

n=(a*b)％２
if n==0:
    print("Even")
else:
    print("odd")
```
**解説・補足1.5**
If文とmap関数を使うとうまくいきます。

<details><summary>if文</summary><div>
if文は条件分岐をおこなうための文法です。
Pythonのif文は、一般的な他のプログラミング言語と同様に、**if...elif...else**で構成されています。
if文では、条件式の結果が真（true）であるか偽（false）であるかを評価し、「もし条件式Aが真（true）ならBを実行する」という処理をおこないます。elifはC言語などにおけるelse ifに相当しますが、処理の前の<font color="Red">インデント</font>を入れ忘れないように注意しましょう。

```python:ifの書き方
if 条件式A:
    条件式Aが真（true）の場合に実行する処理
elif 条件式B:
    条件式Aが偽（false）で、条件式Bが真（true）の場合に実行する処理
else:
    すべての条件式が偽（false）の場合に実行する処理
```

さらにこの条件式の書き方としては、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/85d762f7-278f-4ad8-bade-1b2190747168.png)


[このように](https://docs.python.org/ja/3/reference/expressions.html#comparisons)に書きます。


さらに論理演算子（and,or）を使って条件式を書くことで複数の条件で評価（判定）をかけることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/b44b446f-f2af-b6ab-9b67-1c71408b30d9.png)

なにか例になるコードを書く。

</div></details>

<details><summary>map関数</summary><div>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/1c268dab-35cb-0f2a-9f1d-1d204ee29604.png)

map関数とは「シーケンスの構成要素すべてに対して、ある関数の処理を行わせるという高階関数」のことである、ってWikiに書いてはありますが、これはつまり、map関数を使うと配列の要素全てにアクセスして、同じ処理を適用させることが出来るということです。
書き方は、画像にあるように第一引数にどのような処理をしたいかの関数を書き、第二引数に処理をされる配列（イテレータ）を書きます。そうすると、例えば、リスト０１２の中身をすべて２倍にしたいというときに、わざわざFOR文でまわさなくとも、MAP関数を使ってリスト配列すべての要素にアクセス処理を適応することができます。

</div></details>

#問題２

`Hello Worldという文字列 を一文字ずつ出力してください。`

**回答２**

```python:回答２
for i in "hello world":
print(i)
別解あり
```

**解説・補足２**
for文を使います。

<details><summary>for文とは</summary><div>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/85f7b64e-f919-6d09-6551-0802a8a5d1bb.png)

for文は「指定された回数、毎回同様な処理を実行する」ものです。書き方は画像を見るとわかりやすいです。
反復可能オブジェクトとは、文字の羅列である文字列や、リストなどのことです。繰り返しのたびに、中の要素を一つずつ渡す形です。
今回の問題の場合は"hello world"という反復可能オブジェクトである文字列に対して、一文字一文字について処理を繰り返しています。

</div></details>

list（）関数で文字列型からリスト型に変えてからfor文で回すとわかりやすいです。

<details><summary>list()関数</summary><div>
問題２の別解として、
最初に変数に”helloworld”を代入してからFor文でまわすということができます。

```python:
n="hello world"
for i in n:
print(i)
```

リスト型も反復可能オブジェクトであります。
そのため問題２は文字列型をリスト型に変換してからFOR文でまわすこともできます。LIST関数を使うことでそれができます。（list関数は、データ型を文字列から一文字一文字に区切ったリスト型に変換することができます。）

```python:list()例
x=list("ABCDE")
print(x)
実行結果→["A","B","C","D","E"]
```

</div></details>

#問題3
Hello World でoだけとばして、一個ずつ出力する

**回答３**

```python:回答３
for i in "hello world":
if i!="o":
print(i)
```

**解説・補足**
・for文の中にIF文を入れることができます。
・条件式の「≠」は！で書くことができます

#問題４

`1〜10までをリストに格納し、それぞれの数を2乗した値を出力してください。`

**回答４**

```python:回答４
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)
```

**解説・補足４**

連番を作りたいときに、for文とrange関数を使います。

<details><summary>range関数の使い方</summary><div>

rangeは一定の値範囲の連番を作成するのを得意をする関数です。rangeは省略されて書かれることが多いですが、
本来<font color="Red">range(開始, 終了, 増分)</font>の書き方で書きます。
省略するときは、**開始**と**増分**は*省略して*書くことができます。省略したときは、デフォルトの値を使います。開始のデフォルト値は０、増加量は１になります。

rangeとよく組み合わせて使用するのがリストとFOR文なのですが、FORではよく見ますね。
range関数について気をつけてほしいこと↓
「○終了＝○未満」ということ
例えば

```python:ex
for x in range(5):
print(x)
#→01234
```
開始0、終了5なのですが、終了とは未満なので４までしか出力されません。気をつけましょう。

</div></details>

さらに、連番もしくは数列を作成してリストに入れる方法として、リスト内包表記といものがあります。
<details><summary>リスト内包表記とは</summary>
後半のFOR文で生成した連続数値にたいして、前半に書いてある処理を施すというものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1895390/d65c5881-e8ae-45d2-883e-681ef01cae94.png)
書き方は、まず生成するリストを格納する変数を作る。それから連続した数値を生成するためにForを用いて、どのぐらい繰り返すかはコレクション、生成した関数を一度ループ変数においておいてから、すべての要素に適応する処理を書くという順番で処理しているって意識して書くとわかりやすいです。
上でも記したように、このrangeで生成される連番に気をつけましょう。
</details>

#問題５

`変数”number”が与えられるとする。１からnumberまで整数を判定する。が3の倍数の場合には”Fizz”、5の倍数の場合には”Buzz”、3かつ5の倍数の場合には”FizzBuzz”を、出力して下さい。
それ以外は入力した数字を、そのまま出力して下さい。`

**回答５**

```python:回答５
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)
```

**解説・補足５**
定番の問題です。
FOR文で１からNUMBERってまでの連続数値をまわして、それぞれに対してIFで判定をかけるというコードになります。
このとき、１５の倍数を一番最初にもってくるのがポイントになります。なぜなら。３の倍数に１５の倍数が含まれているので、３の倍数を先に選別してしまうと、１５の倍数もそこで抜かれてしまって、FIZZBUZZが出力されなくなってしまうからです。
****

ゼミ１の演習は以上で終了になります！お疲れ様でした！
難しかったでしょうか？
文法書を読んでも実際書いてみると以外に書けない、難しいみたいなところがあることも多いと思います。実際自分でプログラムを書くことで身につくのでどんどん気になったものは書いていってみましょう。