题目1:
看过《射雕英雄传》的人,可能会记得,黄蓉与瑛姑见面时,曾出过这样一道数学题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之余二,问几何?
要求:请编写一段python代码,找出1到100(包含首尾)之间的所有符合条件的整数。
# 参考题解:for 循环
for i in range(1, 101):
if i % 3 == 2 and i % 5 == 3 and i % 7 == 2:
print(f"for符合条件的整数是:{i}")
# 参考题解:while循环
number = 1
while number <= 100:
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
print(f"while符合条件的整数是:{number}")
number += 1
题目2:
今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
这四句话的意思是:有若干只鸡和兔子同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问:笼中各有多少只鸡和兔?
# 双循环:设鸡有x只,兔有y只
for x in range(36):
for y in range(36):
if (x + y) == 35 and (2*x + 4*y == 94):
print(f"鸡有{x}只,兔有{y}只")
# 单循环:设鸡有x只
for x in range(36):
if 2*x + 4*(35-x) == 94:
print(f"单循环:鸡有{x}只,兔有{35-x}只")
题目3:
给定一个四位数字表示年份(1583年~4000年之间),请编写一个函数,找出这年出现次数最多的是星期几,返回数据的给是为列表,元素为英文字符串,并且按照Monday到Sunday的顺序排列。
备注:每周以周一Monday开始。
示例
输入:2022
输出: [‘Thursday’, ‘Friday’]
解释:2022年中星期六的出现次数最多。
提示:
- 判断闰年:calendar.isleap(2022)
- 判断某一天是周几:calendar.weekday(2022, 1, 1)
def solution(year: int):
# pass
assert solution(2022) == [‘Saturday’]
assert solution(2860) == [‘Thursday’, ‘Friday’]
assert solution(1984) == [‘Monday’, ‘Sunday’]
参考题解:
import calendar
def solution(year):
# 定义一个星期
weekday = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
# 求出一年多少天
days = 366 if calendar.isleap(year) else 365
# 求出第一天是周几
begin_index = calendar.weekday(year, 1, 1)
# 求出余下几天
rest = days % 7
# 返回结果
if rest == 1:
return [weekday[begin_index]]
elif rest == 2:
if begin_index == 6:
return [weekday[0], weekday[begin_index]]
else:
return [weekday[begin_index], weekday[begin_index + 1]]
assert solution(2022) == ['Saturday']
assert solution(2860) == ['Thursday', 'Friday']
assert solution(1984) == ['Monday', 'Sunday']