python基础-变量、数据类型、input、格式化、运算符、流程控制

1、注释

当行注释:# 被注释内容
多行注释:”’被注释内容”’,或者”“”被注释内容”“”

2、变量

变量是什么? 变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用。

2_1、声明变量
#!/usr/bin/env python
# -*- coding: utf-8 -*-

name = "taibai"

上述代码声明了一个变量,变量名为: name,变量name的值为:”taibai”
变量的作用:昵称,其代指内存里某个地址中保存的内容
这里写图片描述

2_2、变量定义的规则:

变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
[‘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
2_3、变量的赋值

这里写图片描述

3、程序交互

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# 将用户输入的内容赋值给 name 变量
name = input("请输入用户名:")

# 打印输入的内容
print(name)

执行脚本就会发现,程序会等待你输入姓名后再往下继续走。
可以让用户输入多个信息,如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = input("What is your name?")
age = input("How old are you?")
hometown = input("Where is your hometown?")

print("Hello ",name , "your are ", age , "years old, you came from",hometown)
4、基础数据类型
4_1、整数类型(int)

int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
注意:在Python3里不再有long类型了,全都是int

>>> a= 2**64
>>> type(a)  #type()是查看数据类型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>

除了int和long之外, 其实还有float浮点型, 复数型

4_2、字符串类型

在Python中,加了引号的字符都被认为是字符串!

>>> name = "Alex Li" #双引号
>>> age = "22"       #只要加引号就是字符串
>>> age2 = 22          #int
>>> 
>>> msg = '''My name is Alex, I am 22 years old!'''  #我擦,3个引号也可以
>>> 
>>> hometown = 'ShanDong'   #单引号也可以

那单引号、双引号、多引号有什么区别呢? 让我大声告诉你,单双引号木有任何区别,只有下面这种情况 你需要考虑单双的配合
msg = “My name is Alex , I’m 22 years old!”
多引号什么作用呢?作用就是多行字符串必须用多引号

msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)

字符串拼接
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what ?是的,但只能进行”相加”和”相乘”运算。

>>> name
'Alex Li'
>>> age
'22'
>>> 
>>> name + age  #相加其实就是简单拼接
'Alex Li22'
>>> 
>>> name * 10 #相乘其实就是复制自己多少次,再拼接在一起
'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'

注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接

>>> type(name),type(age2)
(<type 'str'>, <type 'int'>)
>>> 
>>> name
'Alex Li'
>>> age2
22
>>> name + age2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects #错误提示数字 和 字符 不能拼接
4_3、布尔值(True,False)。
>>> a=3
>>> b=5
>>> 
>>> a > b #不成立就是False,即假
False
>>> 
>>> a < b #成立就是True, 即真
True
5、格式化输出

现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式

------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end -----------------

只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦

name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")

info = '''
------------ info of %s ----------- #这里的每个%s就是一个占位符,本行的代表 后面拓号里的 name 
Name  : %s  #代表 name 
Age   : %s  #代表 age  
job   : %s  #代表 job 
Hobbie: %s  #代表 hobbie 
------------- end -----------------
''' %(name,name,age,job,hobbie)  # 这行的 % 号就是 把前面的字符串 与拓号 后面的 变量 关联起来 

print(info)

%s就是代表字符串占位符,除此之外,还有%d,是数字占位符, 如果把上面的age后面的换成%d,就代表你必须只能输入数字啦
age : %d

我们运行一下,但是发现出错了。。。
说%d需要一个数字,而不是str, what? 我们明明输入的是数字呀,22,22呀。
不用担心 ,不要相信你的眼睛我们调试一下,看看输入的到底是不是数字呢?怎么看呢?查看数据类型的方法是什么来着?type()
name = input(“Name:”)
age = input(“Age:”)
print(type(age))
执行输出是
Name:Alex
Age:22

msg = "我是%s,年龄%d,目前学习进度为80%"%('金鑫',18)
print(msg)

这样会报错的,因为在格式化输出里,你出现%默认为就是占位符的%,但是我想在上面一条语句中最后的80%就是表示80%而不是占位符,怎么办?

