###### 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ではない」場合に成立する この理屈で進めると、長さが8行に後者が成立し、長さが11行の場合に前者が成立してしまい、且「or」が掛けられているためどちらかが必ず成立してしまうことになってしまうので無限ループとなってしまっていますね。 「and」に変更すれば8や11の場合にループを抜けられるように調整できると思うので、試してみましょう。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up