看了半本Python编程从入门到实践,来发个笔记

查看 113|回复 10
作者:858983646   
看看能不能彩色高亮显示代码啊,只会vscode里保存为py了高亮显示,转md就变成纯黑的了,手机里看着好累,能不能转成pdf啊
[Python] 纯文本查看 复制代码#1.变量
b = "a"    #用单引号‘’也可以,也可以是""表示为空,表示字符串,就是文本
b += "c"    #变成ac,追加一个c
b = 1      #设置b为数值1
b+=1      #b变成2,追加1
x, y, z = 0, 0, 0  #同时多个变量设置
print(b)    #print(b.title()) 首字母大写,upper全大写,lower全小写
x = int(x)    #x变成数值
x = 10   #设置变量等于10
def my_function():
    global x  #声明x是全局变量,否则打印出不来,否则x=20会创建一个内部变量。若是 nonlocal ,则声明是嵌套函数里的局部变量(嵌套函数里的变量下级函数可以直接访问,但是不 nonlocal 不可以修改)
    print(x)       #输出10
    x = 20        #全局x变成了20
    print(x)       #输出20
my_function()     #输出10^n20
#2.字符串
c = f"{a} {b}"    #c相当于a连着b,也可以直接print(f"{a} {b}")
print("a:\b\nc\nd")   #a:bcd每一个字都换行显示
b = b.rstrip()    #删除b右边的空格,lstrip() 是左边,strip()是两侧
b = 是我的.removeprefix('我的')  #去掉我的只剩是
b += a.line.lstrip(),在b后面接着写a,并且去除a的左边空格分割字符串为列表
text = "one-two-three-four"
parts = text.split('-', maxsplit=2)  # 可以括号里空着,指定-分割,不写就用空格,换行分割,指定最多分割2次。
print(parts)  # 输出: ['one', 'two', 'three-four']
#3.数
#**6是6次方
#+-*/   #加减乘除   
#%  #求余数,比如5%3是2
#print(5+3)是8,print("5+3")是5+3
#浮点数就是小数,有一次浮点,后面都变浮点。除法会产生浮点数,即使4/2数字中加下划线_可以更好辨认,不影响其他
#4.列表
zimu = ['a', 'b', 'c', 'd']    #abcd内容的列表
a = zimu[-3:]  #切片,倒数3个,输出字母bcd   [0:2]  #输出ab,从a(第0个)开始,索引到2(不包括2)
zimu2 = zimu[:]    #[:] 切片全部,可用于复制列表,但是zimu如果史叠加引用另外的变量列表等仍会继续引用原本的,若写zimu2 = zimu,一旦zimu列表内容变动,会一起变动
zimu2 = copy.deepcopy(zimu)  #这样复制更彻底,直接复制现在的内容,不怕引用。
print(zimu[0].title())   #显示a,并大写(左边第0个),从0开始计数的,-1是最后一个,-2是倒数第二个
#可以用字符串里的f把多个联系起来
zimu[0] = 'e'        #把第一个的a改成e
zimu.append('f')     #把f加到列表最后
zimu.insert(0, 'g'),  #在a前面插入g
del zimu[0]         #删除a(就是第一个)
x = zimu.pop(0)      #把x变量设置为a,并把a从列表里弹出(删除)
zimu.remove('a')     #删除a,只删第一个a,
while 'a' in zimu  
zimu.remove('a')  #可以删除所有a
zimu.sort()  #列表永久按照字母顺序排序
zimu.sort(reverse=True) #字母反向排序
zimu.reverse()  #永久按照原本顺序反向
print(sorted(zimu))  #临时按字母顺序显示列表,列表本身不变,反向reverse=True也可以用
len(zimu)   #输出列表内个数,结果是4
5.操作列表
for循环
zimu = ['a', 'b', 'c', 'd']
for xx in zimu:
print(xx)   #挨个打印所有zimu内的内容  
range(1,6)  #(调用时才生成)生成整数,从1开始,6之前结束,所以只有1-5
range(start, stop, step)  #生成从 start 开始,每次增加 step ,直到达到或超过 stop (不包括 stop )的整数序列。
numbers = list(range(1, 6))  #创建一个列表1-5
for x in range(30):         for循环30次
f = []    #创建一个空列表,名字是f
for value in range(1, 11):
p = value ** 2
f.append(p)     #把1-10的平方放入列表f[1, 4, 9, 16, 25, 36, 49, 64, 81, 100],也可以1/2合并,写成f.append(value**2)
squares = [value**2 for value in range(1, 11)]   #合成一句,叫做列表推导式
min(p) max(p) sum(p)    #这是数值列表中的最大最小和平均值
6.元组
#a = (3,5,)  和列表的差别是不可变,省内存,防止不小心改变,但是可以重新再次赋值,比如再来个a = (3,6,)就覆盖了
7.if如果
xx = ['a', 'b', 'c', 'd']
for xy in xx:
if xy == 'b':  #两个等号是是否相等,单个=是赋值,!=是不等于,还有,

