Python之路(二)——基础语法
本节内容
- 变量
- 注释
- 换行
- 用户输入
- 数据类型
- 数据运算
- if ...else语句
- while 循环
- for 循环
- break and continue
一、变量
源自数学,在计算机领域中指 把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字
名字:变量名 or 变量 一段数据:变量值 or 值
声明变量
Python中第一次对变量进行赋值即声明,值得类型即为变量类型
my_name = "小屁孩"
print(my_name)# "小屁孩"
变量命名规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名
- ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
二、注释
用于源代码解释说明或者告知编译器脚本相关信息
#-*-coding=utf-8-*- #!/usr/bin/env python print("Hello,World!")# 打印Hello,World内容
单行注释
#开头开头
多行注释
'''
被注释内容
'''
PyCharm 中注释快捷方式: 选中待注释行,快捷键Ctrl /
三、换行
为了方便阅读代码,有时使用换行来美化代码
显示换行
year = 2018 month = 6 day = 7 hour = 10 minute = 58 second = 20 if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date print('explicit line joining')
隐示换行
users = [ {"username": "alex1", "userpasswd": "456"}, {"username": "alex2", "userpasswd": "456"}, {"username": "alex3", "userpasswd": "456"}, {"username": "alex4", "userpasswd": "456"}, {"username": "alex5", "userpasswd": "456"}, {"username": "alex6", "userpasswd": "456"}, ]
四、用户输入
score = input("请输入你得成绩:") if score > 90: print("非常优秀") elif score > 80: print("优秀") elif score >= 60: print("合格") else: print("很遗憾,不及格")
五、数据类型
变量类型由声明时候得数据类型决定,变量可以指向同类型的不同数据值
1、数字
可以用于数学运算的类型
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。因此一个"整数" 统称为:int 类型。
float(浮点型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。因此一个"整数" 统称为:int 类型。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
2、布尔值
True False
3、字符串
有意义的一串符号,用引号(' or ")包括。常用功能如下:
- 移除空白
- 分割
- 长度
- 索引
- 切片
代码举例:
score = 90 # 整数 pi = 3.1415926 # 浮点数 my_name = " 秦始皇 " # 字符串 example = "alex is the best beautiful girl in my class." #字符串功能: #1.移除空白 print(my_name.strip()) #秦始皇 #2.分割 print(example.split(' ')) # ['alex', 'is', 'the', 'best', 'beautiful', 'girl', 'in', 'my', 'class.'] #3.长度 print(len(example)) # 44 #4.索引 print(example.index('the'))# 8 print(example[0]) # 'a' #5.切片 print(my_name[2:]) # 始皇 print(example[5:-1]) # is the best beautiful girl in my class.
----------------------------------------------------------以上类型也称 基础数据类型--------------------------------------------------------------------
----------------------------------------------------------以下类型也称 高阶数据类型--------------------------------------------------------------------
4、列表
对基础或者高级数据类型做有序排列,并用[] 包括。基本功能如下:
- 索引
- 切片
- 追加
- 删除
- 长度
- 循环
- 包含
代码举例:
# 列表 """ 索引 切片 追加 删除 长度 循环 包含 """ l1 = ['a', 'b', 'c'] l2 = list("hello,world!") # 创建列表 # print(l2) # ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!'] # #1.索引 # print(l2[2]) # l # #2.切片 # print(l2[4:-1:2]) # ['o', 'w', 'r', 'd'] # #3.追加 # l2.append("alex") # ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd', '!', 'alex'] # print(l2) # 4.删除 # 4.1 头尾删除 l2.pop() # ['h', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd'] 默认取最后一个 print(l2) l2.pop(0) # ['e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd'] print(l2) # 4.2 指定元素删除 l2.remove('e') # ['l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd'] l2.remove('l') # 找到第一个字符删除 del [l2[1]] l2.remove(l2[1]) print(l2) # ['l', 'w', 'o', 'r', 'l', 'd'] # pop 用于删除头尾 # remove 可以指定元素删除 # del 不常用 # 5.长度 print(len(l2)) # 6. 循环 # 9*9 乘法表 for i in range(1, 10): for j in range(1, i+1): print('%d * %d = %d' % (i,j,i*j), end='\t') print() # 7.包含 if 'w' in l2: print("l2含有w") # l2含有w
5、元组(不可变列表)
用()包括,其内容不可改变
#元组 point = (1,2) line1 = ((1,2),(3,4)) # 用两个点表示一条线 for item in line1: print(item[0],end=' ') # 1 3
6、字典(无序)
用{}包括,其内容使用键值对来表示
user1 = {"name": "alex"} user2 = {"name": "peter"} users = [] users.append(user1) users.append(user2) print(users) # [{'name': 'alex'}, {'name': 'peter'}] for user in users: print(user['name'],end=' ') # alex peter
6、集合(无序)
元素内容不能重复且无序,基本功能如下:
- 去重
- 交集
- 差集
- 并集
- 反向(对称)差集
# 集合 # l = [1, 3, 3, 2, 5, 7, 5] # l = list(set(l)) # print(l) # [1, 2, 3, 5, 7] # 运算操作 # 交集 set2 = {1,2,3,4,5} set3= {3,4,5,6,7,8} set4 = set2 & set3 set5 = set2.intersection(set3) print(set4, set5) # {3, 4, 5} {3, 4, 5} # 并集 set6 = set2 | set3 set7 = set2.union(set3) print(set6, set7) # {1, 2, 3, 4, 5, 6, 7, 8} {1, 2, 3, 4, 5, 6, 7, 8} # 差集 set8 = set2 - set3 set9 = set2.difference(set3) print(set8, set9) # {1, 2} {1, 2} ,保留被减数 set2 # 子集 set3 = {1,2,3} set4 = {1,2,3,4,5,6} print(set3 < set4) # True print(set3.issubset(set4)) # True print(set4 > set3) # True
六、数据运算
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:
位运算:
运算符优先级
使用()既可以使代码逻辑清晰,又可避免优先级错误
七、if...else语句
每类编程语言必须有三类常用语句:顺序、条件、循环
score = input("请输入你得成绩:") if score > 90: print("非常优秀") elif score > 80: print("优秀") elif score >= 60: print("合格") else: print("很遗憾,不及格") score = 90 # 整数
八、while循环
num = 1933 while True: guess = int(input("猜个数字> ")) if guess > num: print("太大了,再小点!") elif guess < num: print("太小了,再大点!") else: print("漂亮!byebyte!") break
九、for循环
for i in range(10): print('-'*i) # - # -- # --- # ---- # ----- # ------ # ------- # -------- # ---------
# 进度条 import time def bar(bar_width): for i in range(bar_width+1): time.sleep(0.1) prt_str = '进度条:[{:<' + str(bar_width) + '}]{:.0%}' print(prt_str.format('#'*i,i/bar_width)) if __name__ == '__main__': bar(50)
# 问题:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱? cock=1; hen=1; chicken=1 #默认数量为1只 while cock < 20: hen = 1 #恢复默认值 while hen <= (100 - 5*cock)//3: chicken = 100 - cock - hen if chicken%3 == 0: if (cock*5 + hen*3 + chicken/3) == 100: #print("cock=" + str(cock) + "; hen=" + str(hen) + "; chicken=" + str(chicken)) print("公鸡 %s 只,母鸡 %s 只,小鸡 %s 只" %(cock,hen,chicken)) hen = hen + 1 cock = cock + 1
十、break and continue
break:退出本层循环,continue 直接进入下一轮循环
#取偶数 for i in range(1,10): if i%2 == 1: continue print(i,end=' ') # 2 4 6 8