Python打卡2
一.变量和类型
在程序设计中,变量是一种存储数据的载体。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被读取和修改,这是所有计算和控制的基础。计算机能处理的数据有很多种类型,除了数值之外还可以处理文本、图形、音频、视频等各种各样的数据,那么不同的数据就需要定义不同的存储类型。Python中的数据类型很多,而且也允许我们自定义新的数据类型(这一点在后面会讲到),我们先介绍几种常用的数据类型。
1.数据类型
(1)整型:Python中可以处理任意大小的整数(Python 2.x中有int
和long
两种类型的整数,但这种区分对Python来说意义不大,因此在Python 3.x中整数只有int这一种了),而且支持二进制(如0b100
,换算成十进制是4)、八进制(如0o100
,换算成十进制是64)、十进制(100
)和十六进制(0x100
,换算成十进制是256)的表示法。
(2)浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456
)之外还支持科学计数法(如1.23456e2
)。
(3)字符串型:字符串是以单引号或双引号括起来的任意文本,比如'hello'
和"hello"
,字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。
(4)布尔型:布尔值只有True
、False
两种值,要么是True
,要么是False
,在Python中,可以直接用True
、False
表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5
会产生布尔值True
,而2 == 1
会产生布尔值False
)。
(5)复数型:形如3+5j
,跟数学上的复数表示一样,唯一不同的是虚部的i
换成了j
。实际上,这个类型并不常用,大家了解一下就可以了。
2.变量命名
(1)硬性规则:
①变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
②大小写敏感(大写的a
和小写的A
是两个不同的变量)。
③不要跟关键字(有特殊含义的单词,后面会讲到)和系统保留字(如函数、模块等的名字)冲突。
(2)PEP 8规则:
①用小写字母拼写,多个单词用下划线连接。
②受保护的实例属性用单个下划线开头(后面会讲到)。
③私有的实例属性用两个下划线开头(后面会讲到)。
注:在Python中可以使用type
函数对变量的类型进行检查。程序设计中函数的概念跟数学上函数的概念是一致的,数学上的函数相信大家并不陌生,它包括了函数名、自变量和因变量。
a = 100
b = 3.1415
c = "Hello World"
d = True
e = 3 + 5j
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
输出结果:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'complex'>
注:可以使用Python中内置的函数对变量类型进行转换。
int( ):将一个数值或字符串转换成整数,可以指定进制。
float( ):将一个字符串转换成浮点数。
str( ):将指定的对象转换成字符串形式,可以指定编码。
chr( ):将整数转换成该编码对应的字符串(一个字符)。
ord( ):将字符串(一个字符)转换成对应的编码(整数)。
二.运算符
Python支持多种运算符,下表大致按照优先级从高到低的顺序列出了所有的运算符,运算符的优先级指的是多个运算符同时出现时,先做什么运算然后再做什么运算。
运算符 | 描述 |
---|---|
[ ],[ : ] | 下标,切片 |
** | 指数 |
~,+,- | 按位取反,正负号 |
*,/,% ,// | 乘,除,模,整除 |
+,- | 加,减 |
>>,<< | 右移,左移 |
& | 按位与 |
^,| | 按位异或,按位或 |
<=,<,>,>= | 小于等于,小于,大于,大于等于 |
==,!= | 等于,不等于 |
is,is not | 身份运算符 |
in,not in | 成员运算符 |
not,or,and | 逻辑运算符 |
赋值运算符
赋值运算符应该是最为常见的运算符,它的作用是将右边的值赋给左边的变量。下面的例子演示了赋值运算符和复合赋值运算符的使用。
a = 2
b = 5
a += b #a=a+b
b *= a + 2 #b=b*(a+2),此处的a是上一行得出的a
print(a)
print(b)
输出结果:a=7,b=45
比较运算符和逻辑运算符
比较运算符有的地方也称为关系运算符,包括、!=、<、>、<=、>=,需要提醒的是比较相等用的是,请注意这个地方是两个等号,因为=是赋值运算符,上面讲到过,==才是比较相等的比较运算符。比较运算符会产生布尔值,要么是True要么是False。
逻辑运算符有三个,分别是and、or和not。and字面意思是“而且”,所以and运算符会连接两个布尔值,如果两个布尔值都是True,那么运算的结果就是True;左右两边的布尔值有一个是False,最终的运算结果就是False。如果and左边的布尔值是False,不管右边的布尔值是什么,最终的结果都是False,所以在做运算的时候右边的值会被跳过(短路处理),这也就意味着在and运算符左边为False的情况下,右边的表达式根本不会执行。or字面意思是“或者”,所以or运算符也会连接两个布尔值,如果两个布尔值有任意一个是True,那么最终的结果就是True。当然,or运算符也是有短路功能的,在它左边的布尔值为True的情况下,右边的表达式根本不会执行。not运算符的后面会跟上一个布尔值,它的作用是得到与该布尔值相反的值,也就是说,后面的布尔值如果是True运算结果就是False,而后面的布尔值如果是False则运算结果就是True。
and 和
or 或
not 非
flag0 = 1 == 1 #==运算符:等于
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2) #!=运算符不等于
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False
注:比较运算符的优先级高于赋值运算符,所以flag0 = 1 == 1
先做1 == 1
产生布尔值True
,再将这个值赋值给变量flag0
。print
函数可以输出多个值,多个值之间可以用,
进行分隔,输出的内容之间默认以空格分开。
三.练习:
练习1:华氏温度转换为摄氏温度。
注:华氏温度到摄氏温度的转换公式为:C=(F−32)÷1.8。
'''
将华氏温度转换为摄氏温度。
'''
f = float(input("请输入华氏温度:"))
c = (f - 32) / 1.8
print("摄氏度温度为:",c)
在使用print
函数输出时,也可以对字符串内容进行格式化处理,上面print
函数中的字符串%.1f
是一个占位符,稍后会由一个float
类型的变量值替换掉它。同理,如果字符串中有%d
,后面可以用一个int
类型的变量值替换掉它,而%s
会被字符串的值替换掉。
'''
将华氏温度转换为摄氏温度。
'''
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
%s 字符串 (采用str()的显示)
%r 字符串 (采用repr()的显示)
%c 单个字符
%b 二进制整数
%d 十进制整数
%i 十进制整数
%o 八进制整数
%x 十六进制整数
%e 指数 (基底写为e)
%E 指数 (基底写为E)
%f 浮点数
%F 浮点数,与上相同
%g 指数(e)或浮点数 (根据显示长度)
%G 指数(E)或浮点数 (根据显示长度)
%% 字符"%"
以上是Python中%的用法。 原文链接:https://blog.youkuaiyun.com/long_1998/article/details/105311101
练习2:输入圆的半径计算计算周长和面积。
"""
输入半径计算圆的周长和面积
"""
radius = float(input('请输入圆的半径: '))
perimeter = 2 * 3.1416 * radius #周长计算
area = 3.1416 * radius * radius #面积计算
print('周长: %.2f' % perimeter)
print('面积: %.2f' % area)
练习3:输入年份判断是不是闰年。
'''
输入年份判断是不是闰年
公历年份是4的倍数,且不是100的倍数,为普通闰年。公历年份是整百数,且必须是400的倍数才是世纪闰年。
'''
year=int(input("请输入一个年份:"))
if (year%4) ==0:
if (year%100) ==0:
if (year%400) ==0:
print('{0}是闰年'.format(year))
else:
print('{0}不是闰年'.format(year))
else:
print('{0}是闰年'.format(year))
else:
print('{0}不是闰年'.format(year))
if (year % 400 == 0) or (year % 4 == 0 and year % 100 !=0):
print("r")
else:
print("f")