函数, 列表

858983646
OP
  


仙鬼同拥 发表于 2024-9-7 19:59
鄙人不才,只看过前三章,现在还停留在指定编码格式print汉字的水平上,但你这个问题我或许可以解决,后 ...

谢谢提供思路,搞定了,ai搞了个代码转换
[Python] 纯文本查看 复制代码import tkinter as tk
from tkinter import scrolledtext
from tkinter import filedialog
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
class TextToHtmlApp:
    def __init__(self, root):
        self.root = root
        self.root.title("Python Code to HTML with Highlighting")
        # Create a scrolled text widget for input
        self.text = scrolledtext.ScrolledText(root, wrap=tk.WORD)
        self.text.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
        # Create a button to save the text as HTML
        save_button = tk.Button(root, text="Save as HTML", command=self.save_as_html)
        save_button.pack(pady=10)
    def save_as_html(self):
        # Get the text from the scrolled text widget
        code = self.text.get("1.0", tk.END)
        # Use PythonLexer to guess the lexer based on the text content
        lexer = PythonLexer()
        # Highlight the code
        formatter = HtmlFormatter()
        highlighted_code = highlight(code, lexer, formatter)
        # Create HTML content with styles for highlighting
        html_content = f"""
   
    Code Highlighting
   
        body {{
            font-family: 'Courier New', Courier, monospace;
            background-color: #f8f8f8;
            padding: 10px;
        }}
        pre {{
            background-color: #f8f8f8;
            border: 1px solid #ccc;
            padding: 10px;
            overflow: auto;
        }}
        /* Pygments CSS styles */
        {formatter.get_style_defs()}
   

    {highlighted_code}

        """
        # Save the HTML content
        file_path = filedialog.asksaveasfilename(defaultextension=".html", filetypes=[("HTML files", "*.html")])
        if file_path:
            with open(file_path, "w", encoding="utf-8") as f:
                f.write(html_content)
            self.text.insert(tk.END, "HTML saved successfully!\n")
if __name__ == "__main__":
    root = tk.Tk()
    app = TextToHtmlApp(root)
    root.mainloop()
仙鬼同拥   


858983646 发表于 2024-9-7 18:58
我发了帖子就变成彩色高亮了,再研究研究怎么打印成单页pdf就可以弄好啦

鄙人不才,只看过前三章,现在还停留在指定编码格式print汉字的水平上,但你这个问题我或许可以解决,后面写的可能会有点长,希望可以耐心看完。
因为你发到论坛上面,discuz论坛的code标签支持语法高亮,你用的Python编辑器也支持语法高亮,但这些都在显示层,本质上输出保存的还是txt字符。
打个比方,我就写一个(255,0,0)或者0xFF0000你把这两个颜色值丢到任何一个显示颜色的软件里面都能识别到是红色,包括论坛的color标签,能用是能用,但要想展示给别人看,总不能就写成这样吧?如果能显示成——0xFF0000(红色)这就很方便阅读了,但是也就失去了运行能力,那怎样才能显示成这样带解释的呢?这就需要一个中间体格式——html格式了,你如果从一些配色网站复制这些颜色值的话,后面肯定会带上解释;呐,同理,你要打印带语法高亮的Python代码,也可以把代码转成html就带上高亮的颜色标签了,然后用浏览器打开html,用pdf虚拟打印机打印到pdf文件就可以了。
这也算是去中心化吧,要保留代码的运行能力,就要牺牲一部分可读性,要完全保留可移植的可读性,那基本就要丢掉运行能力了
woojun   

txt文件转不了pdf吧
858983646
OP
  


woojun 发表于 2024-9-7 18:52
txt文件转不了pdf吧

我发了帖子就变成彩色高亮了,再研究研究怎么打印成单页pdf就可以弄好啦
ruanxiaoqi   

这种方式学编程,既做了笔记,又展示分享了学习成果!
zlqhysy   

进来学习一下。
风华绝代谢长留   

不错不错
laotzudao0   

笔记直接记到语雀里面去, 方便管理, 支持功能也较多, 转PDF太局限了
858983646
OP
  


laotzudao0 发表于 2024-9-7 19:33
笔记直接记到语雀里面去, 方便管理, 支持功能也较多, 转PDF太局限了

谢谢,我去看看
您需要登录后才可以回帖 登录 | 立即注册

返回顶部