# if(論理演算子) - HomeWork
###### tags: `Python練習題目`
**例**:着ぐるみのバイトの求人には幾つの条件があります。特に着ぐるみ自体の大きさが決まっているので身長制限があります。とある会社の求人には、160センチ以下が好ましいと書いていて、もし153センチの杏奈が応募したら果たしてTrueなのかFalseなのか、プログラミングで出力してください。
```
杏奈の身長を表す変数を利用して比較してください
annaHigh = 153
```
:::info
code:
```python=
annaHigh = 153
print( annaHigh <= 160 )
```
答え:

:::
--------------------------------------------
## 問1:遊園地キャンペーン
**ディズ2ーランド**は5000年周年でキャンペーンを開催しています。
マイナンバーが「5000」という数字であれば、または50歳以上であれば無料で入場できます。
以下のお客様の個人情報を入力し、無料で入場できるかを判定しましょう
| 名前 | マイナンバー | 年齢 |
| -------- | -------- | -------- |
| Brian | 5002 | 25 |
| Vivian | 5000 | 20 |
| Sammer | 5003 | 85 |
```
**入力例1:**
お客様の名前:Brian
マイナンバー:5002
年齢:25
**出力例1:**
誠に残念ながらまた次回のキャンペーンで会いましょう。
-----------------
**入力例2:**
お客様の名前:Sammer
マイナンバー:5003
年齢:85
**出力例2:**
ディズ2ーを楽しんでください
```
:::info
code:
```python=
name=input("お客様の名前:")
num=int(input("マイナンバー:"))
age=int(input("年齢:"))
if num == 5000 or age >= 50:
print("ディズ2ーを楽しんでください")
else:
print("誠に残念ながらまた次回のキャンペーンで会いましょう。")
```
結果:

:::
## 問2:モンスターの進化
あなたの育成するモンスターは日々成長しています。
モンスターは成長すると進化をします。
モンスターがどのモンスターに進化するかは攻撃力、防御力、素早さの 3 つのパラメータによって決まります。
あなたのモンスターのパラメータを入力し、進化条件を満たしたら、進化先を出力してください。
(入力されるパラメータは、三つ合わせて300を超えません)
**進化先の必要条件一覧**
| 名前 | 攻撃力 | 防御力 | 素早さ |
| -------- | -------- | -------- | -------- |
| アルセーヌ | 150 | 100 | なし |
| だいそうじょ | 120未満 | なし | 180 |
| アリス | なし | 100未満 | 150未満 |
```
入力例1:
Please input ATK:180
Please input DEF:90
Please input SPEED:30
出力例1:
アリスに進化できます。
入力例2:
Please input ATK:70
Please input DEF:90
Please input SPEED:140
出力例2:
アリスに進化できます。
```
:::success
すみません、出力例1が間違っていました。
訂正いたしました。
**ヒント:**
「なし」というのは、「0」の意味ではなく**必要ない**という意味です!
4行目を例に挙げると、本当はATKが「150」以上並びにDEFが「100」以上であれば進化できるのに対し、今のコードはATKが「150」以上並びにDEFが「100」以上且つスピードが「0」でないとアルセーヌに進化できないことになっているので、もう少し考えてみましょう。
code:
```python=
ATK=int(input("Please input ATK:"))
DEF=int(input("Please input DEF:"))
SPEED=int(input("Please input SPEED:"))
if ATK >= 150 and DEF >= 100:
print("アルセーヌに進化できます。")
elif ATK < 120 and SPEED >= 180:
print("だいそうじょに進化できます。")
elif DEF < 100 and SPEED < 150:
print("アリスに進化できます。")
else:
print("no evolution")
```
結果:

:::
## 問3:発給要件
以下は資本主義至高の国「金国」のワーキングホリデービザの発給要件です。
* 18歳以上、25歳以下であること。もしくは、必要な資金(1000万円)をもっていること。
発給要件を満たしているかどうかを判断するプログラムを作成せよ。
**以下は申請者の一覧表:**
(申請者は全員すでに誕生日を迎えたとします。)
(2021年で年齢を算出してください。)
| 名前 | 生年月日 | 資金(万円)|
| -------- | -------- |--|
| Tom | 19930515 | 300 |
| Jerry | 20050826 | 40 |
| Baby | 20210628 | 4000 |
| Ellison | 19900313 | 4000 |
```
**入力例1:**
Please Enter username:Tom
Please Enter birthday:19930515
Please Enter your assets:300
**出力例1:**
1000万円があれば💛
**入力例2:**
Please Enter username:Jerry
Please Enter birthday:20050826
Please Enter your assets:40
**出力例2:**
大人になってからきてね
**入力例3:**
Please Enter username:Baby
Please Enter birthday:20210628
Please Enter your assets:4000
**出力例3:**
Babyウェルカムトゥようこそ!キーンコク!
```
:::info
code:
```python=
name=input("Please Enter username:")
birthday=int(input("Please Enter birthday:"))
assets=int(input("Please Enter your assets:"))
if birthday >= 19960101 and birthday < 20040101:
print("{}ウェルカムトゥようこそ!キーンコク!".format(name))
if assets >= 1000:
print("{}ウェルカムトゥようこそ!キーンコク!".format(name))
elif birthday < 19960101:
print("1000万円があれば💛")
elif birthday >= 20040101:
print("大人になってからきてね")
```
結果:

