Python基础:print & input & 变量 & 运算符 & Python数据类型 & 运算符与表达式
注释
单行注释
#我注释了一行
多行注释
三个单引号'''括起来
'''
我可以注释多行
我可以注释多行
我可以注释多行
'''
三个双引号"""括起来
"""
我可以注释多行
我可以注释多行
我可以注释多行
"""
print 输出
作用:打印到屏幕上一些信息
可以接受多个字符串,用逗号分隔,遇到逗号会输出一个空格
print(" It's a beautifu day", "Nice day", "my finished")
print(18)
print(10 + 8)
print("10 + 8 =", 18)
input 输入
作用:从外部获取变量的值
等待输入(阻塞),输入的内容报错在age里
age = input("请输入您的年龄:")
print("age =", age)
变量
概述:程序可操作的存储区的名称,程序运行期间能改变的数据,每个变量都有特定的类型;把程序运行的中间结果临时的存在内存里,以便后续的代码调用。
作用:将不同类型的数据存储到内存
变量的定义:变量名 = 初始值(为了确定变量的类型)
数据的存储:变量名 = 数据值 (注意:变量在使用前必须先“定义”(即赋予变量一个值),否则会出现错误)
删除变量:del 变量名 (删除后变量无法引用)
定义变量的规则
变量名只能是 字母 、数字或下划线的任意组合
变量名的第一个字符不能是数字
变量的定义要具有可描述性
以下关键字不能声明为变量名:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
推荐定义方式
#驼峰体
AgeOfOldboy = 56
NumberOfStudents = 80
#下划线
age_of_oldboy = 56
number_of_students = 80
变量的赋值
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name1 = "wupeiqi"
name2 = "alex"
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name1 = "taibai"
name2 = name1
定义变量不好的方式举例
变量名为中文、拼音
变量名过长
变量名词不达意
常量
常量即指不变的量,如pai 3.141592653..., 或在程序运行过程中不会改变的量
数据类型
什么是数据类型?
我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。
整数 int
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示和数学的写法一样
num1 = 10
num2 = num1
print(id(num2))
1998374864
# 连续定义多个变量
num3 = num4 = num5 = 1
print(num3, num4, num5)
1 1 1
#交互式赋值定义变量
num6, num7 = 6, 7
print(num6, num7)
6 7
布尔值 bool
布尔值就两种:True,False。就是反应条件的正确与否。
真 1 True。
假 0 False。
浮点数 float
浮点型由整数部分与小数部分组成,浮点数运算可能会有四舍五入的误差
f1 = 1.1
f2 = 2.2
f3 = f1 + f2
print(f3)
3.3000000000000003
字符串类型(str)
在Python中,加了引号的字符都被认为是字符串!
>>> name = "Alex Li" #双引号
>>> age = "22" #只要加引号就是字符串
>>> age2 = 22 #int
>>> hometown = 'ShanDong' #单引号也可以
那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = "My name is Alex , I'm 22 years old!"
多引号什么作用呢?作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
数据类型转换
print(int(1.9))
1
print(float(1))
1.0
print(int("123"))
123
print(float("12.3"))
12.3
#如果有其他无用字符会报错
print(int("abc"))
print(int("123abc"))
Traceback (most recent call last):
File "H:/Python项目/day/file.py", line 2, in <module>
print(int("abc"))
ValueError: invalid literal for int() with base 10: 'abc'
#只有作为正负号才有意义
print(int("+123"))
123
#print(int("12+3")) #无意义会报错
print(int("-123"))
-123
数字功能
返回数字的绝对值 abs
a1 = -10
a2 = abs(a1)
print(a2)
10
比较两个数的大小
a3 = 100
a4 = 9
print((a3>a4)-(a3<a4))
1
返回给定参数的最大值 max
print(max(1,2,3,4,5,6,7,8))
8
返回给定参数的最小值 min
print(min(1,2,3,4,5,6,7,8))
1
求 x 的 y 次方 pow
print(pow(2, 5))
32
round(x[,n])返回浮点数x的四舍五入的值,如果给出n值,则代表舍入到小数点后n位
print(round(3.456))
3
print(round(3.556))
4
print(round(3.456, 2))
3.46
print(round(3.546, 1))
3.5
数学相关的库 math
import math
# 向上取整
print(math.ceil(18.1))
19
print(math.ceil(18.9))
19
# 向下取整
print(math.floor(18.1))
18
print(math.floor(18.9))
18
# 返回整数部分与小数部分
print(math.modf(22.3))
(0.3000000000000007, 22.0)
# 开方
print(math.sqrt(16))
4.0
range 指定范围,生成指定数字
for i in range(1,10):
print(i)
for i in range(1,10,2): # 步长
print(i)
for i in range(10,1,-2): # 反向步长
print(i)
随机数 random
从序列的元素中随机挑选一个元素
import random print(random.choice([1,3,5,7,9])) 5 print(random.choice(range(5))) #range(5)== [0,1,2,3,4] 3 print(random.choice("Lee")) #"Lee" == ["L","e","e"] e
产生一个1~100之间的随机数
r1 = range(1,101)
for i in r1:
print(i)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
从指定范围内,按指定的基数递增的集合中选取一个随机数
# random.randrange([start,] stop[,step])
# start--指定范围的开始值,包含在范围内,默认是0
# stop--指定范围的结束值,不包含在范围内
# step--指定的递增基数,默认是1
print(random.randrange(1,100,2))
13
# 从0-99选取一个随机数
print(random.randrange(100))
61
随机生成[0,1]之间的数(浮点数)
print(random.random())
0.14728254253360773
随机生成一个实数,它在[3,9]范围
print(random.uniform(3,9))
4.516309142130013
运算符与表达式
算数运算
表达式:由变量、常量和运算符组成的式子
算术运算符和算术运算表达式
算术运算符
+ - * / % ** //
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
逻辑运算
and
逻辑与: and
逻辑与运算表达式:表达式1 and 表达式2
值:
如果表达式1的值为真,表达式2的值也为真,整体逻辑与运算表达式的值为真
如果表达式1的值为真,表达式2的值为假,整体逻辑与运算表达式的值为假
如果表达式1的值为假,表达式2的值为真,整体逻辑与运算表达式的值为假
如果表达式1的值为假,表达式2的值也为假,整体逻辑与运算表达式的值为假
【有一个为假就为假】
表达式1 and 表达式2 and 表达式3 and ...... and 表达式n
num1 = 10
num2 = 20
if num1 and num2:
print("&&&&&&&&&&&")
&&&&&&&&&&&
or
逻辑或: or
逻辑或运算表达式:表达式1 or 表达式2
值:
表达式1的值为真,表达式2的值为真,逻辑或运算表达式为真
表达式1的值为真,表达式2的值为假,逻辑或运算表达式为真
表达式1的值为假,表达式2的值为真,逻辑或运算表达式为真
表达式1的值为假,表达式2的值为假,逻辑或运算表达式为假
【有一个为真就为真】
表达式1 or 表达式2 or 表达式3 or ...... or 表达式n
num3 = 0
num4 = 1
if num3 or num4:
print("||||||||||")
||||||||||
not
逻辑非: not
逻辑非运算表达式: not 表达式
值:
如果表达式的值为真,整体逻辑非运算表达式的值为假
如果表达式的值为假,整体逻辑非运算表达式的值为真
【颠倒黑白】
if not 0:
print("++++++++++")
++++++++++
成员运算符
in:如果在指定的序列中找到值返回True,否则返回False
not in: 如果在指定的序列中没有找到值返回True,否则返回False
身份运算符
is:判断两个标志符是不是引用同一个对象
is not:判断两个标志符是不是引用不同的对象
运算符优先级
运算符优先级
**
~ + - 正负号(一元加减)
* / % //
+ -
>> <<
&
~ |
<= < > >=
== !=
= %= += -= //=
is in not
in not in
and or not
if for while 语句
if 语句
格式:
if 表达式:
语句...
逻辑:当程序执行到if语句时,首先计算“表达式”的值,如果“表达式”的值为真,那么执行if下的“语句”,如果“表达式”的值为假,则跳过整个if语句继续向下执行。
何为真假?
假:0 0.0 '' None False
真:除了假就是真
num5 = 10
num6 = 20
if num5 == num6:
num5 = 100
print("num5 =", num5)
num5 = 10
--------------------------------
num5 = 20
num6 = 20
if num5 == num6:
num5 = 100
print("num5 =", num5)
num5 = 100
if -else 语句
格式:
if 表达式:
语句1
else:
语句2
逻辑:当程序执行到if-else语句时,首先计算“表达式”的值,如果表达式的值为真,则执行 “语句1”。执行完“语句1”跳出整个if-else语句。如果“表达式”的值为假,则执行“语句2”。执行完“语句2”跳出整个if-else语句。
num = int(input())
if num % 2 == 0:
print("是偶数")
else:
print("是奇数")
if-elif-else 语句
格式:
if 表达式1:
语句1
elif 表达式2:
语句2
elif 表达式3:
语句3
……
elif 表达式n:
语句n
else: #可有可无
语句e
逻辑:当程序执行到if-elif-else语句时,首先计算“表达式1”的值,如果“表达式1”的值为真,则执行“语句1”,执行完“语句1”,则跳过整个if-elif-else语句。如果“表达式1”的值为假,计算“表达式2”的值。如果“表达式2”的值为真,则执行“语句2”,执行完“语句2”,则跳过整个if-elif-else语句。如果“表达式2”的值为假,计算“表达式3”的值。如此下去直到某个表达式的值为真才停止,如果没有一个真的表达式,且有else,则执行“语句e”
age = int(input())
if age < 0:
print("娘胎里")
if age >=0 and age <= 3:
print("婴儿")
if age >=4 and age <= 6:
print("儿童")
if age >=7 and age <= 18:
print("童年")
if age >=19 and age <= 30:
print("青年")
if age >=31 and age <= 40:
print("壮年")
if age >=41 and age <= 50:
print("中年")
if age >=51 and age <= 100:
print("老年")
if age >=101 and age <= 150:
print("老寿星")
if age > 150:
print("老妖怪")
for 循环语句
格式:
for 变量名 in 集合:
语句
逻辑:按顺序取“集合”中的每个元素赋值给“变量”,在去执行语句。如此循环往复,直到取完“集合”中的元素截止
range([start,] end[, step])函数 列表生成器
start默认为0,step默认为1
功能呢:生成数列
a = range(10)
print(a)
range(0, 10)
for x in range(10):
print(x, end=" ")
0 1 2 3 4 5 6 7 8 9
for y in range(2, 20, 2):
print(y, end=" ")
2 4 6 8 10 12 14 16 18
同时遍历下标和元素
方法一:
for index, m in enumerate([1,2,3,4,5]): #index, m = 下标,元素
print(index, m)
0 1
1 2
2 3
3 4
4 5
方法二:
index = 0
for i in range(1,6):
print(index, i)
index += 1
0 1
1 2
2 3
3 4
4 5
while 循环语句
格式:
while 表达式:
语句
逻辑:当程序执行到while语句时,首先计算“表达式”的值,如果“表达式”的值为假,那么结束整个while语句。如果“表达式”的值为真,则执行“语句”,执行完“语句”再去计算“表达式”的值。如果“表达式”的值为假,那么结束整个while语句。如果“表达式”的值还为真,则执行“语句”,执行完“语句”再去计算“表达式”的值。如此循环往复,知道表达式的值为假才停止。
while 表达式:
语句1
else:
语句2
逻辑:在条件语句(表达式)为False时执行else中的“语句2”
a = 1
while a <= 3:
print("lee is a good man!")
a += 1
else:
print("very very good")
print("you are right")
break 语句
作用:
跳出for和while的循环
注意:只能跳出距离他最近的那一层循环
for i in range(10):
print(i)
if i == 5:
break
num = 1
while 1 <= 10:
print(num)
if num == 3:
break
num += 1
#注意:循环语句可以有else语句,break导致循环截止,不会执行else下面的语句
else:
print("lee is a good man")
continuc 语句
作用:跳出当前循环中的剩余语句,然后继续下一次循环
注意:跳出距离最近的循环
for i in range(10):
print(i)
if i == 3:
continue
print("*")
print("&")
num = 0
while num < 10:
print(num)
if num == 3:
num += 1
continue
print("*")
print("&")
num += 1