风清扬

导航

Python之路(二)——基础语法

本节内容

  1. 变量
  2. 注释
  3. 换行
  4. 用户输入
  5. 数据类型
  6. 数据运算
  7. if ...else语句
  8. while 循环
  9. for 循环
  10. 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
long(长整型)
  跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
  注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。因此一个"整数" 统称为:int 类型。
float(浮点型)
  浮点数用来处理实数,即带有小数的数字。
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 

posted on 2018-06-08 12:05  卜戈的博客  阅读(211)  评论(0编辑  收藏  举报