简单计算器(python基础代码撰写)

简单计算器:仅适用无括号加减乘除,算法初阶,代码基础,不调库或模块“纯”手撕。


(笔记模板由python脚本于2024年09月22日 12:08:02创建,本篇笔记适合喜欢用python解决实际问题的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


仅适用没有括号的加减乘除
Simple Calculator
(算法初阶代码基础不调库或模块“纯”手撕)


本文质量分:

95 95 95

本文地址: https://blog.csdn.net/m0_57158496/article/details/142466709

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ Simple Calculator
    • 1、程序说明
    • 2、运行效果
    • 3、代码解读
    • 4、calculate的另一种写法
    • 5、完整源码(Python)


◆ Simple Calculator


1、程序说明


一、概述

  这是一个简单的计算器程序,它可以处理没有括号的算式,包括加法、减法、乘法和除法。程序仅支持0和自然数的四则混合运算。用户可以通过输入算式来执行计算,并且可以多次输入算式进行计算。若输入的算式不符合要求,程序会给出相应的错误提示。


二、功能说明

  • 输入验证:确保用户输入的算式只包含数字、四则运算符和小数点,且格式正确。
  • 算式解析:将算式转换为可以处理的列表形式。
  • 算式计算:支持不带括号的四则混合运算,先执行乘除运算,然后执行加减运算。
  • 结果输出:将计算结果输出给用户。
  • 优雅退出:用户输入“00”即可退出程序。

  程序的优点在于它的简单性和易用性,用户可以轻松地输入算式并得到结果。


三、使用方法

  • 运行程序。
  • 根据提示输入算式,例如:3+5*2-4/2
  • 按下回车键进行计算。
  • 查看计算结果,并根据提示继续使用或退出。

四、注意事项

  • 输入的算式不能为空。
  • 算式中只能包含数字、加号(+)、减号(-)、乘号(*)、除号(/)和小数点(.)。
  • 算式末尾必须是数字。
  • 不允许连续的运算符。
  • 算式不可以有连续的符号,如“++”、“-/”、“+*”、“//”等。
  • 每个数值中只能包含一个小数点。

五、错误处理

  • 若输入的算式不符合要求,程序将抛出ValueError错误提示。
  • 用户可根据错误提示修改算式,然后重新输入。

六、程序优势

  • 无需安装第三方库,纯Python实现。
  • 代码结构清晰,易于理解和维护。
  • 具有较好的错误处理机制,提高用户体验。



回页目录


2、运行效果


  • 界面
    在这里插入图片描述

  • 计算
    在这里插入图片描述
    在这里插入图片描述

  • 错误输入
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 退出
    在这里插入图片描述



回页目录


3、代码解读


一、文件头部

#!/usr/bin/env python3
# coding: utf-8
  1. #!/sur/bin/nve:指定解释器的路径,此处应为#!/usr/bin/env python3,表示使用Python 3解释器。
  2. # coding: utf-8:指定源文件编码为UTF-8,以支持中文等非ASCII字符。

二、程序结构

  1. validate_input(s:str) -> bool:输入验证函数,用于检查用户输入的算式是否合法。
  2. calculate(s:str) -> float:计算函数,用于解析并计算用户输入的算式。
  3. calculator(s:str) -> float:计算器主函数,调用validate_inputcalculate函数,返回计算结果。
  4. main() -> None:程序主入口,提供用户交互界面,循环接收用户输入并进行计算。

三、函数说明

  • split_expression

def split_expression(s:str) -> list:''' 拆分算式 '''return s.replace('+', ' + ').replace('-', ' - ').replace('*', ' * ').replace('/', ' / ').split()

  1. validate_input(s:str) -> bool.

def validate_input(s:str) -> bool:''' 输入验证 '''# expression空验证if not s:raise ValueError(f"\n{f' 算式不可为空 ':-^36}\n")    # 字符有效验证chars = tuple('0123456789+-/*.')for char in s:if char not in chars:raise ValueError(f"\n{f' 错误字符:{char} ':-^35}\n") s = split_expression(s) # 拆分算式成列表# expression末尾验证if not s[-1][-1].isdigit():raise ValueError(f"\n{f' 算式末尾不可以是:{s[-1]} ':-^31}\n")    # 数值小数点、连续运算符、零除验证if s[0].count('.') > 1:raise ValueError(f"\n{f' “{s[0]}”小数点错误 ':-^37}\n") for i in range(1, len(s)):if not s[i-1].replace('.', '').isdigit() and not s[i].replace('.', '').isdigit():raise ValueError(f"\n{f' 算式不可以有连续符号:{s[i-1]}{s[i]} ':-^30}\n") elif s[i].count('.') > 1:raise ValueError(f"\n{f' “{s[i]}”小数点错误 ':-^37}\n") elif s[i]=='/' and set(s[i+1].replace('.', ''))=={'0'}:raise ValueError(f"\n{f' 零除错误 ':-^36}\n") return True
  • 验证用户输入的算式是否合法。
  • 验证输入的算式是否为空。
  • 验证算式中的字符是否有效。
  • 将算式转换为列表,方便后续处理。
  • 验证算式末尾是否为数字。
  • 验证每个数值的小数点数量和连续符号。
  • 验证零除错误。

  1. calculate(s:str) -> float

def calculate(s:str) -> float:''' 算式解析并计算 '''numbers = [] # 数值signs = [] # 运算符local_num = '' # 当前数值# 拆分算式for char in s:if char.isdigit() or char=='.':local_num += charelse:numbers.append(float(local_num))signs.append(char)local_num = ''numbers.append(float(local_num)) # 追加最后一个数值# 计算乘除newnumbers = numbers[:1]for i in range(1, len(numbers)):if signs[i-1] == '*':newnumbers[-1] = newnumbers[-1] * numbers[i]signs[i-1] = ''elif signs[i-1] == '/':newnumbers[-1] = newnumbers[-1] /numbers[i]signs[i-1] = ''else:newnumbers.append(numbers[i])signs = [sign for sign in signs if sign] # 更新运算符列表# 处理+、-符号:列表解析,用前插空字符对齐运算符与数值列表,遍历zip拼接“运算符-数值”对,更新到newnumbersnewnumbers = [float(f"{number[0]}{number[1]}") for number in zip(['']+signs, newnumbers)]return sum(newnumbers) # 求和(加)并返回
  • 首先将算式拆分为数字和运算符两个列表。
  • 然后优先计算乘法和除法。
  • 然后处理加法和减法,将减法转换为加法(例如,5 - 3转换为5 + (-3))。
  • 最后对处理后的数字列表求和,得到最终结果。

  1. calculator(s:str) -> float

def calculator(s:str) -> float:''' 计算器 '''result = calculate(s) # 调用计算解析函数return int(result) if round(result) == result else result # 结果是整,去尾0
  • 调用validate_input进行输入验证。
  • 调用calculate进行算式计算。
  • 返回计算结果,若结果为整数则转换为整数类型。

  1. main() -> None

def main() -> None:''' 主程序 '''while True:clear = '\033[2J' # 清屏字符串(windows系统低版本不支持)print(f"\n{clear}")        text = input(f"\n{' 简单计算器 ':=^37}\n{'(不带括号的四则运算,输入00退出)':^26}\n\n\n{' 回车确认执行计算 ':-^34}\n\n{'输入算式:':>7}").strip()if text == '00':print(f"{clear}\n{' 您已退出“简单计算器”!':^33}\n\n{f' 谢谢您使用“简单计算器”。':-^31}\n")break # break更优雅validate_input(text) # 输入验证result = calculator(text) # 计算表达式input(f"\n\n{'结果:':>9}{result}\n\n\n{'':=^42}\n{'(任意键继续……)':^35}") 
  • 提供用户交互界面,允许用户输入算式。
  • 调用 validate_input 函数验证输入。
  • 调用 calculator 函数计算算式。
  • 输出计算结果。
  • 循环接收用户输入,直到用户输入“00”退出。

四、程序入口

  • 入口
if __name__ == '__main__':try:main()  # 启动主程序except ValueError as e:print(e)  # 打印错误信息
  1. 程序入口为if __name__ == '__main__':块,确保当模块被直接运行时,main()函数会被调用。
  2. 使用try...except语句块捕获并处理ValueError异常,提高程序的健壮性。

  这个程序的逻辑清晰,代码简洁,易于理解和维护。通过这个简单的计算器,用户可以快速进行基本的数学运算。



回页目录


4、calculate的另一种写法



def calculate(s:str) -> float:''' 算式解析并计算 '''s = [float(part) if part.replace('.', '').isdigit() else part for part in split_expression(s)] # 三元操作语句列表解析数值# 算乘除k = 1while k < len(s)-1:if s[k] == '*':s[k-1] = s[k-1]*s.pop(k+1) # 用积重写乘号前数值s.pop(k) # 删除乘号elif s[k] == '/':s[k-1] = s[k-1]/s.pop(k+1) # 用商重写乘号前数值s.pop(k) # 删除乘号else:k += 1 # 跳过加减运算符和数值# 算加减k = 1while k < len(s)-1:if s[k] == '+':s[k-1] = s[k-1] + s.pop(k+1) # 用和重写加号前数值s.pop(k) # 删除加号elif s[k] == '-':s[k-1] = s[k-1]- s.pop(k+1) # 用和重写加号前数值s.pop(k) # 删除减号else:k += 1 # 跳过数值return s[0] # 返回计算结果

ai点评:


  两个calculate函数的实现都有其独特之处,下面是对它们的重新评估:


第一个calculate函数:

优点:

  1. 逻辑清晰:首先处理乘除,然后处理加减,符合数学运算的优先级规则。
  2. 易于理解:通过两个步骤分别处理不同的运算符,使得代码结构更加清晰。
  3. 错误处理:在处理乘除时,如果遇到乘号或除号,会正确地更新列表中的数值,并移除运算符。

缺点:

  1. 效率:需要两次遍历列表,一次处理乘除,一次处理加减。
  2. 代码量:相对较长,因为分步骤处理。

第二个calculate函数:

优点:

  1. 代码简洁:使用单次遍历和列表解析,代码量更少。
  2. 效率:在一次遍历中完成乘除运算,减少了遍历次数。
  3. 直接操作:直接在原列表上操作,减少了额外的数据结构使用。

缺点:

  1. 可读性:由于代码较为紧凑,可能不如第一个实现容易理解。
  2. 错误处理:在处理运算符时,如果列表操作不当,可能会导致索引错误。

总结:

  • 如果你的目标是编写一个易于理解和维护的代码,第一个calculate函数可能更适合。
  • 如果你追求代码的简洁性和效率,第二个calculate函数可能更符合你的需求。

  两个实现都是有效的,并且都可以作为学习笔记中的示例。选择哪一个取决于你的个人偏好和你对代码质量的要求。如果你想要一个更加平衡的方案,可以考虑结合两个实现的优点,创建一个既高效又易于理解的版本。

  我个人倾向于第二个实现,因为它更加简洁,并且在现代编程中,效率往往是一个重要的考虑因素。不过,确保你的代码有充分的注释,以提高可读性。


回页目录


5、完整源码(Python)

(源码较长,点此跳过源码)


涅槃版

#!/sur/bin/nve python3
# coding: utf-8'''简单计算器:处理没有括号的+-*/算式,可以实现四则混合运算仅支持0和自然数。程序不调用库和模块,纯代码手撕。'''def split_expression(s:str) -> list:''' 拆分算式 '''return s.replace('+', ' + ').replace('-', ' - ').replace('*', ' * ').replace('/', ' / ').split()def validate_input(s:str) -> bool:''' 输入验证 '''# expression空验证if not s:raise ValueError(f"\n{f' 算式不可为空 ':-^36}\n")    # 字符有效验证chars = tuple('0123456789+-/*.')for char in s:if char not in chars:raise ValueError(f"\n{f' 错误字符:{char} ':-^35}\n") s = split_expression(s) # 拆分算式成列表# expression末尾验证if not s[-1][-1].isdigit():raise ValueError(f"\n{f' 算式末尾不可以是:{s[-1]} ':-^31}\n")    # 数值小数点、连续运算符、零除验证if s[0].count('.') > 1:raise ValueError(f"\n{f' “{s[0]}”小数点错误 ':-^37}\n") for i in range(1, len(s)):if not s[i-1].replace('.', '').isdigit() and not s[i].replace('.', '').isdigit():raise ValueError(f"\n{f' 算式不可以有连续符号:{s[i-1]}{s[i]} ':-^30}\n") elif s[i].count('.') > 1:raise ValueError(f"\n{f' “{s[i]}”小数点错误 ':-^37}\n") elif s[i]=='/' and set(s[i+1].replace('.', ''))=={'0'}:raise ValueError(f"\n{f' 零除错误 ':-^36}\n") return Truedef calculate(s:str) -> float:''' 算式解析并计算 '''numbers = [] # 数值signs = [] # 运算符local_num = '' # 当前数值# 拆分算式for char in s:if char.isdigit() or char=='.':local_num += charelse:numbers.append(float(local_num))signs.append(char)local_num = ''numbers.append(float(local_num)) # 追加最后一个数值# 计算乘除newnumbers = numbers[:1]for i in range(1, len(numbers)):if signs[i-1] == '*':newnumbers[-1] = newnumbers[-1] * numbers[i]signs[i-1] = ''elif signs[i-1] == '/':newnumbers[-1] = newnumbers[-1] /numbers[i]signs[i-1] = ''else:newnumbers.append(numbers[i])signs = [sign for sign in signs if sign] # 更新运算符列表# 处理+、-符号:列表解析,用前插空字符对齐运算符与数值列表,遍历zip拼接“运算符-数值”对,更新到newnumbersnewnumbers = [float(f"{number[0]}{number[1]}") for number in zip(['']+signs, newnumbers)]return sum(newnumbers) # 求和(加)并返回def calculate(s:str) -> float:''' 算式解析并计算 '''s = [float(part) if part.replace('.', '').isdigit() else part for part in split_expression(s)] # 三元操作语句列表解析数值# 算乘除k = 1while k < len(s)-1:if s[k] == '*':s[k-1] = s[k-1]*s.pop(k+1) # 用积重写乘号前数值s.pop(k) # 删除乘号elif s[k] == '/':s[k-1] = s[k-1]/s.pop(k+1) # 用商重写乘号前数值s.pop(k) # 删除乘号else:k += 1 # 跳过加减运算符和数值# 算加减k = 1while k < len(s)-1:if s[k] == '+':s[k-1] = s[k-1] + s.pop(k+1) # 用和重写加号前数值s.pop(k) # 删除加号elif s[k] == '-':s[k-1] = s[k-1]- s.pop(k+1) # 用和重写加号前数值s.pop(k) # 删除减号else:k += 1 # 跳过数值return s[0] # 返回计算结果def calculator(s:str) -> float:''' 计算器 '''result = calculate(s) # 调用计算解析函数return int(result) if round(result) == result else result # 结果是整,去尾0def main() -> None:''' 主程序 '''while True:clear = '\033[2J' # 清屏字符串(windows系统低版本不支持)print(f"\n{clear}")        text = input(f"\n{' 简单计算器 ':=^37}\n{'(不带括号的四则运算,输入00退出)':^26}\n\n\n{' 回车确认执行计算 ':-^34}\n\n{'输入算式:':>7}").strip()if text == '00':print(f"{clear}\n{' 您已退出“简单计算器”!':^33}\n\n{f' 谢谢您使用“简单计算器”。':-^31}\n")break # break更优雅validate_input(text) # 输入验证result = calculator(text) # 计算表达式input(f"\n\n{'结果:':>9}{result}\n\n\n{'':=^42}\n{'(任意键继续……)':^35}") if __name__ == '__main__':try:main() # 启动主程序except ValueError as e:print(e)

雏形版

#!/sur/bin/nve python3
# coding: utf-8'''简单计算器:处理没有括号的+-*/算式,可以实现四则混合运算仅支持0和自然数。程序不调用库和模块,纯代码手撕。'''def validate_input(s:str) -> bool:''' 输入验证 '''# expression空验证if not s:raise ValueError(f"\n{f' 算式不可为空 ':-^36}\n")    # 字符有效验证chars = tuple('0123456789+-/*.')for char in s:if char not in chars:raise ValueError(f"\n{f' 错误字符:{char} ':-^35}\n") # expression末尾验证if not s[-1].isdigit():raise ValueError(f"\n{f' 算式末尾不可以是:{s[-1]} ':-^31}\n")    # 连续符号验证(用的是str.isdigit方法判定算式中的相邻两个字符)for i in range(1, len(s)):if not s[i-1].isdigit() and not s[i].isdigit():raise ValueError(f"\n{f' 算式不可以有连续符号:{s[i-1]}{s[i]} ':-^30}\n") # 数值小数点验证:用str.count方法计数数值字符小数点。# 用空格替换加减乘除字符后,再用str.split拆分列表来对数值字符串预处理。for number in s.replace('+', ' ').replace('-', ' ').replace('*', ' ').replace('/', ' ').split():if number.count('.') > 1:raise ValueError(f"\n{f' “{number}”小数点错误。 ':-^36}\n") return Truedef calculate(s:str) -> float:''' 算式解析并计算 '''numbers = [] # 数值signs = [] # 运算符local_num = '' # 当前数值# 拆分算式for char in s:if char.isdigit() or char=='.':local_num += charelse:numbers.append(float(local_num))signs.append(char)local_num = ''numbers.append(float(local_num)) # 追加最后一个数值# 计算乘除newnumbers = numbers[:1]for i in range(1, len(numbers)):if signs[i-1] == '*':newnumbers[-1] = newnumbers[-1] * numbers[i]signs[i-1] = ''elif signs[i-1] == '/':newnumbers[-1] = newnumbers[-1] /numbers[i]signs[i-1] = ''else:newnumbers.append(numbers[i])signs = [sign for sign in signs if sign] # 更新运算符列表# 处理+、-符号:列表解析,用前插空字符对齐运算符与数值列表,遍历zip拼接“运算符-数值”对,更新到newnumbersnewnumbers = [float(f"{number[0]}{number[1]}") for number in zip(['']+signs, newnumbers)]return sum(newnumbers) # 求和(加)并返回def calculator(s:str) -> float:''' 计算器 '''result = calculate(s) # 调用计算解析函数return int(result) if int(result) == result else result # 结果是整,去尾0def main() -> None:''' 主程序 '''while True:clear = '\033[2J' # 清屏字符串(windows系统低版本不支持)print(f"\n{clear}")        text = input(f"\n{' 简单计算器 ':=^37}\n{'(不带括号的四则运算,输入00退出)':^26}\n\n\n{' 回车确认执行计算 ':-^34}\n\n{'输入算式:':>7}").strip()if text == '00':print(f"{clear}\n{' 您已退出“简单计算器”!':^33}\n\n{f' 谢谢您使用“简单计算器”。':-^31}\n")break # break更优雅validate_input(text) # 输入验证result = calculator(text) # 计算表达式input(f"\n\n{'结果:':>7}{result}\n\n\n{'':=^42}\n{'(任意键继续……)':^35}") if __name__ == '__main__':try:main() # 启动主程序except ValueError as e:print(e)

修正版

#!/sur/bin/nve python3
# coding: utf-8'''简单计算器:处理没有括号的+-*/算式,可以实现四则混合运算仅支持0和自然数。程序不调用库和模块,纯代码手撕。'''def validate_input(s:str) -> bool:''' 输入验证 '''# expression空验证if not s:raise ValueError(f"\n{f' 算式不可为空 ':-^36}\n")    # 字符有效验证chars = tuple('0123456789+-/*.')for char in s:if char not in chars:raise ValueError(f"\n{f' 错误字符:{char} ':-^35}\n") # expression末尾验证if not s[-1].isdigit():raise ValueError(f"\n{f' 算式末尾不可以是:{s[-1]} ':-^31}\n")    # 连续符号验证(用的是str.isdigit方法判定算式中的相邻两个字符)for i in range(1, len(s)):if not s[i-1].isdigit() and not s[i].isdigit():raise ValueError(f"\n{f' 算式不可以有连续符号:{s[i-1]}{s[i]} ':-^30}\n") # 数值小数点验证:用str.count方法计数数值字符小数点。# 用空格替换加减乘除字符后,再用str.split拆分列表来对数值字符串预处理。for number in s.replace('+', ' ').replace('-', ' ').replace('*', ' ').replace('/', ' ').split():if number.count('.') > 1:raise ValueError(f"\n{f' “{number}”小数点错误。 ':-^36}\n") return Truedef calculate(s:str) -> float:''' 算式解析并计算 '''numbers = [] # 数值signs = [] # 运算符local_num = '' # 当前数值# 拆分算式for char in s:if char.isdigit() or char=='.':local_num += charelse:numbers.append(float(local_num))signs.append(char)local_num = ''numbers.append(float(local_num)) # 追加最后一个数值# 计算乘除newnumbers = numbers[:1]for i in range(1, len(numbers)):if signs[i-1] == '*':newnumbers[-1] = newnumbers[-1] * numbers[i]signs[i-1] = ''elif signs[i-1] == '/':newnumbers[-1] = newnumbers[-1] /numbers[i]signs[i-1] = ''else:newnumbers.append(numbers[i])signs = [sign for sign in signs if sign] # 更新运算符列表# 处理+、-符号:列表解析,用前插空字符对齐运算符与数值列表,遍历zip拼接“运算符-数值”对,更新到newnumbersnewnumbers = [float(f"{number[0]}{number[1]}") for number in zip(['']+signs, newnumbers)]return sum(newnumbers) # 求和(加)并返回def calculator(s:str) -> float:''' 计算器 '''result = calculate(s) # 调用计算解析函数return int(result) if int(result) == result else result # 结果是整,去尾0def main() -> None:''' 主程序 '''while True:clear = '\033[2J' # 清屏字符串(windows系统低版本不支持)print(f"\n{clear}")        text = input(f"\n{' 简单计算器 ':=^37}\n{'(不带括号的四则运算,输入00退出)':^26}\n\n\n{' 回车确认执行计算 ':-^34}\n\n{'输入算式:':>7}").strip()if text == '00':print(f"{clear}\n{' 您已退出“简单计算器”!':^33}\n\n{f' 谢谢您使用“简单计算器”。':-^31}\n")break # break更优雅validate_input(text) # 输入验证result = calculator(text) # 计算表达式input(f"\n\n{'结果:':>7}{result}\n\n\n{'':=^42}\n{'(任意键继续……)':^35}") if __name__ == '__main__':try:main() # 启动主程序except ValueError as e:print(e)



回页首


上一篇:  Python的五种自定义类的“代码书写”形式(Python 中有五种自定义类写法,缺省参数或者指定metaclass可以自定义普通类;用元类作基类可以定义元类)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1543977.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

宠物鱼油补充剂行业调研:未来几年年复合增长率CAGR为7.8%

宠物鱼油补充剂是一种营养补充剂&#xff0c;富含从鱼类中提取的欧米伽-3 脂肪酸&#xff08;主要是 EPA 和 DHA&#xff09;&#xff0c;专为宠物设计&#xff0c;以改善其健康状况。鱼油补充剂富含奥米加-3 脂肪酸&#xff0c;已被证明对宠物健康有诸多益处&#xff0c;包括改…

分布式环境中,接口超时到底怎么处理?

目录标题 为什么会存在超时?如何应对可能发生的超时?1. 设置合理的超时时间2. 重试机制3. 熔断机制4. 监控和报警5. 日志记录6. 限流和降级7. 异步处理 以上总结 为什么会存在超时? 接口超时是分布式系统中常见的问题&#xff0c;其原因多种多样&#xff0c;涉及网络、服务…

文件系统(软硬链接 动静态库 动态库加载的过程)

文章目录 软硬链接软链接软链接有什么用&#xff1f; 硬链接硬链接有什么用&#xff1f; 动静态库Linux中的动静态库库静态库 && 安装库动态库动态库 VS 静态库用第三方库 动态库加载elf头部信息 软硬链接 先看现象&#xff1a;先创建一个文件&#xff0c;并写入内容 …

ELK-01-elasticsearch-8.15.1安装

文章目录 前言一、下载elasticsearch二、将tar包放到服务器三、解压tar包四、更改配置文件五、添加启动用户六、用elasticserch用户启动6.1 报错6.2 解决问题16.3 解决问题26.4 再次用elasticserch用户启动6.5 windows浏览器打开 七、设置开机自动启动7.1 创建启动脚本7.2 在脚…

在Java中 String能存储多少个字符?

经典面试题 关于String能存储多个字符&#xff0c;这个是面试者在面试中经常被提及的问题&#xff0c;这个问题可以问的很浅&#xff0c;也可以问的很深&#xff0c;具体看面试官看了你的简历后&#xff0c;对你的能力有什么样的看法&#xff0c;今天&#xff0c;我们就这个问…

postman发送与返回,GET与POST使用

1.GET 获取主页 发送&#xff1a; uri: ‘/’ 返回&#xff1a; 2.POST 发送密码 发送&#xff1a; uri: ‘/login.html’ 返回&#xff1a; 3.POST 保存参数 发送&#xff1a; 返回&#xff1a; 4.GET 获取参数 在POST密码之后&#xff0c;服务器发送一个H…

西门子PCS7在CFC中如何连接DB块中的变量

在CFC中所连接的DB块必须是用户数据块(User DB)。在CFC中通过菜单Options Customize Compile/Download… 可以查看和修改用户数据块的范围&#xff0c;默认范围是DB1-DB60&#xff0c;超出该范围的DB块在CFC中无法引用&#xff0c;如果引用了&#xff0c;CFC编译时会提示错误。…

Linux复习--系统管理类(权限优化、备份策略、RAID、资源查看、启动流程、系统优化)

一、权限优化 1、文件的基本权限 以下知识点详细情况点击&#xff1a; Linux--用户身份和文件权限_linux用户文件权限-CSDN博客https://blog.csdn.net/lerp020321/article/details/140232127 1.1、文件身份 身份分类&#xff1a;所有者&#xff08;u&#xff09;、所属组&am…

C++ | Leetcode C++题解之第430题扁平化多级双向链表

题目&#xff1a; 题解&#xff1a; class Solution { public:Node* flatten(Node* head) {function<Node*(Node*)> dfs [&](Node* node) {Node* cur node;// 记录链表的最后一个节点Node* last nullptr;while (cur) {Node* next cur->next;// 如果有子节点…

golang学习笔记11-模块化与包管理【重要】

注&#xff1a;本人已有C&#xff0c;C,Python基础&#xff0c;只写本人认为的重点。 在第六节&#xff08;golang学习笔记6&#xff09;中&#xff0c;我讲了如何自定义包&#xff0c;包其实有两种引用方式&#xff0c;一种是不用模块&#xff0c;还有种是用模块&#xff0c;我…

Leetcode 543. 124. 二叉树的直径 树形dp C++实现

问题&#xff1a;Leetcode 543. 二叉树的直径&#xff08;边权型&#xff09; 给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之…

创新学生宿舍管理:Spring Boot框架实践

第2章 开发环境与技术 学生宿舍管理系统的编码实现需要搭建一定的环境和使用相应的技术&#xff0c;接下来的内容就是对学生宿舍管理系统用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的&#xff0c;是经常变动的&#xff0c;没…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-20

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-20 1. Multimodal Fusion with LLMs for Engagement Prediction in Natural Conversation Authors: Cheng Charles Ma, Kevin Hyekang Joo, Alexandria K. Vail, Sunreeta Bhattacharya, Alvaro Fern’andez Ga…

《汇编语言》第14章——实验 14访问CMOS RAM

编程&#xff0c;以“年/月/日 时&#xff1a;分&#xff1a;秒”的格式&#xff0c;显示当前的日期、时间 assume cs:code data segment db 2024/09/23 00:00:00,$ data endscode segment start:mov ax,datamov es,axcall get_hms_funccall get_ymd_funcmov dh,12 ;dh中存放…

Beyond 5.5旗舰版和高级版激光软件

Beyond 5.5旗舰版和高级版激光软件具有以下一些特点和功能&#xff1a; 1. 强大的功能特性&#xff1a; • 多媒体支持&#xff1a;它是真正的多媒体控制激光软件&#xff0c;除支持基本的激光图案外&#xff0c;还支持视频、3D 动画和绘图程序等&#xff0c;为用户提供了丰富…

Springcloud框架-能源管理系统-能源管理系统源码-能源在线监测平台-双碳平台

一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 有需者咨询&#xff0c;非诚勿扰&#xff1b; 二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图

Windows11系统安装,配置CUDA、cuDNN等

已经有大几年没有安装过 Windows 的系统了&#xff0c;今天因为黑神话悟空&#xff0c;准备把 Win 11 装一台&#xff0c;玩玩游戏&#xff0c;顺便把一些 CUDA 相关的异步解析项目也安装到 Window 上。 下载安装 PE 因为十几年前&#xff0c;只会用 PE 装系统&#xff0c;所…

XSS闯关小游戏(前13关)

挖掘思路 1.存在可控参数 2.页面存在回显 3.使用带有特殊字符的语句去测试&#xff0c;网站是否进行了实例化 ( 例如 ">123 ) 4.构造闭合&#xff0c;实现payload的逃逸 1 name处参数可控&#xff0c;直接打即可 2 这里知道<>被实体编码了 再测试">1…

DANN GRL

域自适应是指在目标域与源域的数据分布不同但任务相同下的迁移学习&#xff0c;从而将模型在源域上的良好性能迁移到目标域上&#xff0c;极大地缓解目标域标签缺失严重导致模型性能受损的问题。 介绍一篇经典工作 DANN &#xff1a; 模型结构 在训练阶段需要预测如下两个任务…

langchain的构成

1.简介 langchain的构成其包含langchain-core,langchain-community,langchain,langgraph,langserve,langSmith。 2&#xff0c;构件的详解 ‌LangChain Core‌ ‌LangChain Core‌是LangChain框架的核心组成部分&#xff0c;它包含了不同组件的基本抽象以及将它们组合在一起…