Tob*_*bal 6 python matplotlib python-3.x
代码:
#/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from sympy.solvers import *
from sympy import *
from matplotlib import rcParams
rcParams['text.latex.unicode'] = True
rcParams['text.usetex'] = True
rcParams['text.latex.preamble'] = '\usepackage{amsthm}', '\usepackage{amsmath}', '\usepackage{amssymb}',
'\usepackage{amsfonts}', '\usepackage[T1]{fontenc}', '\usepackage[utf8]{inputenc}'
f = lambda x: x ** 2 + 1
#f = lambda x: np.sin(x) / x
x = Symbol('x')
solucion = solve(x**2+1, x)
fig, ax = plt.subplots()
x = np.linspace(-6.0, 6.0, 1000)
ax.axis([x[0] - 0.5, x[-1] + 0.5, x[0] - 0.5, x[-1] + 0.5])
ax.spines['left'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['top']
ax.spines['left']
ax.spines['bottom']
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.grid('on')
ticks = []
for i in range(int(x[0]), int(x[-1] + 1), 1):
ticks.append(i)
ticks.remove(0)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.plot(x, f(x), 'b-', lw=1.5)
ax.legend([r'$f(x)=x^2-1$'], loc='lower right')
text_sol = ''
if solucion == []:
text_sol = r'$No\; hay\; soluciones $'
else:
for i, value in enumerate(solucion):
text_sol += ur'$Solución \; {}\; :\; {}\\$'.format(i, value)
bbox_props = dict(boxstyle='round', fc='white', ec='black', lw=2)
t = ax.text(-5.5, -5, text_sol, ha='left', va='center', size=15,
bbox=bbox_props)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这段代码适用于Python 2.7,但Python 3.3.2很糟糕:
python3 funcion_pol2.py
File "funcion_pol2.py", line 51
text_sol += ur'$Solución \; {}\; :\; {}\\$'.format(i, value)
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
谢谢!
u'...'
在Python 3.0中删除了字符串文字的语法
来自docs:
字符串文字不再支持领导
u
或U
.
所以,你可以简单地删除u'...'
Python 3:
r'$Solución \; {}\; :\; {}\\$'.format(i, value)
Run Code Online (Sandbox Code Playgroud)
注:该u'...'
语法已在Python重新引入3.3(感谢@Bakuriu指出了这一点).
新重新引入的字符串前缀语法如下所示:
stringprefix ::= "r" | "u" | "R" | "U"
Run Code Online (Sandbox Code Playgroud)
Python 2 字符串前缀语法:
stringprefix ::= "r" | "u" | "ur" | "R" | "U" | "UR" | "Ur" | "uR"
| "b" | "B" | "br" | "Br" | "bR" | "BR"
Run Code Online (Sandbox Code Playgroud)
由于您使用的是Python 3.3,问题不在于您u
在字符串文字之前.相反,问题是你要放在ur
它之前:
>>> # Python 3.3.2 interpreter
>>> u'a'
'a'
>>> ur'a'
File "<stdin>", line 1
ur'a'
^
SyntaxError: invalid syntax
>>>
Run Code Online (Sandbox Code Playgroud)
此行为在文档中解释:
鉴于Python 2.x的原始unicode文字行为与Python 3.x不同,因此不支持'ur'语法.
...
版本3.3中的新功能:重新引入了对unicode遗留文字(u'value')的支持,以简化双Python 2.x和3.x代码库的维护.有关更多信息,请参阅PEP 414.
由于Python 3.x中的所有字符串都是unicode,因此只需删除以下内容即可解决问题u
:
r'$Solución \; {}\; :\; {}\\$'.format(i, value)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5570 次 |
最近记录: |