第二章 python必备基础语法
经过第一章的学习,我们对python有了一定的了解,接下来我们学习它的基础语法。
一、变量
1.1 什么是变量?有什么用处?
变量就是可以发生改变的量(即可变的量);是用来记录事物状态,并且变量是可以发生改变的。
1.2 如何声明一个变量(即定义变量)?
name = 'wuchangwen' # 即变量值通过赋值符号(=)传给变量名的过程
gender = 'male'
age = 18
1.3 变量的命名规则及风格
命名规则:
'''
1.变量名只能是字母、数字、下划线的任意组合;
2.变量名的第一个字符不能是数字;
3.关键字和特殊符号不可以声明为变量名
'''
#查看python中的关键字
import keyword
print(keyword.kwlist)
命名风格:
tom_age = 18 # 小写加下划线
TomAge = 18 #驼峰体
1.4 变量值的三大特性
id:内存地址不同,id则不同
type:类型
value:值
作业:
1.什么是变量?
2.如何定义一个变量?
3.变量的命名规则和风格有哪些?
4.变量值有哪些特性?
5.小明同学今年三岁了,在未来之星幼儿园读小班,是班里唯一的男同学;请用变量名(名字、年龄、性别)把小明的信息打印出来。
name = '小明'
age = 3
gender = 'male'
print(name,age,gender)
1.5 基本数据类型
这里我们先认识基本概念,后面我们会专门讲解它们的内置方法。
1.5.1 数字类型(number)
python中的数字类型有四种:整数(整型)、小数(浮点型)、布尔型和复数
整型(int):1,100,1000等
浮点型(float):3.14、1.99等
布尔型(bool):True和False
复数(complex):1 + 2j、8.9 + 1.9j
1.5.2 字符串(String)
python中单引号和双引号完全相同
str = '我是字符串'
||
str = "我是字符串"
使用三引号可以写多行字符串
str = '''
我是字符串1
我是字符串2
我是字符串3
'''
str = """
我是字符串1
我是字符串2
我是字符串3
"""
1.5.3 列表(List)
列表类型可以用来记录多个同种属性的值(比如同一个班级多个学生的姓名、同一个人的多个爱好等),并且存取都十分方便
name_list = ['小明','小文','小凯']
1.5.4 字典
字典可以用来记录人的名字、性别、年龄等,主要以key:value的形式来存放数据
info_dict = {'name':'小文','gender':'男','age':18}
二、输入、输出
# 将用户的输入内容赋值给 name 变量名
name = input('请输入您的名字: ') # 输入
print('您的名字:',name) # 输出
# 简单地说:
# 输入:我们通过学习不断把新知识注入大脑
# 输出:我们把自己会的知识说出来教给他人
练习:
# 利用输入、输出的方式输入名字、年龄、性别
name = input('请输入名字:')
age = input('请输入年龄:')
gender = input('请输入性别:')
print('名字:',name,' 年龄:',age,' 性别:',gender)
经过练习,我们了解了输入输出的基本用法,接下来我们学习格式化输出
格式化输出
格式化输出的用法有很多,我们主要学习一些常用的方法。
# %d(用于连接整数)
print('上海第一中学总人数:%d'%3000)
# %s(用于连接字符串)
print('小明的家在%s'%"上海市")
# 常用转义字符 \(续行符) \\(反斜杠符号) \n(换行符) \t(横向制表符)
print('My name\
is wuchangwen')
print('一年有四个季节 \\春 \\夏 \\秋 \\冬')
print('一年有四个季节 \n春 \n夏 \n秋 \n冬')
print('一年有四个季节\t春\t夏\t秋\t冬')
# format:
# (1)不带编号,即“{}”
print('My name is {},my age is {}'.format('wuchangwen',18))
# (2)带数字编号,可调换顺序,即“{1}”、“{2}”
print('My name is {0},my age is {1}'.format('wuchangwen',18))
print('My name is {1},my age is {0}'.format(18,'wuchangwen')) # 可以打乱顺序输出
# (3)带关键字,即“{name}”、“{age}”
print('My name is {name},my age is {age}'.format(name='wuchangwen',age=18))
作业:
1.请用%d打印出你的年龄
2.请用%s格式化输出打印班级男女比率
3.请用转义字符 \(续行符) \\(反斜杠符号) \n(换行符) \t(横向制表符) 分别打印出一句话。
4.请用format的三种方法打印班级考勤。
作业答案:
# 1.请用%d打印出你的年龄
print('My age is %d'%18)
# 2.用%s格式化输出打印班级男女比率
print('我们班由%s的男同学和%s的女同学组成。'%('51%','49%'))
# 3.请用转义字符 \(续行符) \\(反斜杠符号) \n(换行符) \t(横向制表符) 分别打印出一句话。
print('昨天我学了\
python简介')
print('树上的鸟儿\\时而跳\\时而唱歌\\时而观望远处')
print('上海著名的旅游景点:\n外滩\n迪士尼\n上海动物园')
print('昨天刮了风\t今天下了雨\t明天太阳就会出来!')
# 4.请用format打印班级考勤。
print('上海985大学:{}, 总人数:{}, 实到人数:{}, 请假人数:{},请假人:{}'.format('人工智能精英班',30,29,1,'张三'))
print('上海985大学:{0}, 总人数:{1}, 实到人数:{2}, 请假人数:{3},请假人:{4}'.format('人工智能精英班',30,29,1,'张三'))
print('上海985大学:{school}, 总人数:{sum}, 实到人数:{count}, 请假人数:{num},请假人:{name}'.format(school='人工智能精英班',sum=30,count=29,num=1,name='张三'))
三、流程控制if、else、elif
3.1 if、else、elif基本用法
'''
如果你今年大于18岁了,则打印 恭喜你成年了
否则打印 你还未未成年
'''
age = input('please input your age: ')
age = int(age)
if age > 18:
print('恭喜你成年了')
else:
print('你还未未成年')
'''
根据多用户输入的内容输出其会员信息
wuchangwen --> 超级会员
tom --> 普通会员
tony --> 没会员
其他 --> 会员不存在
'''
name = input('请输入会员名:')
if name == 'wuchangwen':
print('超级会员')
elif name == 'tom':
print('普通会员')
elif name == 'tony':
print('没会员')
else:
print('会员不存在!')
作业
一、选择题
1.以下代码输出的结果是?
if None:
print(“Hello”)
A.False
B.Hello
C.没有任何输出
D.语法错误
2.在 if...elif...else 的多个语句块中只会执行一个语句块?
A.正确
B.错误
C.根据条件决定
D.Python中没有elif语句
3.以下代码输出结果为?
for i in [1, 0]:
print(i+1)
A.2
1
B.[2,1]
C.2
D.0
二、代码题
'''
4.根据学生成绩为学生评级
学生分数小于等于100分大于等于90分,则打印优秀
学生分数小于90分大于等于75分,则打印良好
学生分数小于75分大于等于60分,则打印及格
学生分数小于60分,则打印不及格,要更加努力!
'''
答案
1.C 2.A 3.A
4.根据学生成绩为学生评级
score = int(input('请输入你的分数:'))
if 90 <= score <= 100:
print('优秀')
elif 75 <= score <90:
print('良好')
elif 60 <= score < 75:
print('及格')
else:
print('不及格,要更加努力!')
四、python运算符
4.1 算数运算符
a = 9
b = 3
print(a + b) # 加 12
print(a - b) # 减 6
print(a * b) # 乘 27
print(a / b) # 除 3.0
print(a % b) # 取模 返回除法的余数 0
print(a ** b) # 幂 返回a的b次幂 729
print(a // b) # 取整除 返回商的整数部分 3
4.2 比较运算符
a = 9
b = 3
print(a == b) # 等于 False
print(a != b) # 不等于 True
print(a > b) # 大于 True
print(a < b) # 小于 False
print(a >= b) # 大于等于 True
print(a <= b) # 小于等于 False
4.3 赋值运算符
a = 9
b = 3
c = a + b # 简单的赋值运算
print(c) # 12
b += a # 加法赋值运算 等同于 b = b + a
print(b) # 12
b -= a # 减法赋值运算 等同于 b = b - a
print(b) # -6
b *= a # 乘法赋值运算 等同于 b = b * a
print(b) #27
b /= a # 除法赋值运算 等同于 b = b / a
print(b) # 0.3333333333333333
b %= a # 取模赋值运算 等同于 b = b % a
print(b) # 3
b **= a # 幂赋值运算 等同于 b = b ** a
print(b) # 19683
b //= a # 取整除赋值运算 等同于 b = b // a
print(b) # 0
4.4 逻辑运算符
a = True
b = False
print(a and b) # “与” 有一个错则全错
print(a or b) # “或” 有一个对则全对
print(not a) # "非" 如果b为True,则返回False
print(not b) # "非" 如果b为False,则返回True
4.5 成员运算符
L = [1,2,3,4,5,6,7,8]
print(1 in L) # 如果在L中找到1,则返回True
print(9 in L) # 如果在L中找不到9,则返回False
print(9 not in L) # 如果在L中找不到9,则返回True
print(1 not in L) # 如果在L中找到1,则返回False
4.6 位运算符
a = 1
b = 1
print(id(a) is id(b)) # is是判断两个标识符是不是引用自一个对象
print(id(a) is not id(b)) # is not是判断两个标识符是不是引用自不同对象
4.7 成员运算符(了解)
# 变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100
b = 0000 1101
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
实例
a = 60 # 60 = 0011 1100
b = 13 # 13 = 0000 1101
c = 0
c = a & b; # 12 = 0000 1100
print "1 - c 的值为:", c
c = a | b; # 61 = 0011 1101
print "2 - c 的值为:", c
c = a ^ b; # 49 = 0011 0001
print "3 - c 的值为:", c
c = ~a; # -61 = 1100 0011
print "4 - c 的值为:", c
c = a << 2; # 240 = 1111 0000
print "5 - c 的值为:", c
c = a >> 2; # 15 = 0000 1111
print "6 - c 的值为:", c
4.8 运算符优先级(了解)
作业:
1.把上面的案例多练两遍,要求做到熟练掌握。
2.x 的 y 次方(xy) 以下表达式正确的是?
A.x^y
B.x**y
C.x^^y
D.python没有提到
3.22 % 3 表达式输出结果为?
A.7
B.4
C.3
D.1
4.3*1**3 表达式输出结果为?
A.27
B.9
C.3
D.1
5.9//2 表达式输出结果为?
A.1
B.2
C.3
D.4
6.如果表达式的操作符有相同的优先级,则运算规则是?
A.左到右
B.右到左
C.从中间到两边
D.看心情
7.以下代码输出结果为?
x = True
y = False
z = False
if x or y and z:
print("yes")
else:
print("no")
A.yes
B.no
C.typeerror·
D.nameerror
8.以下代码输出结果为?
x = True
y = False
z = False
if not x or y:
print(1)
elif not x or not y and z:
print(2)
elif not x or y or not y and x:
print(3)
else:
print(4)
A.1
B.2
C.3
D.4
答案:2.B 3.D 4.C 5.D 6.A 7.A 8.C
五、循环结构(while、for)
5.1 什么是循环?什么是循环结构?
老师我知道!循环就是重复做事情。
对的,循环就是重复做某件事情,比如每天学习、工作、呼吸等等。
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构(通俗的说就是重复执行某段代码块),它由循环体和判断条件两部分组成。
5.2 while循环
5.2.1 python中while语句的一般形式:
while 判定条件:
语句(循环体)
5.2.2 下面举个例子
#利用while循环打印数字1-9
num = 1
while num <= 9:
print(num)
num += 1
#如果条件为真的话则语句执行,执行结束后再次循环,重新判断条件是否符合
#如果条件为假则循环体不会执行,循环结束
有了一定的认识后,我们再来做一个练习
练习:使用while计算1到100之和
sum = 0 # 没有计算之前总数0
count = 1 # 第一个数为1
num = 100 # 最后一个数为100
while count <= num: # 判断count是否小于等于100,当循环到count<num时,程序结束
sum = sum + count # 求和
count += 1 # 循环一次加1
print("1到100之和为:",sum) # 打印求和
5.2.3 无限循环
经过小练习,我们对while循环有了更多的认识。
当条件为True时,程序会无限循环
while True:
print('无限循环')
练习1:利用无线循环写一个输入输出程序
while True:
num = int(input("今天你上了几节课:"))
print("今天你上了%s节课!" % num)
print('学习使我们获得知识,继续努力!')
练习2:利用无限循环和时间模块,让程序睡一秒再继续打印下一个数字。
import time # 导入时间模块,此处我们不需要什么是模块,后面我们会专门讲解模块的知识
num = 1
while True:
print('打印数字:',num)
time.sleep(1)
num += 1
5.2.4 while循环 + else语句
num = 1
while num < 9:
print(num, " 小于 9")
num = num + 1
else:
print(num, " 大于或等于 9")
5.2.5 while循环 + continue
# 打印数字1 2 3 5 6 7 8 9
num = 0
while num < 9:
num += 1
if num == 4: # 当num=4时,跳过4打印下一个数字
continue # 结束本次循环,跳到下一次循环
print('正在打印数字:', num)
5.2.5 while循环 + break
# 打印数字 1 2 3 后结束后面的循环
num = 0
while num < 9:
num += 1
if num == 4:
break # break和continue不同,当条件符合时,就会立即停止程序
print('正在打印数字:', num)
作业:
1.利用while循环打印1-100所有的奇数
2.利用while循环打印1-100所有的偶数
3.利用while循环打印数字1-100,跳过数字4和7时,继续执行程序
4.利用while循环打印数字1-100,当数字等于50时,终止程序
作业答案:
#1.利用while循环打印1-100所有的奇数
num = 1
while num <= 100:
if num % 2 != 0:
print(num)
num += 1
#2.利用while循环打印1-100所有的偶数
num = 1
while num <= 100:
if num % 2 != 1:
print(num)
num += 1
# 3.利用while循环打印数字1-100,跳过数字4和7时,继续执行程序
num = 0
while num < 100:
num += 1
if num == 4 or num ==7:
continue
print('正在打印数字:',num)
# 4.利用while循环打印数字1-100,当数字等于50时,终止程序
num = 0
while num < 100:
num += 1
if num == 50:
break
print('正在打印数字:',num)
5.3 for循环
5.3.1 for循环基本语法
for 变量名 in (字符串、列表、字典等):
语句1(循环体)
语句2(循环体)
...
为了更好的认识for循环,举几个简单的例子来学习。
# 字符串
for i in 'shanghai': 通过变量i把字符串一个个字母遍历出来
print(i)
# 列表
L = ['小明','小红','小李']
for i in L:
print(i)
# 字典
dic = {'name':'wuchangwen','age':18}
for i in dic:
print(i,dic[i])
5.3.2 for循环 + range函数
案例
# 案例一、打印数字0-9
for num in range(10): # range(10)会产生0,1,2,3,4,5,6,7,8,9这,10个数字
print(num)
# 案例二、for循环嵌套,当喊到谁名字时,就回复‘到’
name = ['小明','小红','小李']
report = '到'
for i in name:
print(i)
for j in report:
print(j)
练习
# 练习一、打印数字1-9
for num in range(1,10): # range(1,10)会产生1,2,3,4,5,6,7,8,9这9个数字
print(num)
# 练习二、打印图形
'''
^^^^^^^^^^^^
^^^^^^^^^^^^
^^^^^^^^^^^^
^^^^^^^^^^^^
^^^^^^^^^^^^
'''
for i in range(5):
for j in range(10):
print('^',end=' ')
print() # 换行
练习三、打印乘法表
for i in range(1,10):
for j in range(1,i+1):
print('%s*%s = %s '%(i,j,i*j),end=' ')
print()
作业:
一、选择题
1.Python 中,for 和 while 可以有 else 语句?
A.只有 for 才有 else 语句。
B.只有 while 才有 else 语句。
C.for 和 while 都可以有 else 语句。
D.for 和 while 都没有 else 语句。
2.以下代码输出的结果是?
i = sum = 0
while i <= 4:
sum += i
i = i+1
print(sum)
A.0
B.10
C.4
D.以上结果都不对。
3.以下代码输出的结果是?
while 4 == 4:
print('4')
A.输出一次 4。
B.输出四次 4。
C.无限次输出 4,直到程序关闭。
D.语法错误。
4.迭代输出序列时(如:列表)使用 for 比 while 更好?
A.错误,while 比 for 更好。
B.正确
C.错误,while 不能用于迭代系列。
D.错误,for 和 while 都不能用于迭代系列。
5.以下哪个描述是正确的?
A.break 语句用于终止当前循环。
B.continue 语句用于跳过当前剩余要执行的代码,执行下一次循环。
C.break 和 continue 语句通常与 if, if...else 和 if...elif...else 语句一起使用。
D.以上说法都是正确的。
6.以下代码输出的结果是?
for char in 'PYTHON STRING':
if char == ' ':
break
print(char, end='')
if char == 'O':
continue
A.PYTHON
B.PYTHONSTRING
C.PYTHN
D.STRING
7.以下关于 pass 哪个描述是正确的?
A.Python 会忽略 pass 语句,就像忽略注释一样。
B.pass 语句会终止当前循环。
C.pass 不做任何事情,一般用做占位语句。
D.以上说法都是正确的。
二、代码题
1.利用for循环打印1-100所有的奇数
2.利用for循环打印1-100所有的偶数
3.利用for循环打印1-100所有的奇数之和
4.利用for循环打印1-100所有的偶数之和
5.利用range打印1-100的和
6.利用for循环打印金字塔
作业答案:
一、选择题
1.C 2.B 3.C 4.B 5.D 6.A 7.D
二、代码题
# 1.利用for循环打印1-100所有的奇数
for i in range(1,101,2):
print(i)
# 2.利用for循环打印1-100所有的偶数
for i in range(2,101,2):
print(i)
# 3.利用for循环打印1-100所有的奇数之和
sum = 0
for i in range(0,101):
if i % 2 == 1:
sum += i
print(sum)
# 4.利用for循环打印1-100所有的偶数之和
sum = 0
for i in range(0,101):
if i % 2 == 0:
sum += i
print(sum)
# 5.利用range打印1-100的和
print(sum(range(101)))
# 6.利用for循环打印金字塔
x = 5
for y in range(1, x + 1):
for i in range(x - y):
print(' ', end='') # 在一行中连续打印多个空格
for j in range(2 * y - 1):
print('^', end='') # 在一行中连续打印^
print()
章节习题
题目
1.小文去年18岁了,在去年的基础上打印今年小文的年龄。(用数字相加的方式)
2.我们都知道"复旦大学",那么在这所大学的下面有一所附属中学,请用字符串相加的方式打印出来。
3.现在水果店里有一张价格表,请用格式化的方式输出下表。
4.猜猜我是谁?如果是“小文”则打印“恭喜猜对了”,否则打印“猜错了”。
5.请用1,2,3,4这四个数字组成不相同且不重复的三位数,请问能组成多少个?分别是什么?
6.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
答案
# 1.小文去年18岁了,在去年的基础上打印今年小文的年龄。(用数字相加的方式)
age = 18
new_age = age + 1
print(new_age)
# 2.现在有一所复旦大学,那么在它的下面有一所附属中学,请用字符串相加的方式打印出来。
name = '复旦大学'
new_name = name + "附属中学"
print(new_name)
#3.现在水果店里有一张价格表,请用格式化的方式输出下表。
width = int(input('请输入表格的宽度:'))
price_width = 10
item_width = width - price_width
header_format = '%-*s%*s'
format = '%-*s%*.2f'
print('=' * width)
# 打印表头
print(header_format % (item_width, '名称', price_width, '价格'))
print('-' * width)
print(format % (item_width, '苹果', price_width, 7.5))
print(format % (item_width, '桔子', price_width, 5.0))
print(format % (item_width, '香蕉', price_width, 3.8))
print(format % (item_width, '葡萄', price_width, 9.0))
print(format % (item_width, '石榴', price_width, 6.8))
print(format % (item_width, '西瓜', price_width, 2.5))
print('=' * width)
# 4.猜猜我是谁?如果是“小文”则打印“恭喜猜对了”,否则打印“猜错了”。
name = input('猜猜我是谁:')
if name == '小文':
print('恭喜猜对了')
else:
print('猜错了')
# 5.请用1,2,3,4这四个数字组成不相同且不重复的三位数,请问能组成多少个?分别是什么?
for i in range(1, 5):
for j in range(1, 5):
for k in range(1, 5):
if (i != k) and (i != j) and (j != k):
print(i, j, k)
6.企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,
可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,
高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?
i = int(input('净利润:'))
arr = [1000000,600000,400000,200000,100000,0]
rat = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for idx in range(0,6):
if i>arr[idx]:
r+=(i-arr[idx])*rat[idx]
print ((i-arr[idx])*rat[idx])
i=arr[idx]
print (r)
作者:吴常文
出处:https://blog.csdn.net/qq_41405475
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。