msg = "我是%s,年龄%d,目前学习进度为80%%"%('金鑫',18)
print(msg)

这样就可以了,第一个%是对第二个%的转译,告诉Python解释器这只是一个单纯的%,而不是占位符。

6、基本运算符

算数运算、比较运算

这里写图片描述

逻辑运算
这里写图片描述

针对逻辑运算的进一步研究:
1,在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

print(3>4 or 4<3 and 1==1)
print(not 2 > 1 and 3 < 4 or 4 > 5 and  9 > 8 or 7 < 6)

输出 False False

2 , x or y , x为真,值就是x,x为假,值是y;
x and y, x为真,值是y,x为假,值是x。

print(1 or 3)
print(0 or 3)
print(-1 or 3)

print(1 and 3)
print(0 and 3)
print(-1 and 3)

输出如下:

1
3
-1
3
0
3

再来看下面的比较方式

print(3 or 2>1) #3
print( 2>3 or 3)
print( 2>1 or 0)
print(True or 2>1)
print(1 or True)

输出如下:

3
3
True
True
1

3、int与bool值之间的转换。

a = int(True)
b = int(False)
print(a,b)

a = bool(413456)
b = bool(6.5)
c = bool(0)
d = bool(-1)
print(a,b,c,d)

输出如下:

1 0
True True False True

4、in,not in :
判断子元素是否在原字符串(字典,列表,集合)中:

print('喜欢' in 'dkfljadklf喜欢hfjdkas')
print('a' in 'bcvd')
print('y' not in 'ofkjdslaf')

输出如下:

True
False
True
7、流程控制if

if…else 语句
单分支

if 条件:
    满足条件后要执行的代码

双分支

"""
if 条件:
    满足条件执行代码
else:
    if条件不满足就走这段
"""
AgeOfOldboy = 48

if AgeOfOldboy > 50 :
    print("Too old, time to retire..")
else:
    print("还能折腾几年!")

多分支

if 条件:
    满足条件执行代码
elif 条件:
    上面的条件不满足就走这个
elif 条件:
    上面的条件不满足就走这个
elif 条件:
    上面的条件不满足就走这个    
else:
    上面所有的条件不满足就走这段
8、流程控制while

1,基本循环

while 条件:

    # 循环体

    # 如果条件为真,那么循环体则执行
    # 如果条件为假,那么循环体不执行

2,循环中止语句

改变循环条件

count = 1
flag = True
while flag:
    print(count)
    count+=1
    if count>10:
        flag = False

输出如下:

1
2
3
4
5
6
7
8
9
10

如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句
break用于完全结束一个循环,跳出循环体执行循环后面的语句
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环

例子:break

count = 0
while count <= 100 : #只要count<=100就不断执行下面的代码
    print("loop ", count)
    if count == 5:
        break
    count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0

print("-----out of while loop ------")

输出

loop  0
loop  1
loop  2
loop  3
loop  4
loop  5
-----out of while loop ------

例子:continue

count = 0
while count <= 100 : 
    count += 1
    if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop
        continue 
    print("loop ", count)

print("-----out of while loop ------")

输出

loop  1
loop  2
loop  3
loop  4
loop  5
loop  95
loop  96
loop  97
loop  98
loop  99
loop  100
loop  101
-----out of while loop ------

while … else ..
while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句

count = 0
while count <= 5 :
    count += 1
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")

输出

Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦
-----out of while loop ------

如果while循环不执行,依然会执行else语句,来看下面的代码

while False:
    print("aaaa")
else:
    print("sssss")

输出如下:

E:\python\python_sdk\python.exe E:/python/py_pro/day01作业.py
sssss

Process finished with exit code 0


如果执行过程中被break啦,就不会执行else的语句啦

count = 0
while count <= 5 :
    count += 1
    if count == 3:break
    print("Loop",count)

else:
    print("循环正常执行完啦")
print("-----out of while loop ------")

输出

Loop 1
Loop 2
-----out of while loop ------
9、编码

python2解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),而python3对内容进行编码的默认为utf-8。
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
报错:ascii码无法表示中文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值