请编写一个成绩转换程序。每次输入一个百分制的学生成绩,成绩大于或等于90且小于或等于100的输出为“A”,成绩大于或等于80且小于90的输出为“B”,成绩大于或等于70且小于80的输出为“C”,成绩大于或等于60且小于70的输出为“D”,成绩小于60的输出为“E”。
输入数据不合法(大于100或者小于0)时输出“data error!”。
可重复输入成绩进行转换,直接输入回车时结束程序
输入:
每次输入一个浮点数,代表百分制成绩;
重复输入,输入回车时结束程序
输出:
根据每一次的输入值分别输出A、B、C、D、E中的一个字母或"data error!"
while True :
score = input("请输入一个浮点数,代表百分制成绩:")
if score != ' ':
try:
score = eval(score)
if score >= 90 and score <= 100:
print("A")
elif score >= 80 and score <= 90:
print("B")
elif score >= 70 and score <= 80:
print("C")
elif score >= 60 and score <= 70:
print("D")
elif score > 0 and score < 60:
print("E")
else:
print("data error!")
except:
print("data error")
else:
break
运行结果是:
请输入一个浮点数,代表百分制成绩:90.9
A
请输入一个浮点数,代表百分制成绩:80.7
B
请输入一个浮点数,代表百分制成绩:70.5
C
请输入一个浮点数,代表百分制成绩:65.6
D
请输入一个浮点数,代表百分制成绩:59
E
请输入一个浮点数,代表百分制成绩:ddd
data error
请输入一个浮点数,代表百分制成绩:
历史上有许多计算圆周率Π的公式,其中,格雷戈里和莱布尼茨发现了下面的公式(可由等比数列求和公式变换并积分获得):
1 1 − 1 3 + 1 5 − 1 7 + ⋯ = π 4 \frac{1}{1}-\frac{1}{3}+\frac{1}{5}-\frac{1}{7}+\cdots=\frac{\pi}{4} 11−31+51−71+⋯=4π
这个公式累加1项是4.00,累加2项是2.67,累加3项是3.47…趋进于圆周率值。编程对其各项进行累加,直到最后一项的绝对值小于 1 0 − 6 10^{-6} 10−6为止,输出此时的圆周率值。
import math
sum = 0
fh = 1
fm = 1
i= 1
while math.fabs(4 / fm) > 0.000001:
sum += fh * 4 / fm
fh = fh * (-1)
fm = fm + 2
i += 1
print(f"累加次数为{i}")
print(f"Π的值为{sum}")
运行的结果是:
累加次数为2000001
Π的值为3.141592153589724
输出20000以内的所有回文素数。回文数是指正序和逆序均相同的数,例如131;素数是除了1和它本身不能被其他任何数整除的数 。提示:可以编写一个判断素数的函数方便书写程序。
def prime(n):
"""接收正整数n,判断是否为素数,返回布尔值"""
if n < 2:
return False # 0和1不是素数
for i in range(2, n): # 遍历(2, n-1)中的数
if n % i == 0: # 若在(2, n-1)中存在因子则不是素数
return False # 不是素数时返回False
else: # for语句遍历(2, n-1)中所有数,未发现因子存在时,才是素数
return True # 素数时返回True
for i in range(20000):
if str(i) == str(i)[::-1] and prime(i):
print(i,end=' ')
运行的结果是:
2 3 5 7 11 101 131 151 181 191 313 353 373 383 727 757 787 797 919 929 10301 10501 10601 11311 11411 12421 12721 12821 13331 13831 13931 14341 14741 15451 15551 16061 16361 16561 16661 17471 17971 18181 18481 19391 19891 19991
输入年/月/日(用斜杠分隔),输出该日期是这一年的第几天?(本题目保证测试使用的年、月、日都是合法输入)技巧提示:
map()函数可以将多个数据转换成指定数据类型
split()函数可以将字符串按照指定分隔符进行间隔并生成数据列表
a, b, c = map(int, input().split(“:”))
#上述语句可以将输入格式为 “12:30:05” 的字符串分解成[“12”, “30”, “05”]
#并将列表中每个数据转换成整型数据并分别赋值给a,b,c三个变量
示例 1
输入: 2018/2/1 输出: 2018年2月1日是2018年第32天
import datetime
try:
year, month, day = map(int, input().split("/"))
target_day = datetime.date(year, month, day)
day_count = target_day-datetime.date(target_day.year - 1, 12, 31)
print(f"{year}年{month}月{day}日是{year}年第{day_count.days}天")
except:
print("请输入正确的年月日!")
运行的结果是:
2018/2/1
2018年2月1日是2018年第32天