请完善以下程序,函数func()的功能是在正整数字符串num中删除k(k小于数字位数)个数字字符,删除后剩余字符按原始顺序组成的整数数值最小。具体处理规则为:从左至右遍历数字,当相邻两个数字左边的比右边的大时将左边数字删除,重复k轮。主模块中将结果保存到myf.out文件中。 【测试数据与运行结果】 测试数据1: 14530,2 写入文件结果1: 130 测试数据2: 10500 ,1 写入文件结果2: 500 【待完善的源程序】 def func(num, k): num = list(num) for i in range(k): for j in range(len(num)-1): if num[j] > __________: num.pop(j) break else: num.pop() result = 0 for i in num: result = result*10+eval(i) return result if __name__ == "__main__": num, k = eval(input("Enter an integer and digits: ")) result = func(str(num), k) with open("T:\\myf.out", __________) as fp: fp.write(str(result))
时间: 2023-12-25 22:06:50 浏览: 59
完整的程序如下:
```python
def func(num, k):
num = list(num)
for i in range(k):
j = 0
while j < len(num)-1 and num[j] <= num[j+1]:
j += 1
num.pop(j)
result = 0
for i in num:
result = result*10+eval(i)
return result
if __name__ == "__main__":
num, k = eval(input("Enter an integer and digits: "))
result = func(str(num), k)
with open("T:\\myf.out", "w") as fp:
fp.write(str(result))
```
在这个程序中,我们定义了一个函数 `func`,它接受一个字符串类型的正整数 `num` 和一个整数 `k` 作为输入,返回一个整数,表示删除 `num` 中 `k` 个数字字符后得到的最小整数。这个函数的实现使用了两重循环,外层循环执行 `k` 轮删除操作,内层循环遍历字符串 `num` 中的所有数字,找到第一个左边比右边大的数字,将其删除。删除完毕后,我们将剩余的数字字符组成一个整数返回。
在主程序中,我们从键盘读入一个正整数 `num` 和一个整数 `k`,然后调用 `func` 函数得到最小整数,最后将结果写入到文件 "T:\myf.out" 中。注意,我们使用 `with open(...) as fp:` 语句打开文件,这样可以自动关闭文件,避免了因忘记关闭文件而导致的资源泄漏问题。