一部の判断ステートメントに関する Python のよくある質問

主にブランチ構造を検査します (if else elif の使用法)

質問: 5 つの質問をすると、友達の誕生日が何月何日かを知ることができます。各質問は、この日が 5 つの数字セットに該当するかどうかを尋ねます。

ここに画像の説明を挿入します

基本的な考え方*: 5 つの質問があり、ユーザーは答える必要があり、ユーザーはテーブルを観察する必要があり、出力は蓄積されます*

コードは以下のように表示されます。

set1 = "1\t3\t5\t7\n" \
       "9\t11\t13\t15\n" \
       "17\t19\t21\t23\n" \
       "25\t27\t29\t31\n"
set2 = "2\t3\t6\t7\n" \
       "10\t11\t14\t15\n" \
       "18\t19\t22\t23\n" \
       "26\t27\t30\t31\n"
set3 = "4\t5\t6\t7\n" \
       "12\t13\t14\t15\n" \
       "20\t21\t22\t23\n" \
       "28\t29\t30\t31\n"
set4 = "8\t9\t10\t11\n" \
       "12\t13\t14\t15\n" \
       "24\t25\t26\t27\n" \
       "28\t29\t30\t31\n"
set5 = "16\t17\t18\t19\n" \
       "20\t21\t22\t23\n" \
       "24\t25\t26\t27\n" \
       "28\t29\t30\t31\n"
day = 0 #定义一个初始值
print(set1)#输出表格供用户观察
print("上面set中有你生日那天吗??")#显示问题
choice = int(input("有请输入1 反之则输入2:"))
if choice == 1 : #如果回答的是1则会执行下一个程序,反正不予理睬
   day += 1 #在原基础上加 1
print(set2) 
print("上面set中有你生日那天吗??")
choice = int(input("有请输入1 反之则输入2:"))
if choice == 1 :
   day += 2
print(set3)
print("上面set中有你生日那天吗??")
choice = int(input("有请输入1 反之则输入2:"))
if choice == 1 :
   day += 4
print(set4)
print("上面set中有你生日那天吗??")
choice = int(input("有请输入1 反之则输入2:"))
if choice == 1 :
   day += 8
print(set5)
print("上面set中有你生日那天吗??")
choice = int(input("有请输入1 反之则输入2:"))
if choice == 1 :
   day += 16
if day ==0 :
   print("你骗人!!!玩我呢?")
else :
       print("你的生日在%d号!"%day)

出力スタイル:

ここに画像の説明を挿入します


トピック:ここに画像の説明を挿入します

質問を行うためのアイデア:

この種の設計範囲のデータを見た場合は、問題を解決するためにマルチブランチ (if else) 構造について考える方法を学ぶ必要があります。

コードは以下のように表示されます。

weight,height = eval(input("请输入您的体重和身高:"))
BMI = weight / (height**2)
if BMI < 18.5 :
	print("超轻")
elif 18.5 <= BMI < 25.0 :
    print("标准")
elif 25.0 <= BMI < 30.0 :
    print("超重")
else :
	 print("痴肥")

ここに画像の説明を挿入します
私はとても軽いので、もっと食べる必要があるようです!!!


質問: 年が 4 で割り切れるが 100 では割り切れない場合、または 400 で割り切れる場合、その年はうるう年です。

問題解決のアイデア: うるう年は、4 で割り切れて 100 で割り切れないか、または 400 で割り切れます。いずれにせよ、それらはすべて平年です。

コードは以下のように表示されます。

year = int(input("请输入一个年份:"))
if year % 4 == 0 and year % 100 != 0 :
	print("该年为闰年!")
elif year % 400 == 0 :
	print("该年为闰年!")
else :
	print("该年为平年!")

ここに画像の説明を挿入します


質問: 宝くじをプレイするためのプログラムを開発したいとします。プログラムは 2 桁の数字をランダムに生成し、ユーザーに 2 桁の数字の入力を促し、次のルールに基づいてユーザーがボーナスを獲得するかどうかを決定します。

