Python boot camp by Dr.Angela day5

#Loop / for 構文
pythonにおいてIndentationが非常に大事なことはよく知られている。

```python
Ikemen = ["Kamiki","Suda"]
print(Ikemen)

for Ikeman in Ikemen:
  print(Ikeman)
  print(Ikeman + "kun")

#出力結果
['Kamiki','Suda']
Kamiki 
Kamiki kun
Suda 
Suda kun
```
##Mission>> Average Height
・sum()とlen()は使用不可

```python
student_heights = input("Input a list of student heights ").split()
for n in range(0, len(student_heights)):
  student_heights[n] = int(student_heights[n])

total = 0
for x in student_heights:
  total +=x
print(f"{total}cm")

number = 0
for y in student_heights:
  number +=1

average =total/number
print(f"{round(average)cm}")
```
#max() / min()

```python
student_scores = input("Input a list of student scores ").split()
for n in range(0,len(student_scores)):
  student_scores[n] = int(student_scores[n])
print(student_scores)

for score in student_scores:
  if score > height_score:
  highest_score=score
print(f"The highest score in the class is: {highest_score}")

max_score =max(student_scores)
min_score =min(student_scores)
print(f"The highest score in the class is: {max_score}")
print(f"The lowest score in the class is: {min_score}")
```

#Mission>> FizzBuzz!!
もっともよく出される問題ではないか？と思う。
3,5,15の割る数のうち最も大きな数を最初に持ってくることがポイント。
3や5で割り切れるものが先に読み込まれてしまうと、15に引っ掛けることができないので、値の大きいものからチェックする必要がある。今回は3と5は互いに素であるから簡単であるが、2と4や8と14などとなると、包含関係が出てきて、条件分岐がかなり複雑になるので注意。

```python
for x in range(1,101):
  if x %15 ==0:
    print("FizzBuzz!!")
  elif x %5 ==0:
    print("Buzz!")
  elif x %3 ==0:
    print("Fizz!")
  else:
    print(x)
print("Finish!!")

#出力結果
1
2
Fizz!
4
Buzz!
Fizz!
7
8
Fizz!
...
以下省略
...
FizzBuzz!!
```

#Mission>> Password generator
・指定条件がなかったため、.join()と.choices(a,k=個数)使用
・ .join()を使用して各々のlistで1つのlistにして、最後にそれぞれのlistを合体
・ 空リストにそれぞれの要素をfor文で回して追加し、リストを1つにまとめた
→ listから複数の要素をrandomで取り出す方法が分からなかったのでググったところ、.choice(a,k=個数)が使えそうだったので採用

```python
#example1
import random
letters =['a','b','c','d','e','f','A','B','C','D','E',]
numbers =['0','1','2','3','4','5','6','7','8','9']
symbols =['!','#','$','%','&','(',')','*','+']
print("Generate Password>> ")
nr_letters =int(input("How many letters would you like in your password?\n"))
nr_symbols =int(input(f"How many symbols would you like?\n"))
nr_numbers =int(input(f"How many numbers would you like?\n"))

s_letters =random.choices(letters,k=nr_letters)
s_symbols =random.choices(symbols,k=nr_symbols)
s_numbers =random.choices(numbers.k=nr_numbers)

password=""         #空文字列をつくっておく
for x in s_letters:
  password +=x
for y in s_symbols:
  password +=y
for z in s_numbers:
  password +=z
print(password)
#出力結果
How many letters would you like in your password?
5
How many symbols would you like?
3
How many numbers would you like?
1
(aB$&e5aAc
```
・選んだ要素を最終的に全てshuffleすることでpasswordを定める

```python
#example2
#上部は一緒。途中からこちらに切り替える

s_letters =random.choices(letters,k=nr_letters)
s_symbols =random.choices(letters,k=nr_symbols)
s_numbers =random.choices(letters,k=nr_symbols)

password =[]        #空リストを作っておく
for x in s_letters:
  password +=x
for y in s_symbols:
  password +=y
for z in s_numbers:
  password +=z

random.shuffle(password)     #ここでリスト内シャッフル！
print("".join(password))     #シャフル後リストを結合し、文字列として出力

#出力結果
How many letters would you like in your password?
2
How many symbols would you like?
3
How many numbers would you like?
1
(aB$&e5
```
listの追加には.append()を使っても良い。