制作不易点点赞吧家人们
屋檐脚下 排着乌鸦 密密麻麻,被压抑的情绪不知如何表达
输入一个表达式字符串,计算其结果
输入格式:
输出格式:
输出计算结果,结果保留2位小数。对于异常数据能输出相应异常信息。
输入样例1:
4
1+1
56-23
5/3
5*3.5
输出样例1:
2.00
33.00
1.67
17.50
输入样例2:
3
ab+23
2/0
23+36f
输出样例2:
NameError
ZeroDivisionError
SyntaxError
count = int(input())
for i in range(count):
try:
equation=eval(input())
except NameError:
print("NameError")
except ZeroDivisionError:
print("ZeroDivisionError")
except SyntaxError:
print("SyntaxError")
else:
print("%.2f"%equation)
输入一个年份,判断其是否为闰年。
判断闰年的标准:能被4整除但不能被100整除,或者能被400整除的年份是闰年。
输入格式:
直接输入一个4位数年份,没有其它任何附加字符。
输出格式:
输出year是闰年
或者year不是闰年
输入样例:
1900
输出样例:
1900不是闰年
输入样例:
1904
输出样例:
1904是闰年
输入样例:
2000
输出样例:
2000是闰年
years = int(input())
if(years%4==0 and years%100!=0):
print("{}是闰年".format(years))
elif(years%400==0):
print("{}是闰年".format(years))
else:
print("{}不是闰年".format(years))
输入一个数,判断其是否素数。素数是大于1的自然数中,除了1和它本身以外不再有其他因数。
输入格式:
输入一个整数
输出格式:
输出是否素数。
输入样例:
12
输出样例:
12 is not prime
输入样例:
7
输出样例:
7 is prime
# # 16 ms
count=int(input())
# 素数判断
flag = 0
if count<=1:
print("{} is not prime".format(count))
else:
for i in range(2,count):
if count%i==0:
flag = 1
print("{} is not prime".format(count))
break
if flag == 0:
print("{} is prime".format(count))
# 偶数都不是素数判断一半,奇数无偶数因数可以再少一半 15 ms
#时间复杂度减半为啥还就快了1ms 难道空间复杂度加倍了吗?????
count=int(input())
flag = 0
if count == 2:
print("{} is prime".format(count))
elif count % 2 == 0 or count<=1:
print("{} is not prime".format(count))
else:
for i in range(3,int(count ** 0.5)+1,2):
if count % i == 0:
print("{} is not prime".format(count))
flag = 1
break
if flag == 0:
print("{} is prime".format(count))
输入一个字符串及字符,输出第一次出现该字符的位置。
输入格式:
输出格式:
index=X
的, X
表示查找到位置can't find letter X
, X
表示查找字符输入样例:
python
t
输出样例:
index=3
输入样例:
python
l
输出样例:
can't find letter l
words = list(input())
letter = input()
times = 0
flag = 0
for i in words:
times += 1;
if i == letter:
flag = 1;
print(f"index={times}")
break
if flag == 0:
print(f"can't find letter {letter}")
尝试使用蒙特卡罗法计算圆周率(π)的值。原理如下:
如图:边长为1的正方形内部有一个半径为1的四分之一个圆。
现往该正方形内随机投点,数量足够多的情况下,落入圆内的点m与落入整个
外切正方形的点n的数量比值大概为:
m/n = (1/4)pi ,然后就可以得到π的值。
让点(x,y)投在整个矩形中,x与y的取值范围为(0≤x≤1, 0≤y≤1)
注意
1.请使用random库中的uniform来生成随机数。
2.使用运算符x*x求x的平方。
3.使用x**(1/2)求x的平方根。
输入格式:
在一行中给出种子和投点次数,中间以空格隔开。
输出格式:
对每一组输入,在一行中输出pi的值,并保留五位小数。
输入样例:
在这里给出一组输入。例如:
2 10000
输出样例:
在这里给出相应的输出。例如:
3.13560
# 引入库
import random
# n 为外切正方形中数量
# m 为圆内数量
n = 0
m = 0
theSeed,n = map(int,input().split())
# 引入种子使用 random.seed() 以便确定同种子生成相同数据
random.seed(theSeed)
# 生成数据,面积法判断是否圆内
for i in range(n):
x = random.uniform(0,1)
y = random.uniform(0,1)
if (y * y + x * x) ** 0.5 < 1:
m += 1
# 计算π
Pi = 4*(m/n)
print("%.5f"%Pi,end="")
根据输入的开学日期和当前的日期,判断当前日期是本学期的第几周的星期几。
输入格式:
在第一行中给出开学日期,年月日中间用‘-’隔开
在第二行中给出当前的日期,年月日中间用‘-’隔开
输出格式:
对每一组输入,在一行中输出‘今天是本学期的第m周的第n天’。
输入样例:
在这里给出一组输入。例如:
2022-2-28
2022-3-6
输出样例:
在这里给出相应的输出。例如:
今天是本学期的第1周的第7天
import datetime
import time
openingDate = input()
nowDate = input()
openingDate = time.strptime(openingDate, "%Y-%m-%d")
nowDate = time.strptime(nowDate, "%Y-%m-%d")
openingDate = datetime.datetime(openingDate[0], openingDate[1], openingDate[2])
nowDate = datetime.datetime(nowDate[0], nowDate[1], nowDate[2])
Expenses_days = nowDate-openingDate
weeks = (Expenses_days.days+7) / 7
# print(Expenses_days.days,int(weeks))
days = int((Expenses_days.days%7)+1)
print('今天是本学期的第{}周的第{}天'.format(int(weeks),days),end="")
中国选手与日本选手进行乒乓球比赛,每局先得11分者赢得此局,整个比赛5局3胜,
假设中国选手每一分获胜的概率为m,(含m,m<1)。
请模拟比赛过程,并输出各队获胜情况。
请注意:
请使用random库中的random模拟胜率
输入格式:
请在第一行输入整数随机种子。
请在第二行输入中国对获胜的概率(大于0小于1的数)
请在第三行输入要模拟的比赛次数
输出格式:
对每一组输入,根据模拟结果在一行中输出:
Chinese team:m,Japanese team:n。
输入样例:
在这里给出一组输入。例如:
3
0.6
100
输出样例:
在这里给出相应的输出。例如:
Chinese team:98,Japanese team:2
# 此题个人理解有偏差,应该计算每一次比赛中小得分和五局三胜的问题,所以应复写代码以下代码为错误前留档。
# import random
# theSeed = int(input())
# odds = eval(input())
# times = int(input())
# winCount = 0
# # 种子输入
# random.seed(theSeed)
# # random():返回随机生成的一个实数,它在[0,1)范围内。
# # 可以使用数轴思路,生成随机数与胜率比较,比胜率低中国赢,比胜率高日本赢
# for i in range(times):
# randomCount = random.random()
# if randomCount <= odds:
# winCount += 1
# # 结果
# loseCount = times-winCount
# print(f"Chinese team:{winCount},Japanese team:{loseCount}")
import random
theSeed = int(input())
odds = eval(input())
times = int(input())
# 大局中国队获胜分数。
CHWinCount = 0
# 大局日本队获胜分数。
JPWinCount = 0
# 种子输入。
random.seed(theSeed)
# random():返回随机生成的一个实数,它在[0,1)范围内。
for i in range(times):
# 小局中国队获胜次数。
ChGameWinCount = 0
# 小局日本队获胜次数。
JPGameWinCount = 0
# 中国队小局内分数。
CHCount = 0
# 日本队小局内分数。
JPCount = 0
# 进入小局模拟循环 五局三胜
while ChGameWinCount != 3 and JPGameWinCount != 3:
# 需要把随机数拿出来算,其实放下面直接判断也没事,但是这样效率高。
# random():返回随机生成的一个实数,它在[0,1)范围内。 --来自菜鸟教程
Count = random.random();
# 这一行是复杂判断,根据顺序意思为: 中国队11分且不存在局点 or 日本队11分且不存在局点 or 在局点但是有一队分数超过对方两分。
# 补充说明: 乒乓球规则中 11分取胜,但是如果双方都是10分的情况下进入局点,只有连续获得两分的队伍才能取胜。
# Eg:中国队10:10日本队 -> 中国队11:10日本队 -> 中国队11:11日本队 -> 中国队12:11日本队 -> 中国队13:11日本队 -> 中国队胜利
# 所以有必要进行最后的判断,但是不确定是否在得分中。
if (CHCount == 11 and CHCount - JPCount >= 2) or (JPCount == 11 and JPCount - CHCount >= 2) or (
CHCount > 11 and JPCount > 11 and (CHCount > JPCount or CHCount < JPCount)):
# 显而易见的是谁分高谁胜场加一,记得将比分归零,防止影响下一场比赛
if CHCount > JPCount:
ChGameWinCount += 1
CHCount = 0
JPCount = 0
else:
JPGameWinCount += 1
CHCount = 0
JPCount = 0
# 不在获胜条件下,使用数轴思想,输入的胜率就可以与随机数比较,比胜率高那对方得分,比胜利低则我方得分。
elif Count <= odds:
CHCount += 1
elif Count > odds:
JPCount += 1
# 判断是否大局获胜 获胜加一大分,记得清空比赛小分
if ChGameWinCount == 3:
CHWinCount += 1;
ChGameWinCount = 0;
JPGameWinCount = 0;
else:
JPWinCount += 1;
ChGameWinCount = 0;
JPGameWinCount = 0;
print(f"Chinese team:{CHWinCount},Japanese team:{JPWinCount}")
看起来老师修改了规则,那么分数判断就简单了不少
上面的判断可以改为如下条件
# 当然使用原本的方法也不影响。
if CHCount == 11 or JPCount == 11:
抱着沙发 睡眼昏花 凌乱头发,却渴望想电影主角一样潇洒