(1) ユーザーが入力した数字がランダムに生成された数字とまったく同じである場合 (順序を含む)、ボーナスは 10,000 米ドルです。
(2) ユーザーが入力した数字がランダムに生成された数字と一致しない場合(注文を除く)、ボーナスは 3,000 ドルです。
(3) ユーザーが入力した番号とランダムに生成された番号が同じ桁の場合、ボーナスは 1,000 米ドルです。

アイデアのガイダンス: 数字は同じです、そのうちの 1 つが同じです、当選番号はランダムです。

コードは以下のように表示されます。

import random
a = random.randint(10,99)#定义电脑随机抽取10-99之间的数
numb = int(input("请输入一个两位数的数字:"))
b = numb % 10 #取个位的数
c = numb // 10 #取十位的数
d = a % 10 #取个位的数
e = a // 10 #取十位的数
if b == d and c == e :
      print("恭喜你中奖了,喜提10000美金!!!")
elif b == e and c ==d :
  	  print("恭喜你中奖了,喜提3000美金!!!")
elif b == d or b == e or c ==d or c == e :
  print("恭喜你中奖了,喜提1000美金!!!")
else :
	print("未中奖!")

ここに画像の説明を挿入します



トピック:ここに画像の説明を挿入します

コードは以下のように表示されます。

import math 
(a,b,c) = eval(input("请输入a,b,c的值:"))
v = b**2 - 4 * a * c
if v > 0 :
    r1 = ((-b) + math.sqrt(b**2 - 4 * a * c)) / (2 * a)
    r2 = ((-b) - math.sqrt(b**2 - 4 * a * c)) / (2 * a)
    print("该方程有两个解!")
    print("两个解分别为:r1 = %0.2f , r2 = %0.3f"%(r1,r2))
elif v == 0 :
    r = ((-b) + math.sqrt (b**2 - 4 * a * c)) / (2 * a)
    print("该方程只有一个解!")
    print("解为:r1 = r2 = %0.3f"%(r))
elif v < 0 :
    print ("该方程无解!!!")

ここに画像の説明を挿入します


トピック:ここに画像の説明を挿入します

アイデア: ブランチ構造を使用する

コードは以下のように表示されます。

(a,b,c,d,e,f) = eval(input("请分别输入a,b,c,d,e,f的值:"))
v = a * d - b * c
if v == 0 :
	print("The equation has no solution!!!")
else :
	x = (e * d - b * f) / (a * d - b * c)
	y = (a * f - e * c) / (a * d - b * c)
	print("X is %0.2f and Y is %0.2f"%(x,y))

ここに画像の説明を挿入します


質問: (将来のデータの検索) 今日が何曜日であるかを示す数字 (日曜日は 0、月曜日は 1、...、土曜日は 6) を入力するようユーザーに求めるプログラムを作成してください。また、ユーザーは今日から将来の日までの日数を入力するよう求められ、将来の日が何曜日であるかが表示されます。以下は実行例です。

ここに画像の説明を挿入します

コードは以下のように表示されます。

today = int(input("今天是星期几呀??(请输入1~7来表示)"))
b = int(input("请问你想知道几天后的星期数?"))
day = (today + b) % 7
if 1 <= day <= 7 :
	print("今天是星期%s,在过%s天就是星期%s了噢"%(today,b,day))
else :
	print("你别拿我不当人啊!!!我可聪明了!!!")

ここに画像の説明を挿入します


質問: (金融: 価格の比較) 米を購入すると、それが 2 つのパックで提供されていることがわかりました。これら 2 つのパッケージの価格を比較するプログラムを作成するとします。プログラムはユーザーに各荷物の重量と価格を入力するよう促し、より良い価格の荷物を表示します。以下は実行例です。

ここに画像の説明を挿入します
アイデア: 米 1 ポンドのコストを計算して比較します。

コードは以下のように表示されます。

(a,b) = eval(input("请输入A类大米的重量和价格"))
(c,d) = eval(input("请输入B类大米的重量和价格"))
if (b / a) > (d / c) :
    print("A类大米性价比更高噢!!!")
