1.你可以通过询问5个问题来找出你朋友的生日在-一个月中的哪天。每个问题都在询问这一天是否在5个数字集中。
生日就是出现这个数字的集合的第- L 个数字的和,例如:如果生日是19,那它就会在setl. set2和set5中出现。这三个集合的第一个数字分别是1.2. 16。它们加起来的和就是19。
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)
choice = input("在上表中是否有你的生日号(y/n):")
if choice == "y" :
day +=1
print(set2)
choice = input("在上表中是否有你的生日号(y/n):")
if choice == "y" :
day +=2
print(set3)
choice = input("在上表中是否有你的生日号(y/n):")
if choice == "y" :
day +=4
print(set4)
choice = input("在上表中是否有你的生日号(y/n):")
if choice == "y" :
day +=8
print(set5)
choice = input("在上表中是否有你的生日号(y/n):")
if choice == "y" :
day +=16
if day == 0 :
print("你是不是有点大病?")
else :
print("你的生日号为%d!"%day)
运行结果:
2.BMI是根据体重测量健康的方式。通过以千克为单位的体重除以以米为单位的身高的平方计算出BMI。下面是16 岁以上人群的BMI图表:
编写一个程序,提示用户输人以磅为单位的体重和以英寸为单位的身高,然后显示BMI值。注意: 1磅是0.453592 37千克而1英寸是0.0254米。程序清单4-6给出这个程序。
运行结果:
3.一个年份如果能被4整除但不能被100 整除,或能被400整除,那么这个年份就是闰年。
运行结果:
4.假设你想开发- -个玩彩票的程序。程序随机产生一个两位数的数字,然后提示用户输人一个两位数的数字,并根据以下规则判定用户是否赢得奖金。
1 )如果用户输人的数字和随机产生的数字完全相同(包括顺序),则奖金为10000美元。
2)如果用户输人的数字和随机产生的数字相同(不包括顺序),则奖金为3000美元。
3)如果用户输人的数字和随机产生的数字有一-位数相同,则奖金为1000美元。
5.(代数方面:解一元二次方程)例如: ax^2+ bx+c=0的平方根可以使用下面的公式获取。
b^2 - 4ac被称为二次方程的判别式。如果它为正,那么方程有两个实根。如果它为零,那么方程有一个根。如果它为负,那么方程没有实根。
编写程序,提示用户输人a、b和c的值,然后显示判别式的结果。如果判别式为正,则显示两个根。如果判别式为零,则显示一个根。否则,显示“The equation has no real roots"。
运行结果:
6.(代数:解2x2线性方程)你可以使用克莱姆法则解下面的线性方程2x2系统:
编写程序,提示用户输人a、b、c、d、e和f,然后显示结果。如果ad-bc为零,呈现“Theequation has no solution"。
运行结果:
7.(找未来数据)编写程序提示用户输人表示今天是一-周内哪一- 天的数字(星期天是0,星期一是1,…星期六是6)。还要提示用户输人今天之后到未来某天的天数,然后显示未来这天是星期几。
运行结果:
8.(金融方面:比较价钱)假设你购买大米时发现它有两种包装。你会想编写-一个程序比较这两种包装的价钱。程序提示用户输人每种包装的重量和价钱,然后显示价钱更好的那种包装。
运行结果:
9.(检测-一个数字)编写一个程序提示用户输人-一个整数,然后检测该数字是否能被5和6都整除、能被5或6整除还是只被它们中的-一个整除(但又不能被它们同时整除)。
运行结果:
10.(游戏:剪刀、石头、布)编写程序来玩流行的剪刀-石头一布的游戏。(剪刀可以剪纸,石头可以磕碰剪刀,而布可以包裹石头。)程序随机产生-一个数字0、1或2来表示剪刀、石头和布。程序提示用户输人数字0、1 或2然后显示一条消息表示用户或计算机是赢、输还是平局。
运行结果:
11.(金融问题:货币对换)编写一个程序提示用户输人美元和人民币之间的货币汇率。提示用户输人0表示将美元转换为人民币而1表示将人民币转换为美元。提示用户输人美元数或人民币数将它分别转换为人民币或美元。
运行结果:
12.(计算三角形的周长)编写程序读取三角形的三个边,如果输入都是合法的则计算它的周长。否则,显示这个输入是非法的。如果两边之和大于第三边则输入都是合法的。
运行结果:
13.(科学问题: - .周的星期几)泽勒的一- 致性是一个由泽勒开发的算法,用于计算- -周的星期几。这个公式是
●这里的h是指一-周的星期几(0:星期六; 1:星期天; 2:星期一; 3:星期二; 4:星期三; 5:星期四; 6:星期五)。
●q是一个月的哪- -天。
●m是月份(3:三月; 4:四月; .; 12:十二月)。一月和二月都是按照前一年的13月和14月来计数的。
●j是世纪数(即|year/100|)。
●k是一个世纪的某一年(即year % 100 )。
编写程序提示用户输人一个年份、月份以及这个月的某天,然后它会显示它是一周的星期几。
下面是一些事例运行。
(提示: [nJ=n//I其中n是一个正数。 一月和二月在公式中是以13 和14来计算的,所以你需要将用户输人的月份1转换为13和将用户输人的2转换为14, 将它们的年份改变为前一-年。)
运行结果:
14.(几何问题:点在圆内吗? )编写一个程序提示用户输入一个点(x,y),然后检测这个点是否在圆心为(0,0)半径为10 的圆内。例如:点(4,5)在圆内而(9,9)在圆外,如图4-8a所示。
(提示:如果一个点到(0,0)之间的距离小于或等于10,那它就在圆内。计算距离的公式是:
测试你的程序考虑所有的情况)。下面是两个示例运行。
运行结果:
15.(几何问题:点在矩形内吗? )编写程序提示用户输人点(x,y),然后检测这个点是否在以(0,0)为中心而宽为10高为5的矩形内。例如: (2,2) 在矩形内而(6,4)在矩形外,如图4-8b 所示。(提示:如果一个点到(0,0)的水平距离小于或等于10/2而到(0,0)的垂直距离小于或等于5.0/2。测试你的程序覆盖所有的情况。)下面是两个示例运行。.
运行结果:
16.(回文数)编写程序提示用户输入一个三位整数,然后决定它是否是一一个回文数。如果一个数从左向右和从右向左读取时是-样的,那么这个数就是回文数。下面是这个程序的示例运行。
运行结果:
17.(几何问题:点在三角形内吗? )假设-一个直角三角形被放在一个水平面上,如下图所示。直角点是在(0,0)而另外两个点在(200,0)和(0,100)处。编写程序提示用户输入一个带x坐标和y坐标的点,然后决定这个点是否在三角形内。下面是一些示例运行。
运行结果:
18.(几何问题:两个圆)编写程序提示用户输人两个圆的中心的坐标以及它们的半径,然后判断第二个圆是在第—个圆内还是和第一个圆有重叠部分,如图4-11所示。(提示:如果两个中心的距离≤|r1 - r2|那么circle2在circlel内,如果两个中心的距离≤r1 + r2那么circle2是和circlel有重叠的。测试你的程序覆盖所有的情况。)
运行结果: