---
# System prepended metadata

title: HW20_1
tags: [homework]

---

###### tags: `homework`
# HW20_1
```python=
def digit(a):
    while not a.isdigit():
        a = input("Enter again: ")
    else:
        return length(a)

def length(a):
    alist = list(a)
    while len(alist) != 8 or len(alist) != 11:
        a = input("Enter again: ")
        alist = list(a)
    else:
        return alist
        

birth = input("Please enter your birthday(ex: 20200310): ")

print(digit(birth))
```

11から13行目のあたりでなぜループが抜けられないのか教えてください
このループ処理では
もしリストの長さが8または11の時ループを抜けてalistを返す
というようにしたいのです


先生：
9行目を確認してみましょう。
日本語に訳すと：
- このループは「長さが８ではない」又は「長さが１１ではない」場合に成立する

この理屈で進めると、長さが8行に後者が成立し、長さが11行の場合に前者が成立してしまい、且「or」が掛けられているためどちらかが必ず成立してしまうことになってしまうので無限ループとなってしまっていますね。

「and」に変更すれば8や11の場合にループを抜けられるように調整できると思うので、試してみましょう。
