python_2
- 知识
- 习题
- 7-1 人民币与美元汇率兑换程序 (10 分)
- 7-2 骑车还是走路? (15 分)
- 7-3 虫子吃苹果 (10 分)
- 7-4 直角三角形面积 (10 分)
- 7-5 昨天 (10 分)
- 7-6 sdut-sel-10 直角坐标系象限判断 (10 分)
- 7-7 sdut-分段计算居民水费 (10 分)
- 7-8 印第安男孩 - 实验4 条件与分支 -《Python编程实验》 (10 分)
- 7-10 象限判定 - 实验4 条件与分支 -《Python编程实验》 (10 分)
- 总结
知识
习题
7-1 人民币与美元汇率兑换程序 (10 分)
设计人民币与美元汇率兑换程序,按照1美元=7人民币的汇率 编写一个双向兑换程序。
输入格式:
输入美元或者人民币的金额,币种在前,金额在后,如:$20、¥100。每次输入一个金额。
输出格式:
输出经过汇率计算的美元或人民币的金额,格式与输入一样,结果保留两位小数。
输入样例1:
$20
结尾无空行
输出样例1:
¥140.00
结尾无空行
输入样例2:
¥100
结尾无空行
输出样例2:
$14.29
结尾无空行
输入样例3:
#120
结尾无空行
输出样例3:
输入格式错误
结尾无空行
仅供参考
str=input()
ch=str[0]
list=list(str)
list.pop(0)
sep=""
str1=sep.join(list)
num=eval(str1)
if(ch=='$'):
n=num*7
print("¥%.2f"%n,end="")
elif(ch=='¥'):
n=num/7
print("$%.2f"%n,end="")
else:
print("输入格式错误",sep='')
7-2 骑车还是走路? (15 分)
在校园里,没有自行车,上课办事会很不方便。但实际上,并非去办任何事情都是骑车快。因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间。假设找到自行车,开锁并骑上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。 编写程序判断走不同的距离去办事,是骑车快还是走路快。
输入格式:
输入一个数,表示距离
输出格式:
如果输入的距离骑车快,输出"Bike";如果是走路快,输出"Walk";如果一样快,输出"All"。
输入样例:
120
结尾无空行
输出样例:
Bike
结尾无空行
仅供参考
s=eval (input())
BikeTime=27+23+s/3.0
WalkTime=s/1.2
if BikeTime>WalkTime:
print("Walk",end="")
elif BikeTime<WalkTime:
print("Bike",end="")
elif BikeTime==WalkTime:
print("All",end="")
7-3 虫子吃苹果 (10 分)
:
在同一行输入n、x和y,以逗号隔开
输出格式:
还剩下完整的苹果个数
输入样例:
以下输入表示:一箱10个苹果,虫子每4个小时吃一个苹果,经过9小时
10,4,9
结尾无空行
输出样例:
以下输出表示:还剩下几个完整的苹果?
7
仅供参考
n,x,y=eval(input())
s1=y//x
s2=y/x
if s1!=s2:
s1+=1
y=n-s1
print(y,end="")
7-4 直角三角形面积 (10 分)
已知直角三角形的三边长,求该直角三角形的面积。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组数据输入3个整数a,b,c,代表直角三角形的三边长。
输出格式:
对于每组测试输出一行,包含一个整数,表示直角三角形面积。
输入样例:
2
3 4 5
3 5 4
输出样例:
6
6
仅供参考
n=eval(input())
S=[]
for j in range(n):
s=1
x,y,z=map(int,input().split())
if x>y and x>z:
s=int(y*z/2)
elif y>x and y>z:
s=int(x*z/2)
elif z>x and z>y:
s=int(x*y/2)
S.append(s)
for i in S:
# if i==S[-1]:
# print(i,end='')
# else :
print(i)
7-5 昨天 (10 分)
1天操作,即求在输入日期的基础上减去1天后的结果日期。 例如:日期为2019-10-01,减去1天,则结果日期为2019-09-30。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入1个日期,日期形式为“yyyy-mm-dd”。保证输入的日期合法,而且输入的日期和计算结果都在[1000-01-01,9999-12-31]范围内。
输出格式:
对于每组测试,在一行上以“yyyy-mm-dd”的形式输出结果。
输入样例:
1
2019-10-01
输出样例:
2019-09-30
仅供参考
可以通过的简介代码,日期不合法的情况没有考虑
T = eval(input())
for i in range(T):
str = input()
list = str.split(sep='-')
y = int(list[0])
m = int(list[1])
d = int(list[2])
r = 0
#判断是否闰年
if ((y % 4 == 0 and y % 100 != 0) or y % 400 == 0):
r = 1
d -= 1
# 跨月
if d == 0:
m -= 1
if m > 0 and m < 7:
if m % 2 == 1:
d = 31
else:
if m == 2:
if r == 1:
d = 29
else:
d = 28
else:
d = 30
else:
if m % 2 == 0:
d = 31
else:
d = 30
# 跨年
if m==0:
m=12
y-=1
print("%d-%02d-%02d"%(y,m,d))
完整代码,考虑日期不合法的情况
T = eval(input())
for i in range(T):
str = input()
list = str.split(sep='-')
y = int(list[0])
m = int(list[1])
d = int(list[2])
if y<1000 or y>9999 or m<1 or m>12 or d<1 or d>31:
print("日期不合法")
break
r = 0
#判断是否闰年
if ((y % 4 == 0 and y % 100 != 0) or y % 400 == 0):
r = 1
if m > 0 and m < 7:
if m % 2 == 0:
if d>30:
print("日期不合法")
break
if m == 2:
if r == 1:
if d>29:
print("日期不合法")
break
else:
if d>28:
print("日期不合法")
break
else:
if m % 2 == 1:
if d>30:
print("日期不合法")
break
# 昨天
d -= 1
# 跨月
if d == 0:
m -= 1
if m > 0 and m < 7:
if m % 2 == 1:
d = 31
else:
if m == 2:
if r == 1:
d = 29
else:
d = 28
else:
d = 30
else:
if m % 2 == 0:
d = 31
else:
d = 30
# 跨年
if m==0:
m=12
y-=1
print("%d-%02d-%02d"%(y,m,d))
7-6 sdut-sel-10 直角坐标系象限判断 (10 分)
X是一个喜欢数学的小孩,现在刚刚学了坐标系。象限划分示意图如下:
他想知道点(X,Y)在第几象限内。输入数据保证点不在坐标轴及原点上。
输入格式:
多组输入。
每组输入两个整数X,Y,代表点(X,Y),中间用空格隔开。
输出格式:
输出一个整数代表点在第几象限内。
输入样例:
在这里给出一组输入。例如:
2 3
-2 -3
输出样例:
在这里给出相应的输出。例如:
1
3
结尾无空行
仅供参考
n=[]
while True:
try:
x,y=map(int,input().split())
if x>0:
if y>0:
n.append(1)
elif y<0:
n.append(4)
elif x<0:
if y>0:
n.append(2)
elif y<0:
n.append(3)
except:
break
for i in range(len(n)):
if i==len(n)-1:
print(n[i],end='')
else :
print(n[i])
7-7 sdut-分段计算居民水费 (10 分)
为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关,请编写程序实现水费的计算。
(1)当x不超过15吨时,y=4x/3;
(2)超过后,y=2.5x−17.5。
输入格式:
在一行中给出非负实数x。
输出格式:
在一行输出应交的水费,精确到小数点后2位。
输入样例1:
12
结尾无空行
输出样例1:
16.00
结尾无空行
输入样例2:
16
结尾无空行
输出样例2:
22.50
结尾无空行
仅供参考
x=eval(input())
if x<=15:
y=4*x/3
else:
y=2.5*x-17.5
print("%.2f"%y,end='')
7-8 印第安男孩 - 实验4 条件与分支 -《Python编程实验》 (10 分)
朵拉编程的时候也想顺便练习英语。她编程从键盘读入一个整数n,如果n值为0或者1,向屏幕输出“0 indian boy.”或“1 indian boy.”;如果n大于1,比如9,则输出“9 indian boys.”。请你也编一个这样的程序。
输入格式:
整数n
输出格式:
见题干描述
输入样例:
9
结尾无空行
输出样例:
9 indian boys.
结尾无空行
仅供参考
n=eval(input())
if n==0 or n==1:
print(n,"indian boy.",sep=" ",end="")
else:
print(n,"indian boys.",sep=" ",end="")
7-9 超速罚款 - 实验4 条件与分支 -《Python编程实验》 (10 分)
开车超速是要罚款的,某国相应法律如下:
情况 处罚
车速 ≤ 限速 程序输出:未超速
超速比 ≤ 10% 程序输出:超速警告
10% <超速比≤ 20% 程序输出:罚款100元
20% <超速比≤ 50% 程序输出:罚款500元
50% <超速比≤ 100% 程序输出:罚款1000元
超速比 > 100% 程序输出:罚款2000元
请编写程序,程序从输入的第1行读取车速(整数),从输入的第2行读取限速值(整数),然后使用条件分支语句进行判断,输出如表所示的处罚结论。
输入格式:
车速
限速值
输出格式:
如表所示的处罚结论
输入样例:
149
100
结尾无空行
输出样例:
罚款500元
结尾无空行
仅供参考
v=eval(input())
vl=eval(input())
if v<=vl:
print("未超速")
else:
b=(v-vl)/vl
if b<=0.1:
print("超速警告",end='')
elif b<=0.2:
print("罚款100元",end='')
elif b<=0.5:
print("罚款500元",end='')
elif b<=1:
print("罚款1000元",end='')
elif b>1:
print("罚款2000元",end='')
7-10 象限判定 - 实验4 条件与分支 -《Python编程实验》 (10 分)
45.png [平面坐标系象限图]
请编程实现下述功能:
使用代码x,y = eval(input())从键盘读入不为零的两个坐标值(浮点数);注意两个坐标值应使用英文逗号分隔;
结合上图,判定点(x,y)所在的象限。
说明:程序约定x和y值不为0。
输入格式:
x,y
输出格式:
第1象限 或 第2象限 或 第3象限 或 第4象限
输入样例:
15.2,-11.3
结尾无空行
输出样例:
第4象限
结尾无空行
仅供参考
x,y = eval(input())
if x>0:
if y>0:
n=1
elif y<0:
n=4
elif x<0:
if y>0:
n=2
elif y<0:
n=3
print("第"+str(n)+"象限",end='')
总结
- 条件语句
if xxx:
x
elif yyy:
- 多个输入
# 10,4,9
n,x,y=eval(input())
# 3 4 5
x,y,z=map(int,input().split())
- 结尾无空行
for i in range(len(n)):
if i==len(n)-1:
print(n[i],end='')
else :
print(n[i])