:::
## 問4:誕生日
Zëllerの公式を使うと、1582年10月15日以降の日付からの曜日が計算できます。
**公式は以下の通りです。**
weekday = (year + (year // 4) - (year // 100) + (year // 400) + ((13*month+8) // 5) + day) % 7
曜日は0が日曜、1が月曜、...、6が土曜となります。
**但し**、1月と2月はそれぞれ前の年の13月、14月として計算する必要があります。
例えば、2021年1月は、2020年13月として計算しなければなりません。
```
**入力例1:**
何年生まれ:1583
何月:01
何日:01
**出力例1:**
1583年1月1日土曜日です。
**入力例2:**
何年生まれ:1582
何月:10
何日:14
**出力例2:**
1582年10月15日以降の日付を入力してください
入力例3:
何年生まれ:2021
何月:7
何日:7
出力例3:
2021年7月7日は水曜日です。
```
:::success
12行までの処理は特に問題はありません!沒有問題!
但是,13行から判定はもう少し考える必要があります!
**ヒント:**
今の判定は入力した年が「1583」年以降であれば出力し、「1582」年以下であればメッセージが出ます。ですので、「1582年10月15日」を入力すると、曜日が正しくでません。
可是,我們的條件是「1582年10月15日」を含む以降の日つけであれば、計算可能、即ち1582/10/15以前の日つけ(例:1582/10/14、1582/10/13)は計算不能ということです。
**つまり**、入力した年が1582以下 and 入力した月が10以下 and 入力された日は~何々~だったら🙅なので、再想一下!!
code:
```python=
year=int(input("何年生まれ:"))
month=int(input("何月:"))
day=int(input("何日:"))
weekday = (year + (year // 4) - (year // 100) + (year // 400) + ((13*month+8) // 5) + day) % 7
if month == 1:
YEAR=int(year-1)
MONTH=13
weekday = (YEAR + (YEAR // 4) - (YEAR // 100) + (YEAR // 400) + ((13*MONTH+8) // 5) + day) % 7
if month == 2:
YEAR=int(year-1)
MONTH=14
weekday = (YEAR + (YEAR // 4) - (YEAR // 100) + (YEAR // 400) + ((13*MONTH+8) // 5) + day) % 7
if year <= 1582 and month <= 10 and day <= 14:
print("1582年10月15日以降の日付を入力してください")
elif year >= 1582 and weekday==0:
print("{}年{}月{}日日曜日です。".format(year,month,day))
elif year >= 1582 and weekday==1:
print("{}年{}月{}日月曜日です。".format(year,month,day))
elif year >= 1582 and weekday==2:
print("{}年{}月{}日火曜日です。".format(year,month,day))
elif year >= 1582 and weekday==3:
print("{}年{}月{}日水曜日です。".format(year,month,day))
elif year >= 1582 and weekday==4:
print("{}年{}月{}日木曜日です。".format(year,month,day))
elif year >= 1582 and weekday==5:
print("{}年{}月{}日金曜日です。".format(year,month,day))
elif year >= 1582 and weekday==6:
print("{}年{}月{}日土曜日です。".format(year,month,day))
```
結果:

:::
## 問5:三角形判断
次の条件を満たすプログラムを作成せよ。
1. ユーザーに3つの辺を入力させ、それらの辺で1つの三角形として成り立つかどうかを判断する事。
2. もし出来る場合は三角形の周りの長さの値を、出来ない場合は【Invalid】と表示する事。
3. プログラムは「and」や「or」を使う事
``
補足:三角形の判断方法 → 3つの内いずれ2つの辺の合計が残りの1つの辺より大きくなければならない。
``
### 入力と表示例:
```
**入力例1:**
Input a:4
Input b:5
Input c:6
**出力例1:**
15
**入力例2:**
Input a:1
Input b:2
Input c:6
**出力例2:**
Invalid
```
:::info
Code:
```python=
a=int(input("Input a:"))
b=int(input("Input b:"))
c=int(input("Input c:"))
if a+b > c and a+c > b and b+c > a:
print(a+b+c)
elif a+b < c or a+c < b or b+c < a:
print("Invalid")
```
結果:

:::
## スライドの練習1
:::info
code:
```python=
num=int(input("Input number:"))
if num%3==0 and num%5==0:
print(num,"is a multiple of 3 and 5.".)
else:
print(num,"is not a multiple of 3 and 5.")
```
結果:

:::
## スライドの練習2
:::info
code:
```python=
'''
num=int(input("input number:"))
if num==0 or num<=100:
print("score =",num)
else:
print("Enter a number from 0 to 100 in score.")
'''
#正しい答え
num=int(input("Input number:"))
if num<0 or num>100:
print("Enter a number from 0 to 100 in score.")
else:
print("score =",num)
```
結果:

:::
## スライドの練習3
:::info
code:
```python=
```
結果:
:::
## スライドの練習4
:::info
code:
```python=
```
結果:
:::