Python基础教程 pyhton 编辑器vim/pycharm/vscodelinux python3 --version windowspython --version运行python 代码交互模式在命令行输入python3 进入print(hello world) # 使用print函数输入“Hello world!”退出ctrld exit脚本模式快捷键ctrlz 后退健ctrl/ 增加注释 /取消注释# 注释sep表示多个元素之间的分割符如果不修改默认是空格print(hao,123,sep***) # 打印两个字符串hao和数字123, 修改默认分隔符为 ***end表示print语句的结束符如果不修改默认是换行\nprint(hao,123,com,sep***,end!!!\n)print(中国,end-) print(广州,end-) print(天河) 中国-广州-天河altp 出现提示 使用提示的语句Tab 加 两数字相加 两个字符窜是组合输入 input输入类型字符窜type检测数据类型a int(input(请输入数字1)) b int(input(请输入数字2)) print(ab)print (14) #5print(14) #14a input(商品标题) b input(请输入商品价格) print(商品标题: a 价格 b 元)litle input(请输入商品: )price float(input(请输入价格: ))print(商品标题: litle 价格 str(price) 元)请输入商品: ? 苹果请输入价格? 5.5商品标题: 苹果价格5.5元变量# float() 转为浮点型 # total 0 # price1 float(input(请输入蔬菜的单价)) # num1 float(input(请输入蔬菜的数量)) # price2 float(input(请输入牛肉的单价)) # num2 float(input(请输入牛肉的数量)) # # total price1 * num1 price2 * num2 # print(总价, total)数字型n1 2 整数 n2 3.14 浮点数字符窜 型Python中的字符串String是用于表示文本数据的数据类型使用单引号、双引号或三引号 或 来定义。字符串的特点不可变性字符串一旦创建其内容就不能被修改。有序性字符串中的字符按顺序排列可以通过索引访问。可迭代可以使用循环遍历字符串中的每个字符。字符串的创建# 使用单引号 str1 Hello # 使用双引号 str2 World # 使用三引号多行字符串 str3 这是一个 多行 字符串 # 空字符串 empty_str # 字符串中包含引号 quote_str He said, Python is great! # 转义字符 escape_str 第一行\n第二行\t制表符字符串的常用操作访问字符使用索引索引从0开始pres Python print(s[0]) # 输出P print(s[-1]) # 输出n负索引表示从末尾开始切片操作获取子字符串s Hello World print(s[0:5]) # 输出Hello从索引0到4 print(s[6:]) # 输出World从索引6到末尾 print(s[:5]) # 输出Hello从开头到索引4 print(s[-5:]) # 输出World最后5个字符字符串连接s1 Hello s2 World result s1 s2 # 输出Hello World # 使用join方法 words [Hello, World, !] result .join(words) # 输出Hello World !字符串重复s Hi print(s * 3) # 输出HiHiHi字符串长度s Python print(len(s)) # 输出6成员检测s Hello World print(World in s) # 输出True print(Python not in s) # 输出True字符串常用方法方法描述示例str.upper()转换为大写hello.upper() → HELLOstr.lower()转换为小写HELLO.lower() → hellostr.strip()去除两端空白 hello .strip() → hellostr.split()分割字符串a,b,c.split(,) → [a,b,c]str.replace()替换子串hello.replace(l,x) → hexxostr.find()查找子串位置hello.find(ll) → 2str.startswith()检查开头hello.startswith(he) → Truestr.endswith()检查结尾hello.endswith(lo) → Truestr.format()格式化字符串{} {}.format(Hello,World) → Hello World字符串格式化三种方式name 小明 age 20 1. 使用 % 格式化旧式 print(姓名%s年龄%d % (name, age)) 2. 使用 format() 方法推荐 print(姓名{}年龄{}.format(name, age)) print(姓名{n}年龄{a}.format(nname, aage)) 3. 使用 f-stringPython 3.6最简洁 print(f姓名{name}年龄{age})转义字符\n换行\t制表符\\反斜杠\单引号\双引号\r回车\b退格原始字符串在字符串前加r或R转义字符不会被特殊处理原始字符串Raw String是 Python 中处理包含大量反斜杠字符的字符串的一种便捷方式。通过在字符串前添加前缀r或RPython 解释器会将该字符串视为原始字符串其中的反斜杠\不会被解释为转义字符而是作为普通字符处理。为什么需要原始字符串在普通字符串中反斜杠\用于表示转义序列如\n换行、\t制表符等。但在某些场景下我们需要反斜杠保持其字面意义Windows 文件路径Windows 使用反斜杠作为路径分隔符正则表达式正则表达式中经常使用反斜杠特殊字符序列需要保留反斜杠原样的场景原始字符串 vs 普通字符串下面通过对比示例来理解两者的区别# 普通字符串 - 反斜杠被解释为转义字符 path1 C:\Users\Name\Documents\file.txt print(path1) # 输出可能出错因为 \U、\N 等可能被解释为转义序列 原始字符串 - 反斜杠保持原样 path2 rC:\Users\Name\Documents\file.txt print(path2) # 正确输出C:\Users\Name\Documents\file.txt 另一个例子正则表达式中的反斜杠 pattern1 \d # 普通字符串需要双反斜杠 pattern2 r\d # 原始字符串单反斜杠即可 print(pattern1) # 输出\d print(pattern2) # 输出\d原始字符串的注意事项不能以奇数个反斜杠结尾原始字符串不能以单个反斜杠结尾因为反斜杠会转义后面的引号# 错误示例 # path rC:\Users\ # 语法错误反斜杠转义了后面的引号 正确做法 path rC:\Users \ # 或者使用普通字符串拼接 path C:\Users\ # 使用双反斜杠引号仍需转义原始字符串中的引号仍需要转义但反斜杠本身不会被转义# 原始字符串中的引号 raw_str rHe said, Hello! # 正确 raw_str rHe said, \Hello!\ # 正确但反斜杠会保留 print(rHe said, Hello!) # 输出He said, Hello!与格式化字符串结合Python 3.6 支持原始格式化字符串rf-stringsname Alice path rfC:\Users\{name}\Documents print(path) # 输出C:\Users\Alice\Documents实际应用场景文件路径处理# Windows 路径 windows_path rC:\Program Files\Python\Scripts print(windows_path) Unix/Linux 路径虽然 Unix 用正斜杠但有时也需要原始字符串 unix_path r/usr/local/bin/python3 print(unix_path)正则表达式import re 匹配数字的正则表达式 pattern r\d text 价格是123元 match re.search(pattern, text) if match: print(f找到数字{match.group()}) # 输出找到数字123SQL 语句# 包含反斜杠的 SQL 语句 sql rSELECT * FROM users WHERE path LIKE C:\Users\% print(sql)特殊字符序列# 需要保留反斜杠的场景 raw_data rColumn1\tColumn2\tColumn3\nValue1\tValue2\tValue3 print(raw_data) # 输出Column1\tColumn2\tColumn3\nValue1\tValue2\tValue3原始字符串是 Python 中处理特殊字符序列的强大工具特别是在处理文件路径、正则表达式和需要保留反斜杠的场景中非常有用。记住原始字符串只是改变了反斜杠的解释方式字符串的其他特性如不可变性、索引、切片等保持不变。path rC:\Users\Name\Documents # 反斜杠不会被转义 print(path) # 输出C:\Users\Name\Documentss1 hellos2 5print(s1,s2, typeb1)布尔型b1 Ture #真b2 False #假空 None原行输出 s3 1 2 3 4 5 6 7 8 9 print(s3) s3 《寄黄几复》 我居北海君南海 寄雁传书谢不能。 桃李春风一杯酒 江湖夜雨十年灯。 print(s3) 《寄黄几复》 我居北海君南海 寄雁传书谢不能。 桃李春风一杯酒 转字符类型 price5000 print(price,type(price)) pstr(price) print(p,type(p)) 5000 class int 5000 class strPython默认以十进制数显示数字以0o 或 0O开头表示为8 进制数数字以0x 或 0X开头表示16 进制数数字以0b 或 0B开头表示2 进制数n1 0b100 # 2进制以0b开头n2 0o12 # 8进制以0o开头n3 0xf # 16进制以0x开头print(n1, n2, n3)4 10 15n4 16# 进制转换print(2进制, bin(n4)) # 10000print(8进制, oct(n4)) # 0o20print(16进制, hex(n4)) # 0x102进制 0b100008进制 0o2016进制 0x10运算符运算符描述实例加10 20 30-减10 - 20 -10*乘10 * 20 200/除10 / 20 0.5//取整除返回除法的整数部分商 9 // 2 输出结果 4%取余数返回除法的余数 9 % 2 1**幂又称次方、乘方2 ** 3 8基本的数字类型有int有符号整数bool布尔值True1False0float浮点数小数逻辑运算符运算符逻辑表达式描述andx and y只有 x 和 y 的值都为 True才会返回 True否则只要 x 或者 y 有一个值为 False就返回 Falseorx or y只要 x 或者 y 有一个值为 True就返回True只有 x 和 y 的值都为 False才会返回 Falsenotnot x如果 x 为 True返回 False如果 x 为 False返回 True赋值运算符 - / × %截取字符串str helloworld print(str[2:5]) print(str[-5:]) print(str[5:]) print(str[:5])if判断age 22 if age 18: print(成年人) print(可以去网咖) else: print(未成年人) score int(input(请输入成绩)) if not 0 score 100: print(非法的成绩) elif score 90: # 0 score 100 print(优秀) elif score 80: # 0 score 90 print(良好) elif score 70: print(中等) elif score 60: print(及格) else: print(不及格)import random# 随机获取一个元素com random.choice([石头, 剪刀, 布])# print(com)# 玩家手动输入player input(玩家请出拳)# 判断胜负# 将电脑获胜的情况放到一个列表中 石头,剪刀 剪刀,布 布,石头# 将电脑和玩家的出拳放入到一个列表com_win [[石头, 剪刀],[剪刀, 布],[布, 石头]]if com player:print(平局)elif [com, player] in com_win:print(电脑胜)else:print(玩家胜)while 循环# 练习计算出1~100之间所有整数的和# 定义变量保存总和total 0 # 0 1 2 3 ... 100i 1while i 100:# i 代表所有整数# 将每个整数加到totaltotal ii 1# 循环结束后打印最终的总和print(总和, total)break 和continue# 循环打印1~10之间所有整数i 0while i 10:i 1# 如果i为5的时候if i 5:break # 跳出循环# continue # 跳过当前循环继续下一次循环print(i)else:# 当循环结束才会执行不包括break这种结束方式print(循环正常结束)# 使用循环打印输出1~100之间所有的偶数如果遇到奇数就跳过# i 1# while i 100:# # 如果遇到奇数跳过# if i % 2 1:# # 需要让i自增再跳过# i 1# continue# print(i)# i 1for循环score [72,83,90,60,52]total0for i in score:totaliprint(total/len(score))71.4Pythonscore [72, 83, 90, 60, 52] print(sum(score) / len(score)) # 结果同样是 71.4for i in range(1,11,2):print(i)13579for i in range(5):print(nihao1,i)nihao1 0nihao1 1nihao1 2nihao1 3nihao1 4