draw . py 是一个 turtle 绘图的 Python 程序,内部采用了 import turtle 模式引入 turtle 库。请编写程序,以该文 件为输入,修改源代码,输出对应的 import turtle as t 模式源代码,名称为draw2.py,要求draw2.py运行结果与输出示例:输出对应的 import turtle as t 模式源代码,名称为 draw2.py 注意:部分源程序给出如下。请勿改动其它函数中的任何内容, 仅在函数的注释标志之间填入所编与的若干语可。 fi = open (" draw . py ", fo = open ("draw2.py, w )#********** Program ********** encoding =' utf -8') End
时间: 2023-07-01 07:28:24 浏览: 80
以下是修改后的代码:
```
fi = open("draw.py", encoding='utf-8')
fo = open("draw2.py", "w")
fo.write("import turtle as t\n\n")
for line in fi:
if "import turtle" in line:
line = line.replace("import turtle", "import turtle as t")
fo.write(line)
fi.close()
fo.close()
```
运行该程序后,会生成一个名为 draw2.py 的文件,其中 turtle 库被引入为 t。
相关问题
draw.py是一个turtle绘图的 Python 源程序,该程序采用了import turtle 模式引入turtle库,并绘制了一个图形·请编写程序,以该源文件作为文件输入,修改文件中的代码,将 impot 使用方式改为import turtleast模式,并输出文件为draw2.py,要求draw2.py运行结果与 draw.py 一致。
可以使用Python内置的ast模块来实现对Python源代码的抽象语法树(AST)进行操作。下面是实现的代码:
```python
import ast
# 读取源文件
with open("draw.py", "r") as f:
source = f.read()
# 将源代码解析为抽象语法树
tree = ast.parse(source)
# 遍历抽象语法树,将所有的 import turtle 修改为 import turtleast
class ImportVisitor(ast.NodeTransformer):
def visit_Import(self, node):
if node.names[0].name == "turtle":
node.names[0].name = "turtleast"
return node
visitor = ImportVisitor()
new_tree = visitor.visit(tree)
# 将修改后的抽象语法树重新转换为源代码
new_source = ast.unparse(new_tree)
# 输出为新文件
with open("draw2.py", "w") as f:
f.write(new_source)
```
这个程序可以将源文件中所有的 `import turtle` 修改为 `import turtleast`,然后输出为一个新的文件 `draw2.py`。这样修改后,运行 `draw2.py` 应该可以得到与原程序相同的结果,但是使用的是 `turtleast` 库。
draw.py 是一个turtle 绘图的 Python 源程序,该程序采用了import turtle 模式引入turtle 库,并绘制了一个图形。请编写程序,以该源文件作为文件输入,修改文件中的代码.将import使用方式改为import turtleast模式,并输出文件为draw2.py,要求draw2.py的运行结果与drawpy一致。
以下是修改后的代码:
```python
import ast
import astunparse
# 读取原始代码
with open("draw.py", "r") as f:
source = f.read()
# 将代码解析为抽象语法树
tree = ast.parse(source)
# 修改 import
for node in tree.body:
if isinstance(node, ast.Import) and node.names[0].name == "turtle":
node.names[0].name = "turtleast"
node.names[0].asname = None
# 将修改后的抽象语法树转换回代码
new_source = astunparse.unparse(tree)
# 输出为新的文件
with open("draw2.py", "w") as f:
f.write(new_source)
```
运行以上代码后,会生成一个名为 `draw2.py` 的新文件。该文件的运行结果与原始文件 `draw.py` 相同,但是 `import` 的方式已经修改为 `import turtleast`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)