变量
变量是以字母数字下划线组成的字符串,不能以数字开头,不能是Python里面的关键字,Python3里面可以使用中文,但不建议这样做
变量的形式:
驼峰命名,例如:InputName
下划线,例如:input_name
变量在内存中的命名是唯一的,变量只能指向数据,不能指向变量,变量和变量的赋值也是将数据的指向地址赋值过去,并不是变量
例1:
num1 = 10
num2 = num1
说明:
将num1赋值给num2也只是将num1指向的存储10的内存地址赋值给num2
常量
常量的值是不能被改变的,一但定义了常量,在后续操作中它的值是不能被改变的,Python中没有真正意义上的常量,我们一般是将常量用全部大写字母表示,并且放在文件的最上面
例1:
APP_CODE=1000001
注释
注释的作用是对代码进行解释说明,我们应该尽可能的对复杂的内容进行注释,方便后期或别人进行理解
单行注释使用井号(#)
多行注释使用三引号(''')
字符串的格式化
用+号拼接
注意:
用加号进行拼接,不同类型的数据是不能进行拼接的,比如str和int
例1:
name = "Tom"
age = "18"
job = "IT"
info = '''
name: '''+ name +'''
age: '''+ age +'''
job: '''+ job +'''
'''
print(info)
运行结果是:
name: Tom
age: 18
job: IT
%格式化字符串
使用%进行格式化需要指定格式化的参数类型
常用的类型有:
格式 | 类型说明 |
---|---|
%s | 字符串格式 |
%d | 整型格式(也可以用%i 他们等价) |
%f | 浮点数格式 |
%.2f | 带两个小数的浮点数格式(注意2前面有个点) |
%% | 输出百分号,第一个%相当于转义符 |
%c | 单个字符(或者integer类型或者单个字符的字符串) |
name = "Tom"
age = "18"
job = "IT"
info = '''
name: %s
age: %s
job: %s
''' % (name, age, job)
print(info)
运行结果是:
name: Tom
age: 18
job: IT
format格式化字符串
用format方式进行格式化在字符串中需要用大括号包含变量的方式进行占位
按变量名方式传入
按变量名方式传入无需按顺序,只要变量名对应即可
例1:
name = "Tom"
age = 18
job = "IT"
info = '''
name: {_name}
age: {_age}
job: {_job}
''' .format(_job=job,_name=name, _age=age)
print(info)
运行结果是:
name: Tom
age: 18
job: IT
按位置方式传入
按位置方式传入,是用大括号包括序号的方式,取值是按在format后面参数的顺序取值
例1:
name = "Tom"
age = 18
job = "IT"
info = '''
name: {1}
age: {2}
job: {0}
''' .format(job, name, age)
print(info)
运行结果是:
name: Tom
age: 18
job: IT
input用户输入
官方函数说明:
input(prompt=None, /)
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
注意:
input接受的全部是字符串
prompt是提示符号,默认是一个None,我们这里输入什么,在运行的时候就提示什么
例1:
name = input("input your name:")
print("你的名字是:", name)
运行结果是:
input your name:Tom
你的名字是: Tom
type判断变量的类型
type(object_or_name, bases, dict)
type(object) -> the object's type
type(name, bases, dict) -> a new type
if分支语句
if分支语句有几种种形式
if 结构
if结构只能进行一次判断,符合后面的条件执行里面的代码块,不符合,跳过继续执行后面的语句
例1:
name = input("请输入你的名字:")
if name == 'Tom':
print("你好,{input_name}".format(input_name=name))
print("good bye")
运行结果:
当输入的名字不是
"Tom"时:
请输入你的名字:Dave
good bye
当输入的名字是"Tom"时:
请输入你的名字:Tom
你好,Tom
good bye
if...else 结构
if...else当条件符合时,执行if块里面的内容,不符合的时候执行else块里面的内容
例1:
name = input("请输入你的名字:")
if name == 'Tom':
print("你好,{input_name}".format(input_name=name))
else:
print("欢迎,{input_name}".format(input_name=name))
print("good bye")
运行结果:
当输入的名字不是
"Tom"时:
请输入你的名字:Dave
欢迎,Dave
good bye
当输入的名字是"Tom"时:
请输入你的名字:Tom
你好,Tom
good bye
if...elif...结构
if...elif...可以进行多次判断,是if的扩展,符合某个条件执行某个条件块里面的内容,所有条件判断结束都不符合时,继续执行后面的内容
例1:
name = input("请输入你的名字:")
if name == 'Tom':
print("你好,{input_name}".format(input_name=name))
elif name == "Jerry":
print("欢迎,{input_name}".format(input_name=name))
print("good bye")
运行结果:
当输入的名字不是
"Tom"也不是"Jerry"时:
请输入你的名字:Dave
good bye
当输入的名字是"Tom":
请输入你的名字:Tom
你好,Tom
good bye
当输入的名字是"Jerry":
请输入你的名字:Jerry
欢迎,Jerry
good bye
if...elif...else结构
if...elif...else跟if...else类似只是多了几个判断而已
例1:
name = input("请输入你的名字:")
if name == 'Tom':
print("你好,{input_name}".format(input_name=name))
elif name == "Jerry":
print("欢迎,{input_name}".format(input_name=name))
else:
print("来啦,老弟")
print("good bye")
运行结果:
当输入的名字不是
"Tom"也不是"Jerry"时:
请输入你的名字:Dave
来啦,老弟
good bye
while 循环
while循环常用于没有明确循环次数的场景
语法:
while 条件:
循环体
break跳出循环
用break跳出循环,直接就结束了循环,不会执行后面的循环了
例1:
num, total = 1, 0 # 定义num初始值和total初始值
while True:
total += num
num += 1
if total == 5050:
print('num的最终值是:', num)
break
print('total的值是:', total)
运行结果是:
num的最终值是: 101 # num为101是因为当num是100的时候total=5050,num还要继续+1,所以num是101
total的值是: 5050
continue跳过循环
continue是跳过单次循环,继续后面的循环
例1:找出100以内的所有奇数
num = 0
while num < 100:
if num % 2 != 0: # 当num是偶数的时候,先+1然后结束本次循环
num += 1
continue # 结束本次循环,不执行后面的代码,回到num<100处继续执行
num += 1
print(num)
结果是:
1
3
5
......后面省略
例2:
flag = True
while flag:
print(111)
print(123)
flag = False
continue
print(456)
运行结果:
111
123
说明:
运行结果没有打印出456,也只打印了一次111和123,说明在执行到continue的时候,返回到了while flag处进行了判断,在continue之前赋值了flag=False,while flag 判断为条件不满足,所以退出了循环
while...else用法
while...else在while正常执行完毕,没有break跳出循环,才会执行else里面的内容,否则不会执行
注意:
continue不影响else里面语句的输出
例1:
num = 0
while num < 5:
num += 1
print(num, end='、 ') # end是改变结束符,默认是换行符
if num == 3:
break
else:
print("while 正常结束")
运行结果:
1、 2、 3、 # 并没有打印else里面的内容
例2:
num = 0
while num < 5:
num += 1
print(num, end='、 ') # end是改变结束符,默认是换行符
else:
print("while 正常结束")
运行结果:
1、 2、 3、 4、 5、 while 正常结束 # else里面的内容打印了
修改判断条件结束循环
我们可再程序中修改while的条件,来结束循环
例1:
count = 0
flag = True
while flag:
uname = input('用户名:')
upwd = input('密码:')
ucode = input('验证码:')
if ucode == 'qwer':
if uname == 'Tom' and upwd == '1234':
print('登录成功')
flag = False # 正常应该跳到其他页面,这里用更改循环条件
else:
print('用户名或密码错误')
else:
print('验证码错误')
count += 1
if count == 3: # 当尝试次数等于3时,改变循环条件结束循环
print('尝试次数太多,程序结束')
flag = False
运行结果1:第二次输入正确情况
用户名:aa
密码:aa
验证码:bb
验证码错误
用户名:Tom
密码:1234
验证码:qwer
登录成功
运行结果2:三次都不正确
用户名:aaa # 第一次尝试
密码:aaa
验证码:aaa
验证码错误
用户名:bbb # 第二次尝试
密码:bbb
验证码:bbb
验证码错误
用户名:ccc # 第三次尝试
密码:ccc
验证码:ccc
验证码错误
尝试次数太多,程序结束 # 利用改变循环条件退出循环
for循环
for循环用于执行有限次的循环,同样可以使用break和continue来跳出循环,当然也有for...else用法
break 跳出循环
例1:
string1 = '我是一只小小鸟'
for i in string1:
if i == '一':
break
print(i)
运行结果:
我
是
continue 跳过循环
例1:
string1 = '我是一只小小鸟'
for i in string1:
if i == '一':
continue
print(i)
运行结果:
我
是
只
小
小
鸟
for...esle用法
跟上面while...else一样,只有正常结束,没有break跳出的时候,才会执行else里面的语句
注意:
continue不影响else里面语句的输出
例1:
string1 = '我是一只小小鸟'
for i in string1:
if i == '一':
continue
print(i)
else:
print('for循环正常结束')
运行结果:
我
是
只
小
小
鸟
for循环正常结束
实现三元运算
Python是没有三元运算符的,但我们可以实现类似的三元运算
例1:
a, b, c = 1, 3, 8
d = a if a > b else c # 当a大于b,把a的值赋给d,否则把c的值赋给d
print('d的值是:', d)
运行结果是:
d的值是:8
以上代码等价于如下代码:
a, b, c = 1, 3, 8
if a > b:
d = a
else:
d = c
print('d的值是:', d)