使用Python编程语言实现下列任务: 从键盘依次输入两个数 L 和 R(L<=R),请统计范围[L,R]的所有整数中,数字2 出现的次数。 比如给定范围[2,22],数字2 在数2中出现了1 次,在数12 中出现1 次,在数20 中出现1次,在数 21 中出现1 次,在数22 中出现2次,所以数字2 在该范围内一共出现了6次。 (1)请使用面向对象技术完成上述任务(50分); (2)当L>R时抛出ValueError或AssertionError(25分); (3)将统计结果写入文件result.txt中(25分)。
时间: 2023-06-08 20:08:15 浏览: 22
对于您的问题,我来帮您回答。
1. 具体的代码实现如下:
```python
class CountNumber:
def __init__(self, L, R):
self.L = L
self.R = R
def count_number(self):
count = 0
for i in range(self.L, self.R+1):
str_i = str(i)
count += str_i.count('2')
return count
def save_result(self, result):
with open('result.txt', 'w') as f:
f.write(str(result))
print('结果已保存至 result.txt 文件中!')
if __name__ == '__main__':
L = int(input('请输入数值 L:'))
R = int(input('请输入数值 R:'))
if L > R:
raise ValueError('L 必须小于等于 R!')
elif L == R:
print(f'结果为:{str(L).count("2")}')
else:
cn = CountNumber(L, R)
result = cn.count_number()
cn.save_result(result)
print(f'数字 2 在 [{L}, {R}] 范围内一共出现了 {result} 次!')
```
2. 如果用户输入的 L>R,则会抛出 ValueError。
3. 最后的结果会保存在 result.txt 文件中。
希望我的回答能够帮到您!