else :
	print("B类大米性价比更高噢!!!")

ここに画像の説明を挿入します


質問: (数値の検出) ユーザーに整数の入力を求めるプログラムを作成し、その数値が 5 と 6 の両方で割り切れるのか、5 と 6 で割り切れるのか、あるいはどちらか一方で割り切れるか (ただし、2 では割り切れない) を検出します。同時に)分割可能)。

コードは以下のように表示されます。

numb = int(input("请输入一个整数:"))
if numb % 5 == 0 and numb % 6 == 0 :
	print("该数能同时被5和6整除喔")
elif numb % 5 == 0 and numb % 6 != 0 :
	print("该数能被5整除,不能被6整除")
elif numb % 5 != 0 and numb % 6 == 0 :
	print("该数不能被5整除,能被6整除")
else :
	print("该数不能被5或者6整除")

ここに画像の説明を挿入します


トピック: (ゲーム: じゃんけん) 人気のじゃんけんゲームをプレイするプログラムを作成します。(ハサミは紙を切ることができ、石はハサミと衝突することができ、紙は石を包むことができます。)プログラムは、ハサミ、じゃんけん、紙を表す数字 0、1、または 2 をランダムに生成し、ユーザーに数字 0 を入力するよう求めます。 、1、または 2 を選択すると、ユーザーがコンピュータが勝ったか、負けたか、引き分けたかを示すメッセージが表示されます。以下は実行例です。

ここに画像の説明を挿入します

コードは以下のように表示されます。

import random
a = random.randint(0,2)#定义电脑随机抽取0-2之间的数
b = int(input("请出拳!用0,1,2代表剪刀石头布"))
if b > 2 or b < 0 :
	print("请读题后重新开始!")
elif a == b:
	print("平局再来一次呗!")
elif b - a == 1 or b - a == -2 :
	print("恭喜你赢得了比赛!")
elif b - a == -1 or b - a== 2 :
	print("你输了,下次加油噢!")

ここに画像の説明を挿入します



トピック: (金融問題: 為替) ユーザーに米ドルと人民元の間の為替レートを入力するよう求めるプログラムを作成します。ユーザーは、USD を RMB に変換する場合は 0 を入力し、RMB を USD に変換する場合は 1 を入力するように求められます。ユーザーは、ドル金額または人民元金額を入力して、それぞれ RMB または USD に変換するように求められます。以下にいくつかの実行例を示します。

ここに画像の説明を挿入します

コードは以下のように表示されます。

lv = float(input("请输入人民币与美元之间的汇率"))
choose = int(input("请选择:0为转人民币,1为转美元"))
money = float(input("请输入相应的钱"))
if choose == 1 :
    a = money / lv
    print("%s人民币对应的美元为%s"%(money,a))
elif choose == 0 :
	b = money * lv
	print("%s美元对应的人民币为%s"%(money,b))

ここに画像の説明を挿入します


質問: (三角形の周囲長を計算します) 三角形の 3 辺を読み取り、入力がすべて正しい場合にその周囲長を計算するプログラムを作成してください。それ以外の場合、この入力を表示することは不正です。2 つの辺の合計が 3 番目の辺よりも大きい場合、敗者が合法となります。以下は実行例です。

コードは以下のように表示されます。

(a,b,c) = eval(input("请输入三角形的三边:"))
if (a + b) > c and (a + c) > b and (c + b) > a :
    C = a + b + c
    print("该三角形的周长为%s"%(C))
else :
    print("该三角形不存在")

ここに画像の説明を挿入します


トピック:

ここに画像の説明を挿入します

コードは以下のように表示されます。

(year,mouth,q) = eval(input("请输入某年,某月,某日 "))
if mouth == 1 or mouth == 2 :
   m = mouth + 12
   year -= 1
else :
   m = mouth
   year = year
