陶远航 发表于 2023-2-26 10:17:41

Python怎么把字符串转为代码运行?

如题,比如一个字符串"num=1"
怎么把这个字符串转为代码运行?

陶远航 发表于 2023-2-26 10:18:22

eval好像不行,不能赋值

wp231957 发表于 2023-2-26 10:23:40

举个具体的例子
n=1就是一个赋值语句?咋运行???

陶远航 发表于 2023-2-26 10:29:29

wp231957 发表于 2023-2-26 10:23
举个具体的例子
n=1就是一个赋值语句?咋运行???

我是想实现这样一个功能:
输入一个字符串的赋值语句,然后转为代码运行。

陶远航 发表于 2023-2-26 10:31:34

wp231957 发表于 2023-2-26 10:23
举个具体的例子
n=1就是一个赋值语句?咋运行???

因为我想做一个数学工具,想让用户输入一个赋值语句,然后转换为代码运行

wp231957 发表于 2023-2-26 10:42:40

陶远航 发表于 2023-2-26 10:31
因为我想做一个数学工具,想让用户输入一个赋值语句,然后转换为代码运行

不能举个例子吗
啥叫转成代码运行?!

鱼cpython学习者 发表于 2023-2-26 10:43:04

exec函数

zhangjinxuan 发表于 2023-2-26 10:50:44


>> exec('''global n
n = 114514''')
>>> n
114514
global 语句可以将这个变量变成全局,不管哪个作用域都行(除了重复定义

歌者文明清理员 发表于 2023-2-26 11:00:51

exec(代码)

陶远航 发表于 2023-2-26 11:03:58

鱼cpython学习者 发表于 2023-2-26 10:43
exec函数

不行啊,我把代码拿出来def gaojimoshi():
    guifan()
    mingling=enterbox("式子或任意命令:")
    try:
      g.showinfo("",exec(mingling))
      return None
    except:
      try:
            g.showinfo("",eval(mingling))
            return None
      except:
            g.showerror("","运行错误!请检查输入是否正确!")
当我第一次输入a=10时是可以的,然后我尝试输入a*10,报错Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
File "e:/Math Problem Solver+/Math Problem Solver+ 1.0 with starting.py", line 317, in gaojimoshi
    g.showinfo("",exec(mingling))
File "<string>", line 1, in <module>
NameError: name 'a' is not defined

陶远航 发表于 2023-2-26 11:07:34

歌者文明清理员 发表于 2023-2-26 11:00
exec(代码)

谢谢,用了global就可以了

zhangjinxuan 发表于 2023-2-26 11:27:13

陶远航 发表于 2023-2-26 11:07
谢谢,用了global就可以了

不讲信用{:10_266:}
页: [1]
查看完整版本: Python怎么把字符串转为代码运行?