今天就是学习Python的第二天了,内容会比昨天多一些,总之就是干就完了。
在设计程序的过程中,我们会使用变量作为存储数据的载体。变量的值可以被读取或修改,存储在一块内存空间总,这是所有计算和控制的基础。计算机能够处理的数据有很多种类型,比如数值、文本、图像、音频、视频等多种数据,所以不同类型的数据就需要通过定义不同的存储类型去区分。
Python中的数据类型:
1,123,714
2.1,123.456,2.12e4
i
换成了j
,举例:3+4j
\
转义特殊字符,举例"abc",'haha'
[]
,将数据元素写在方括号里,并使用逗号隔开元素,列表包含索引也可以被截取,举例:[1, "haha", [1, 2, 3]]
()
里,元素用逗号隔开。举例:(1, 1.23, "abc")
{}
或set()
函数创建集合,注意:创建一个空集合必须用set()
而不是{}
,这是因为{}
被用来创建空字典。举例:{1, 2, 3}
{'a': 1, 'b': 2', 'c': 3}
每个变量都要有它的名字,所以给变量起名就要做到见名知意,而且要有一定规范。
A
和小写的a
是两个不同的变量接下来通过几个简单的小例子说明变量的定义及使用
例子1:变量赋值、打印及打印他们的类型
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
def main():
a = 1 # 整型
b = 2.123 # 浮点型
c = "我是c" # 字符串型
d = False # 布尔型
e = 1 + 3j # 复数型
num_list = [a, b, e, [2, 4, 123]] # 列表
variable_tuple = (a, b, c, d, e, num_list) # 元组
variable_set = {a, b, a, 1, c, d} # 集合
score_dict = {'小明': 12, '张三': 34, '小红': 23} # 字典
print(a)
print("a的类型是:", type(a))
print(b)
print("b的类型是:", type(b))
print(c)
print("c的类型是:", type(c))
print(d)
print("d的类型是:", type(d))
print(e)
print("e的类型是:", type(e))
print(num_list)
print("num_list的类型是:", type(num_list))
print(variable_tuple)
print("variable_tuple的类型是:", type(variable_tuple))
print(variable_set)
print("variable_set的类型是:", type(variable_set))
print(score_dict)
print("score_dict的类型是:", type(score_dict))
if __name__ == '__main__':
main()
上面这个例子中使用type()
这个函数,作用是查看传入的参数的类型。
例子2:数字的运算
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
def main():
a = 13
b = 21
c = 0
print(a + b)
print(a - b)
print(a / b)
print(a * b)
print(b // a)
c += a
print("c += a", c)
c -= b
print("c -= a", c)
c *= a
print("c *= a", c)
c /= b
print("c /= a", c)
c //= a
print("c //= a", c)
print(c > a)
print(c <= b)
if __name__ == "__main__":
main()
事实上还有其他的运算符,以后我们会一一使用到,到时候再讲也来得及,这里只写几个简单的例子
运算符 | 描述 |
---|---|
[] [:] |
下标,切片 |
** |
指数 |
~ + - |
按位取反, 正负号 |
* / % // |
乘,除,模,整除 |
+ - |
加,减 |
>> << |
右移,左移 |
& |
按位与 |
^ \| |
按位异或,按位或 |
<= < > >= |
小于等于,小于,大于,大于等于 |
== != |
等于,不等于 |
is is not |
身份运算符 |
in not in |
成员运算符 |
not or and |
逻辑运算符 |
= += -= *= /= %= //= **= &= \|= ^= >>= <<= |
(复合)赋值运算符 |
体重指数的计算
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 体重指数的计算
def main():
height = int(input("请输入你的身高(cm):").strip())
weight = int(input("请输入你的体重(kg):").strip())
# 计算标准体重
standard_weight = height- 105
print("你的体重指数为:%.2f%%" % ((weight - standard_weight) / standard_weight * 100))
if __name__ == "__main__":
main()
这里使用了input()函数,strip()函数,int()函数,一一来做说明,input()函数是读取从控制台输入的内容,并返回字符串类型的值,strip()函数去除字符串两边的空格,int()函数是将字符串类型的值转化为int类型,但必须要求字符串值必须是数字,如果有字母汉字的存在会发生异常,程序终止,这个方法写的并不完善,更好的实现方式我们后面再说。
汇率转换
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 人民币兑换美元
def main():
count = int(input("请输入您要兑换的金额:").strip())
print("这里是您兑换的%.3f美元" % (count / 6.851))
if __name__ == "__main__":
main()
这个好简单啊,我都有点不好意思放上来,不过刚开始学python第二天嘛,弄得太复杂也不好,同样的这个方法写的并不完善,更好的实现方式我们后面再说。
在Python中,要构造分支结构,可以使用if
、elif
和else
关键字,使用:
来写if
的代码体,下面来看使用的例子
a, b = 10, 20
if a > b:
print("a大于b")
else:
print("b大于a")
这是if-else
组合使用
a, b = 10, 20
if a > b:
print("a大于b")
这就是单独使用if
的情况
if a > b:
print("a大于b")
elif a < b:
print("b大于a")
这是if-elif
组合使用的情况
a, b = 10, 20
if a > b:
print("a大于b")
elif a == b:
print("b等于a")
else:
print("a小于b")
这是if-elif-else
组合使用的情况
登录验证
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:登录验证
def main():
username = input("请输入用户名:").strip()
password = input("请输入密码:").strip()
if username == 'admin' and password == '123456':
print("登录成功")
else:
print("用户名或密码错误")
if __name__ == "__main__":
main()
当在控制台输入admin
和123456
时,会打印登录成功
,而当输入的不是这两项时,打印的就是用户名或密码错误
。所以各位一定要记好自己的用户名及密码,避免输入错误的情况。在学完循环后我们再对这段代码进行一次改善。
成绩转换,百分制->等级制
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:成绩转换,百分制->等级制
"""
90分以上 --> A
80分~89分 --> B
70分~79分 --> C
60分~69分 --> D
60分以下 --> E
"""
def main():
score = int(input("请输入你的成绩:").strip())
if 90 <= score <= 100:
grade = "A"
elif 80 <= score < 90:
grade = "B"
elif 70 <= score < 80:
grade = "C"
elif 60 <= score < 70:
grade = "D"
elif 0 <= score < 60:
grade = "E"
else:
print("请输入合理的成绩")
print("你的成绩等级是%s" % grade)
if __name__ == "__main__":
main()
有些时候我们会需要循环去做很多事情,比如重复执行输出语句10次,或者设定程序每间隔1分钟进行一次打印操作,我们不可能自己计时1分钟执行一次print函数,所以就用到了循环操作。在Python中构造循环结构有两种做法,一种是for-in
循环,另一种是while
循环。
就是相当于我们有一个容器items,一次拿一个容器里面的单个item,我们就可以这样实现:
items = [1, 2, 3, 4, 5, 6]
for item in items:
print(item)
上面这个例子是列表的遍历,也可以使用这样的方式:
items = [1, 2, 3, 4, 5, 6]
for i in range(len(items)):
print(items[i])
这个是通过range函数产生一个固定不变数字序列,然后通过索引进行对列表元素的输出items[i]
这是列表根据索引获取元素的方式。我们可以通过range函数做很多事情,比如求1~100所有数字的和
total = 0
for i in range(1, 101):
total += i
print(total)
参数说明,range函数一共可以填写三个参数,第一个是起始位置,第二个是终止位置,第三个是步长,比如range(1, 101, 2)
,这就是获取1到100之间的奇数,起始位置到终止位置其实是一个左闭右开的区间,[1,101),包括1而不包括101。
若我们不知道具体要循环几次,这时候推荐使用while
循环,它的循环控制条件是一个bool表达式或bool值,True
循环继续,False
循环终止。下面看几个小例子。
猜数字小游戏,若猜对退出循环,打印恭喜你答对了,猜错继续猜测
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:while循环
import random
def main():
target_num = random.randint(0, 100)
while True:
num = input("请输入数字:").strip()
if num.isdigit():
num = int(num)
if num > target_num:
print("猜大了")
elif num < target_num:
print("猜小了")
elif num == target_num:
print("恭喜你答对了")
break
else:
print("猜错了,请重来")
if __name__ == "__main__":
main()
这里面while True
是一个死循环,循环没有终止条件,当答对的时候通过break
跳出循环,否则一直在循环中进行循环。
在练习一中提到,那段程序可能会报错,如果输入的是字母或字符,程序会终止,自从我们学过if
判断就可以避免这种情况的发生了。再加上while
循环,直到计算成功一次,代码如下
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description: 体重指数的计算优化
def main():
while True:
height = input("请输入你的身高(cm):").strip()
weight = input("请输入你的体重(kg):").strip()
if height.isdigit() and weight.isdigit():
height = int(height)
weight = int(weight)
# 计算标准体重
standard_weight = height- 105
print("你的体重指数为:%.2f%%" % ((weight - standard_weight) / standard_weight * 100))
break
else:
print("请输入正确的格式!!!")
if __name__ == "__main__":
main()
在这里我们添加一个死循环,在输入错误的时候提示用户重新输入,只有结果被算出才会结束程序。其中用到了一个isdigit方法,这是判断字符串类型变量是否由纯数字构成的一个方法,是返回True
,否返回False
,当两个输入都判为纯数字的时候我们开始计算,并打印结果,跳出循环。
练习二的优化和练习一一样,学习要会举一反三,我就不写啦,但代码会传到我的github上,有需要的可以clone下来。
其实也就是加一次循环,哈哈哈,但这个贴一下吧,不贴出来我都怀疑自己偷懒。
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:登录验证优化
def main():
while 1 == 1:
username = input("请输入用户名:").strip()
password = input("请输入密码:").strip()
if username == 'admin' and password == '123456':
print("登录成功")
break
else:
print("用户名或密码错误")
if __name__ == "__main__":
main()
这次的循环条件我使用的是1 == 1
恒等式,效果和True
是一样的。直到登录成功,否则一直提示输入用户名和密码。
打印99乘法表
#!usr/bin/python
# -*- coding: utf-8 -*-
# author: 李爽
# description:99乘法表
def main():
i, j = 1, 1
while i < 10:
while j < i + 1:
print("%d*%d=%d" % (i, j, i * j), end="\t")
j += 1
i += 1
j = 1
print()
# for i in range(1, 10):
# for j in range(1, i + 1):
# print("%d*%d=%d" % (i, j, i * j), end="\t")
# print()
if __name__ == "__main__":
main()
while版本和for版本的,两种实现,print函数默认换行,使用end='\t'
可以将让print函数末尾换成一个横向制表符。\t
是一个转义字符代表横向制表符。其他转移字符会在学到字符串的时候列出,所以别着急,该来的会来的。
今天内容不少,这些一定要牢固的掌握,是基础中的基础,好好学习天天向上!
如果你发现我的文章哪里有错误或者有什么好的想法可以联系我,我们一起学习共同进步,我的邮箱地址是[email protected]
let’s do more of those!