一、变量
python变量定义:
在使用标识符时,需要注意如下规则:
标识符可以由字母、数字、下画线(_)组成,其中数字不能打头。
标识符不能是 Python 关键字,但可以包含关键字。
标识符不能包含空格。
例如下面变量,有些是合法的,有些是不合法的:
abc_xyz:合法。
HelloWorld:合法。
abc:合法。
xyz#abc:不合法,标识符中不允许出现“#”号。
abc1:合法。
1abc:不合法,标识符不允许数字开头。
Python 还包含一系列关键字和内置函数,一般也不建议使用它们作为变量名:
如果开发者尝试使用关键字作为变量名,Python 解释器会报错。
如果开发者使用内置函数的名字作为变量名,Python 解释器倒不会报错,只是该内置函数就被这个变量覆盖了,该内置函数就不能使用了。
‘False‘,‘None‘,‘True‘,‘and‘,‘as‘,‘assert‘,‘break‘,‘class‘,‘continue‘,‘def‘,‘del‘,‘elif‘,‘else‘,‘except‘,
‘finally‘,‘for‘,‘from‘,‘global‘,‘if‘,‘import‘,‘in‘,‘is‘,‘lambda‘,‘nonlocal‘,‘not‘,‘or‘,‘pass‘,‘raise‘,‘return‘,
‘try‘,‘while‘,‘With‘,‘yield‘
驼峰命名法:(其他语言常用的命名法)
当变量名是由两个或多个单词组成,还可以利用驼峰命令法来命名
小驼峰命名法
第一个单词以小写字母开始,后续单词的首字母大写
firstName lastName
大驼峰命名法
每一个单词的首字母都采用大写字母
FirstName LastName
二、字符编码
编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显示00110101,还是要显示‘a‘,但计算机怎么知道00110101是‘a‘呢,这就需要解码,当选择用ascii解码时,当计算机读到00110101时就到对应的ascii表里一查发现是‘a‘,就显示为‘a‘
? 编码:真实字符与二进制串的对应关系,真实字符→二进制串
? 解码:二进制串与真实字符的对应关系,二进制串→真实字符
? 要搞清楚字符编码,首先要解决的问题是:什么是字符编码?
我们都知道,计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电平(高低平即二进制数1,低电平即二进制数0),也就是说计算机只认识数字(010101).如果我们想保存数据,首先得将我们的数据进行一些处理,最终得转换成010101才能让计算机识别。
所以必须经过一个过程:
字符--------(翻译过程)------->数字
这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。
那么问题就来了?作为一种编码方案,还得解决两个问题:
a.字节是怎么分组的,如8 bits或16 bits一组,这也被称作编码单元。
b.编码单元和字符之间的映射关系。例如,在ASCII码中,十进制65映射到字母A上。
ASCII码是上个世纪最流行的编码体系之一,至少在西方是这样。下图显示了ASCII码中编码单元是怎么映射到字符上的。
? 随着计算机越来越流行,厂商之间的竞争更加激烈,在不同的计算机体系间转换数据变得十分蛋疼,人们厌烦了这种自定义造成的混乱。最终,计算机制造商一起制定了一个标准的方法来描述字符。他们定义使用一个字节的低7位来表示字符,并且制作了如上图所示的对照表来映射七个比特的值到一个字符上。例如,字母A是65,c是99,~是126等等, ASCII码就这样诞生了。原始的ASCII标准定义了从0到127 的字符,这样正好能用七个比特表示。
为什么选择了7个比特而不是8个来表示一个字符呢?我并不关心。但是一个字节是8个比特,这意味着1个比特并没有被使用,也就是从128到255的编码并没有被制定ASCII标准的人所规定,这些美国人对世界的其它地方一无所知甚至完全不关心。其它国家的人趁这个机会开始使用128到255范围内的编码来表达自己语言中的字符。例如,144在阿拉伯人的ASCII码中是?,而在俄罗斯的ASCII码中是?。ASCII码的问题在于尽管所有人都在0-127号字符的使用上达成了一致,但对于128-255号字符却有很多很多不同的解释。你必须告诉计算机使用哪种风格的ASCII码才能正确显示128-255号的字符。
总结:ASCII,一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符,ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符),后来为了将拉丁文也编码进了ASCII表,将最高位也占用了。
阶段二:为了满足中文,中国人定制了GBK
GBK:2Bytes代表一个字符;为了满足其他国家,各个国家纷纷定制了自己的编码。日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里
阶段三:万国码Unicode编码
后来,有人开始觉得太多编码导致世界变得过于复杂了,让人脑袋疼,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。
Unicode统一用2Bytes代表一个字符,2**16-1=65535,可代表6万多个字符,因而兼容万国语言.但对于通篇都是英文的文本来说,这种编码方式无疑是多了一倍的存储空间(英文字母只需要一个字节就足够,用两个字节来表示,无疑是浪费空间).于是产生了UTF-8,对英文字符只用1Bytes表示,对中文字符用3Bytes.UTF-8是一个非常惊艳的概念,它漂亮的实现了对ASCII码的向后兼容,以保证Unicode可以被大众接受。
在UTF-8中,0-127号的字符用1个字节来表示,使用和US-ASCII相同的编码。这意味着1980年代写的文档用UTF-8打开一点问题都没有。只有128号及以上的字符才用2个,3个或者4个字节来表示。因此,UTF-8被称作可变长度编码。于是下面字节流如下:
0100100001000101010011000100110001001111
这个字节流在ASCII和UTF-8中表示相同的字符:HELLO
至于其他的UTF-16,这里就不再叙述了。
总结一点:unicode:简单粗暴,所有字符都是2Bytes,优点是字符----->数字的转换速度快,缺点是占用空间大。
utf-8:精准,对不同的字符用不同的长度表示,优点是节省空间,缺点是:字符->数字的转换速度慢,因为每次都需要计算出字符需要多长的Bytes才能够准确表示。
因此,内存中使用的编码是unicode,用空间换时间(程序都需要加载到内存才能运行,因而内存应该是尽可能的保证快);硬盘中或者网络传输用utf-8,网络I/O延迟或磁盘I/O延迟要远大与utf-8的转换延迟,而且I/O应该是尽可能地节省带宽,保证数据传输的稳定性。
所有程序,最终都要加载到内存,程序保存到硬盘不同的国家用不同的编码格式,但是到内存中我们为了兼容万国(计算机可以运行任何国家的程序原因在于此),统一且固定使用unicode,这就是为何内存固定用unicode的原因,你可能会说兼容万国我可以用utf-8啊,可以,完全可以正常工作,之所以不用肯定是unicode比utf-8更高效啊(uicode固定用2个字节编码,utf-8则需要计算),但是unicode更浪费空间,没错,这就是用空间换时间的一种做法,而存放到硬盘,或者网络传输,都需要把unicode转成utf-8,因为数据的传输,追求的是稳定,高效,数据量越小数据传输就越靠谱,于是都转成
utf-8格式的,而不是unicode。
#用户交互
username = input("username:")
password = input("password: ")
print(name,password)
‘‘‘
执行结果:
username:alex
password: 233
alex 233
‘‘‘
#格式化输出1 字符串拼接
name = input("name:")
age = input("age: ")
job = input("job: ")
salary = input("salary: ")
info = ‘‘‘
------- info of ‘‘‘+ name + ‘‘‘ -----------
Name:‘‘‘+ name + ‘‘‘
Age:‘‘‘ + age + ‘‘‘
Job:‘‘‘ + job + ‘‘‘
Salary:‘‘‘ + salary
print(info)
‘‘‘
执行结果:
name:alex
age: 22
job: IT
salary: 3000
------- info of alex -----------
Name:alex
Age:22
Job:IT
Salary:3000
‘‘‘
#格式化输出2 占位符 name = input("name:") age = input("age: ") job = input("job: ") salary = input("salary: ") info = ‘‘‘ ------- info of %s ----------- Name: %s Age: %s Job:%s Salary:%s ‘‘‘ %(name,name,age,job,salary) print(info) ‘‘‘ 执行结果: name:alex age: 22 job: IT salary: 3000 ------- info of alex ----------- Name:alex Age:22 Job:IT Salary:3000 ‘‘‘
# 格式化输出2 占位符
name = input("name:")
age = int(input("age: "))#input默认输入的是string类型,int()将string转换为数值
job = input("job: ")
salary = input("salary: ")
info = ‘‘‘
------- info of %s -----------
Name: %s
Age: %d
Job:%s
Salary:%s
‘‘‘ % (name, name, age, job, salary)
print(info)
‘‘‘
执行结果:
name:alex
age: 22
job: IT
salary: 3000
------- info of alex -----------
Name:alex
Age:22
Job:IT
Salary:3000
‘‘‘
# 格式化输出3 官方建议格式
name = input("name:")
age = int(input("age: "))#input默认输入的是string类型,int()将string转换为数值
job = input("job: ")
salary = input("salary: ")
info = ‘‘‘
------- info of {_name}----------
Name: {_name}
Age: {_age}
Job:{_job}
Salary:{_salary}
‘‘‘.format(_name=name,
_age=age,
_job=job,
_salary=salary)
print(info)
‘‘‘
执行结果:
name:alex
age: 22
job: IT
salary: 3000
------- info of alex -----------
Name:alex
Age:22
Job:IT
Salary:3000
‘‘‘
四、判断与循环
#IF判断 变量赋值用一个等号,等号两边要有空格 , 判断两个变量是否相等用两个等号 _username = ‘alex‘ _password = ‘abc123‘ username = input("username:") password = input("password: ") if _username == username and _password == password: print("Welcome user {name} login in...".format(name=username)) else: print("Invalid username or password!") ‘‘‘ 执行结果: username:alex password: abc123 Welcome user alex login in... username:alex password: 33 Invalid username or password! ‘‘‘
# if 判断
age_of_oldby = 56
guess_age = int(input("guess age: "))
if guess_age == age_of_oldby:
print("yes,you got it.")
elif guess_age > age_of_oldby:
print("think smaller ...")
else:
print("think bigger!")
‘‘‘
执行结果
guess age: 99
think smaller ...
‘‘‘
原文:https://www.cnblogs.com/spring33410/p/12297794.html