j = year // 100
k = year % 100
h = (q + ((26 * (m + 1))//10) + k + k // 4 + j // 4 + 5 * j) % 7
if h == 0:
    print("该日子对应的是星期六")
elif h == 1:
	print("该日子对应的是星期天")
elif h == 2:
	print("该日子对应的是星期一")
elif h == 3:
	print("该日子对应的是星期二")
elif h == 4:
	print("该日子对应的是星期三")
elif h == 5:
	print("该日子对应的是星期四")
elif h == 6:
	print("该日子对应的是星期五")

ここに画像の説明を挿入します


トピック:

ここに画像の説明を挿入します

コードは以下のように表示されます。

import math
(x,y) = eval(input("请输入点的坐标:"))
R = math.sqrt((x**2) + (y**2))# 两点之间的距离公式
if R < 10 :
	print("该点在圆内")
elif R == 10 :
	print("该点在圆上")
else :
	print("该点在圆外")

ここに画像の説明を挿入します


トピック:

ここに画像の説明を挿入します

コードは以下のように表示されます。

(x , y )= eval(input("请输入x , y: "))
if -(10/2) <= x <= 10/2 and -(5/2)<= y <= 5/2:#注意考虑四个象线的坐标
	print("该点在该矩形中")
else :
	print("该点不在该矩形中")

ここに画像の説明を挿入します

トピック: (回文番号) ユーザーに 3 桁の整数の入力を促し、それが回文番号であるかどうかを判断するプログラムを作成します。数値を左から右に読んでも、右から左に読んでも同じである場合、その数値は回文です。

要点: 3 桁に関する問題ですが、回文数字の場合、1 桁目と 2 桁目は同じでなければならず、1 桁目と 3 桁目もすべて同じでなければなりません。

コードは以下のように表示されます。

numb = int(input("请输入一个三位整数为:"))
a = numb // 100
b = numb % 10
if a == b :
	print("该数为回文数!")
else :
	print("该数不是回文数!")

ここに画像の説明を挿入します


質問: (幾何学の問題: 点は三角形の内側にありますか?) 下の図に示すように、水平面上に直角三角形が配置されているとします。直角の点は (0,0) にあり、他の 2 つの点は (200,0) と (0,100) にあります。x 座標と y 座標を含む点の入力をユーザーに要求し、その点が三角形内にあるかどうかを判断するプログラムを作成します。

ここに画像の説明を挿入します

基本的な考え方: 条件を制御し、質問を簡素化するために、1 つの画像行、3 つの画像行、4 つの画像行などのいくつかの条件を制限します。

コードは以下のように表示されます。

(x,y) = eval(input("请输入该点的坐标:"))
k1 = 100 / 200 #通过斜率的大小来判断,
if 0 <= x <= 200 and 0 <= y <= 100 :
	k = y / x 
	if k > k1 :
		print("该点不在三角形里面")
	else :
		print("该点在三角形里面")
else :
	print("该点不在三角形里面")


ここに画像の説明を挿入します


タイトル: (幾何学問題: 2 つの円) 2 つの円の中心の座標とその半径を入力するようユーザーに要求し、2 番目の円が最初の円内にあるか、最初の円と重なっているかを判断するプログラムを作成します。 、図 4-11 に示すように。(ヒント: 2 つの中心間の距離が ≤|rl- r2| の場合、circle2 はcircle1 内にあります。2 つの中心間の距離が ≤rl1+r2 の場合、circle2 はcircle1 と重なります。すべての状況をカバーするようにプログラムをテストします。 。)

ここに画像の説明を挿入します

コードは以下のように表示されます。

import math
(x1,y1,r1) = eval(input("请分别输入第一个圆的坐标和半径"))
(x2,y2,r2) = eval(input("请分别输入第二个圆的坐标和半径"))
a = math.sqrt((x1 - x2)**2 + (y1 - y2)**2)
if abs(r1 - r2) < a <(r1 + r2) :#abs是绝对值的意思
   print("两圆的位置关系是香蕉")
elif a < abs(r1 - r2) :
	print("两圆的位置关系是包含")
elif a == abs(r1 - r2) :
    print("两圆的位置关系是内切")
elif a == abs(r1 + r2) : 
	print("两圆的位置关系是外切")
else :
	print("两圆的位置关系是相离")

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/Zombie_QP/article/details/124025903