一、变量
1.类型转换函数
int(x) | 将x转换为一个整数 |
---|---|
float(x) | 将x转换为一个浮点数 |
将通过input输入的字符串转换为数字类型。
>>> int("123")
123
>>> type(int("123"))
<class 'int'>
>>> type(float("12.3"))
<class 'float'> |
# 单价
price_str = input("苹果的单价:")
# 重量
weight_str = input("苹果的重量:")
# 总金额
# 两个字符串变量之间不能直接做乘法
price = float(price_str)
weight = float(weight_str)
money = price * weight
print(money)
–》改进以上代码(接收用户输入的同时就使用float函数进行转换)
两个函数嵌套使用
price = float(input("苹果的单价:"))
weight = float(input("苹果的重量:"))
money = price * weight
print(money)
2.变量的格式化输出
如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符%(专门用于处理字符串中的格式)。
包含 % 的字符串,被称为格式化字符串。
% 和不同的字符连用,不同类型的数据需要使用不同的格式化字符。
格式化字符 | 含义 |
---|---|
%s | 字符串 |
%d | 有符号十进制整数,%06d表示输出的整数显示位数,不足的地方用0补全 |
%f | 浮点数,%.02f表示小数点后只显示两位 |
%% | 输出% |
print(“格式化字符串” %变量1)
print(“格式化字符串” %(变量1,变量2…))
name = "小明"
print("我叫%s,请多多关照!" % name)
# %前后最好都有一个空格
student_no = 1
print("我的学号是%05d" % student_no) # 学号是00001
# 如果不到5位,则左边用0补齐,如果超过5位,则该是多少就是多少
print("我的学号是%5d" % student_no) # 学号是 1
price = 5.5
weight = 5
money = price * weight
print("苹果单价%f元/斤,购买了%f斤,总价%f元" % (price, weight, money))
# 默认%f是6位小数
# 苹果单价5.500000元/斤,购买了5.000000斤,总价27.500000元
print("苹果单价%.2f元/斤,购买了%.3f斤,总价%.4f元" % (price, weight, money))
# 苹果单价5.50元/斤,购买了5.000斤,总价27.5000元
# 定义一个小数scale,输出 数据比例是10.00%
scale = 0.25 * 100
print("数据比例是%f%%" % scale)
# 数据比例是25.000000%
print("数据比例是%.2f%%" % scale)
# 数据比例是25.00%
scale1 = 0.25
print("数据比例是%.2f%%" % scale1 * 10)
# 会输出10个“数据比例是0.25%”
print("数据比例是%.2f%%" % (scale1 * 100))
# 数据比例是25.00%
3.变量的命名
(1)标识符
标识符由字母、下划线和数字组成。
标识符不能以数字开头。
标识符不能与关键字重名。
(2)关键字
关键字是在python内部已经使用的标识符,关键字具有特殊的功能和含义。
IPython中查看python关键字
In [1]: import keyword
//回车后就会把keyword这个工具包加载到内存
In [2]: print(keyword.kwlist)
import关键字可以导入一个工具包,这里keyword就是一个工具包的名字。
(3)驼峰命名法(python中其实并不常用)
小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写。如firstName
大驼峰式命名法:每一个单词的首字母都采用大写字母。如FirstName
(4)在python中,如果变量名需要有两个或多个单词组成时:每个单词都使用小写字母;单词和单词之间使用下划线连接。
4.python中的标识符是区分大小写的。
二、判断(if)语句
1.if语句
if 要判断的条件:
条件成立时要做的事情 # 这里是tab,不过建议使用4个空格
在python开发中,tab和空格不要混用。
age = 12
if age >= 18:
print("进网吧happy")
print("这是满足条件执行的第二个语句")
print("这句代码无论条件是否满足都会执行")
if语句以及缩进部分是一个完整的代码块。
if语句后,只要是前面有4个空格,那么都是条件成立时要做的事情。
比较(关系运算符)
相等==
不相等!=
大于>
小于<
大于等于>=
小于等于<=
Python2.x中判断不等于还可以使用<>运算符。(也可以使用!=)
2.else处理条件不满足的情况
if 要判断的条件:
条件成立时要做的事情
.....
else:
条件不成立时要做的事情
.....
if 和 else语句以及各自的缩进部分共同是一个完整的代码块。
ctrl+/快速增加减少删除注释
age = int(input("请输入年龄:"))
if age >= 18:
print("进网吧happy")
else:
print("回家写作业去")
3.逻辑运算
(1)逻辑运算符可以把多个条件按照逻辑进行连接,变成更复杂的条件。
python中的逻辑运算符包括and,or,not三种。
条件1 and 条件2
条件1 or 条件2
not 条件
age = 12
if age >= 0 and age <= 120:
print("年龄正确")
else:
print("年龄不正确")
python_score = 40
c_score = 55
if python_score > 60 or c_score > 60:
print("考试通过")
else:
print("不通过")
is_employee = False
if not is_employee:
print("非本公司人员,请勿入内")
4.elif
if 条件1:
条件1满足执行的代码
......
elif 条件2:
条件2满足执行的代码
......
elif 条件3:
条件3满足执行的代码
......
else:
以上条件都不满足时执行的代码
......
elif 和 else 都必须和if联合使用,而不能单独使用。
可以将if、else、elif以及各自缩进的代码,看成一个完整的代码块。
holiday = "春节"
if holiday == "春节":
print("过大年")
elif holiday == "国庆节":
print("看阅兵")
else:
print("day day up")
python中字符串的比较用双等号。 holiday == “国庆节”
5.if的嵌套
多行共同缩进
选中多行,按tab键,向右缩进;
选中多行,按shift+tab,向左缩进
has_ticket = True
knife_length = 10
if has_ticket:
print("车票检查通过,准备开始安检")
if knife_length > 20:
print("您携带的刀太长了,有%d公分长" % knife_length)
print("不允许上车")
else:
print("安检已通过,祝您旅途愉快")
else:
print("请先购买车票")
6.随机数的处理
在python中,要使用随机数,首先需要导入随机数的模块-工具包。
import random
导入模块后,可以直接在模块名称后面敲一个 . 然后按tab键,会提示该模块中包含的所有函数。
random.randint(a,b),返回[a,b]之间的整数,包含a和b。
random.randint(12,20) # 生成的随机数12<=n<=20
random.randint(20,20) # 结果永远是20
random.randint(20,10) # 该语句是错误的,下限必须小于上限
注意:在导入工具包的时候,应该将导入的语句放在文件的顶部。因为这样可以方便下方的代码,在任何需要的时候使用工具包中的工具。
石头剪刀布
# 导入随机工具包
import random
# 玩家出拳
player = int(input("请输入您要出的拳 石头(1)/剪刀(2)/布(3)"))
# 电脑出拳
computer = random.randint(1, 3)
print("玩家选择的拳头是%d - 电脑出的拳是%d" % (player, computer))
if ((player == 1 and computer == 2)
or (player == 2 and computer == 3)
or (player == 3 and computer == 1)):
print("玩家胜利")
elif player == computer:
print("平局")
else:
print("电脑胜利")
三、循环
1.程序的三大流程
顺序
分支
循环
2.while循环
初始条件设置-通常是重复执行的 计数器
while 条件(判断计数器是否达到目标次数):
条件满足时做的事情.......
处理条件(计数器+1)
while语句以及缩进部分是一个完整的代码块。
i = 1
while i <= 5:
print("hello")
i = i + 1
# 输出5个hello
死循环
由于程序员的原因,忘记在循环内部修改循环的判断条件,导致循环持续执行,程序无法终止。
3.赋值运算符
=,+=,-=,*=,/=,//=,%=,**=
注意:赋值运算符中间不能使用空格。
4.程序计数法-从0开始
除非需求的特殊要求,否则循环的计数都从0开始。
5.循环计算
# 实现0~100之间的累计求和
result = 0
i = 0
while i <= 100:
sum += i
i += 1
print(result)
# 实现0~100之间所有的偶数求和
result = 0
i = 0
while i <= 100:
if i % 2 == 0:
print(i)
result += i
i += 1
print(result)
6.break和continue关键字
(1)break和continue是专门在循环中使用的关键字。
break-某一条件满足时,退出循环,不再执行后续重复的代码;
continue-某一条件满足时,跳过这次循环,继续开始下一次循环(跳到下一次的条件判断);
(2)break
i = 0
while i < 10:
if i == 3:
break
print(i)
i += 1
# 只输出了0 1 2
(3)continue
死循环
i = 0
while i < 10:
if i == 3:
continue
print(i)
i += 1
在循环中,如果使用continue这个关键字,在使用关键字之前,需要确认循环的计数是否修改,否则可能会导致死循环。
i = 0
while i < 10:
if i == 3:
i += 1
continue
print(i)
i += 1
# 输出了从0到9(没有3)
7.循环嵌套
python中代码的缩进就表示了代码的所属关系
# 在控制台连续输出五行*,每一行星号的数量依次递增
i = 1
while i <= 5:
print("*" * i)
i += 1
【扩展】:print函数的结尾处理
默认情况下,print函数输出内容之后,会自动在内容末尾增加换行。
如果不希望增加换行,可以在print函数输出内容的后面增加 , end=""。
其中""中间可以指定print函数输出内容之后,继续希望显示的内容。
end=""表示向控制台输出内容结束之后,不会换行。
# 向控制台输出内容结束之后,不会换行
print("*", end="")
# 单纯的换行
print("")
print("*", end="---")
print("*")
# 输出为 *---*
# *
# **
# ***
# ****
# *****
# 使用循环嵌套在控制台连续输出五行*,每一行星号的数量依次递增
row = 1
while row <= 5:
col = 1
while col <= row:
print("*", end="")
col += 1
print("")
row += 1
# 使用循环嵌套在控制台输出九九乘法表
row = 1
while row <= 9:
col = 1
while col <= row:
print("%d * %d =%2d" % (col, row, row*col), end=" ")
col += 1
print("")
row += 1
# 1 * 1 = 1
# 1 * 2 = 2 2 * 2 = 4
# 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
# 1 * 4 = 4 2 * 4 = 8 3 * 4 =12 4 * 4 =16
# 1 * 5 = 5 2 * 5 =10 3 * 5 =15 4 * 5 =20 5 * 5 =25
# 1 * 6 = 6 2 * 6 =12 3 * 6 =18 4 * 6 =24 5 * 6 =30 6 * 6 =36
# 1 * 7 = 7 2 * 7 =14 3 * 7 =21 4 * 7 =28 5 * 7 =35 6 * 7 =42 7 * 7 =49
# 1 * 8 = 8 2 * 8 =16 3 * 8 =24 4 * 8 =32 5 * 8 =40 6 * 8 =48 7 * 8 =56 8 * 8 =64
# 1 * 9 = 9 2 * 9 =18 3 * 9 =27 4 * 9 =36 5 * 9 =45 6 * 9 =54 7 * 9 =63 8 * 9 =72 9 * 9 =81
8.字符串中的转义字符
\t在控制台输出一个制表符,协助在输出文本时垂直方向保持对其。
\n在控制台输出一个换行符。
制表符的功能是在不使用表格的情况下在垂直方向按列对齐文本。
转义字符 | 描述 |
---|---|
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
# \t协助在输出文本时 垂直方向保持对齐
print("1 2 3")
print("10 20 30")
# 1 2 3
# 10 20 30
print("1\t2\t3")
print("10\t20\t30")
# 1 2 3
# 10 20 30
# 使用\t进行对齐
print("%d * %d =%2d" % (col, row, row*col), end="\t")
四、函数
1.函数:把具有独立功能的代码块组织成一个小模块,在需要的时候调用。
函数的使用:
定义函数-封装独立的功能;
调用函数-享受封装的成果;
函数的作用:在开发程序时,使用函数可以提高编写的效率以及代码的重用。
示例
hm_01_九九乘法表.py文件中是刚刚编写的打印九九乘法表的代码,在此程序的最上方增加:
# 函数定义
def multiple_table():
并将下面所有的代码通过tab键向右缩进4个空格,这样就完成了函数的定义。
在另一个hm_02_函数调用.py文件中,导包后进行函数调用:
import hm_05_循环
hm_05_循环.multiple_table()
然后在run “hm_02_函数调用”,可以看到控制台输出了九九乘法表。
2.函数的定义
def 函数名():
函数封装的代码
.........
def-define。
函数名称应该能够表达函数封装代码的功能,方便后续的调用。
函数名称的命名应该符合标识符的命名规则。(字母、下划线、数字组成;不能由数字开头)
3.函数调用
通过函数名()即可完成调用。
函数定义好后,如果不主动调用函数,函数是不会主动执行的。
# 函数的定义
def say_hello():
print("hello 1")
print("hello 2")
# 函数定义之后,最好有两个空行再开始下一句代码
# 函数的调用
say_hello()
不能将函数调用放在函数定义的上方。
在使用函数名调用函数之前,必须要保证python已经知道函数的存在。否则控制台会提示NameError:name ‘xxxx’ is not defined。
PyCharm的调试工具
F8 Step Over可以单步执行代码,会把函数调用看做是一行代码直接执行。
F7 Step Into可以单步执行代码,如果是函数,会进入函数内部,单步执行函数内部的代码。
4.函数的文档注释
开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号,连续的三对引号之间编写对函数的说明文字。
在函数调用位置,使用快捷键CTRL+Q可以查看函数的说明信息。
因为函数体相对比较独立,函数定义的上方,应该和其它代码(包括注释)保留两个空行。
def say_hello():
"""打招呼"""
print("hello 1")
print("hello 2")
5.函数的参数
在函数名的后面的小括号内部填写参数,多个参数之间使用逗号分隔。
def sum_2_num(num1, num2):
"""对两个数字的求和"""
result = num1 + num2
print("%d + %d = %d" % (num1, num2, result))
sum_2_num(20, 30)