请将下列程序中写有编号(1),(2),(3),(4)处,填上相应代码,使其实现:设计程序帮助小明安排读书计划。周一到周五小明每天可以读m页(m为整数),周六或周日每天可读3m页。假设待读书籍的总页数是p, 他开始读书的第一天是星期w(w=1~7, 分别对应周一到周日),程序根据提供的m, p, n的值输出读完书籍需要的天数。 编程思想:在程序中输入m, k 和n,调用函数readbook,在函数中计算并返回读完需要的天数,程序根据返回天数输出结果。 def readbook(m,p,n): (1) =p//(11*m) temp=p%(11*m)//m day=0 if temp !=0: tup1=(1,1,1,1,1,3,3) k=n-1 while temp>0: temp=temp-tup1[k] k=(k+1)%7 day+=1 (2) (week*7+day) try: m=int(input('请输入每个工作日要读的页数:')) p=int(input('请输入待读书的总页数:')) n=int(input('打算星期几(请输入1~7中的数字)开始读?')) (3) : print("输入有错") else: if m>0 and p>0 and 1<=n<=7: days=readbook(m,p,n) print('读完这本%d页的书需要%d天。'%(p, (4) )) else: print("注意输入数据的有效性!")
时间: 2023-11-27 15:05:25 浏览: 123
fk.rar_4 3 2 1
以下是相应的 Python 代码实现:
```python
def readbook(m, p, n):
week = (n + (p // m) % 7) % 7 # (1) 计算除去周末后的完整星期数
day = 0
if p % m != 0:
tup1 = (1, 1, 1, 1, 1, 3, 3)
k = week - 1
temp = p % m
while temp > 0:
temp -= tup1[k]
k = (k + 1) % 7
day += 1
return (week * 5 + day) # (2) 计算总共需要的天数
try:
m = int(input('请输入每个工作日要读的页数:'))
p = int(input('请输入待读书的总页数:'))
n = int(input('打算星期几(请输入1~7中的数字)开始读?'))
if m <= 0 or p <= 0 or n < 1 or n > 7: # (3) 判断输入是否有效
print("输入有错")
else:
days = readbook(m, p, n)
print('读完这本%d页的书需要%d天。' % (p, days)) # (4) 输出结果
except:
print("输入有错")
```
定义函数 `readbook()`,该函数接受三个参数,分别是平日每天阅读页数 `m`、待读书籍的总页数 `p`、开始读书的星期 `n`。函数内部首先计算除去周末后的完整星期数,然后根据剩余页数,用 `while` 循环计算需要的天数。最后将总天数返回给主程序。
主程序部分用 `try except` 语句捕获异常,判断输入是否有效。如果输入正确则调用 `readbook()` 函数计算需要的天数,然后输出结果。
阅读全文