"Hello_Python"_基础语法1

变量

变量定义

  • 变量名只能是字母、数字或下划线的任意组合

  • 变量名的第一个字符不能是数字

  • 关键字不能声明为变量名
    ['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']

# 动态语言变量定义时不需要指明变量的数据类型
# 字符串类型变量可以使用""或'',""和''在Python中没有区别,不加""或''的字符串系统默认为变量名
name = "young"
age = 25
print("My name is", name, "...I'm", age, "years old!")

输出结果如下:
My name is young ...I'm 25 years old!

Python中没有常量的概念,如果需要表示某一固定不变的量,例如数学中的π,一般习惯将变量名全大写表示:

PIE = 3.1415926

当变量被定义时,内存中会开辟一块区域存放该变量的值,同时变量名指向存放该值的区域

name_1 = "young"
name_2 = name_1     # name_2通过name_1找到内存中存放字符串"young"的地址,并直接指向
print("name_1 id is", id(name_1))   # 使用id()查看变量指向
print("name_2 id is", id(name_2))
print("name_1 = ", name_1, "name_2 = ", name_2)
name_1 = "old"      # name_1改为指向内存中存放字符串"old"的地址,而name_2指向不变
print("name_1 id is", id(name_1))   # 使用id()查看变量指向
print("name_2 id is", id(name_2))
print("name_1 = ", name_1, "name_2 = ", name_2)

输出结果如下:
name_1 id is 2484573758640
name_2 id is 2484573758640
name_1 =  young name_2 =  young
name_1 id is 2484543376624
name_2 id is 2484573758640
name_1 =  old name_2 =  young

代码注释

被注释部分在代码执行时会被系统略过

  • 单行注释

使用#进行单行注释

# print("My name is", name, "...I'm", age, "years old!")
  • 多行注释

使用'''注释内容'''或者"""注释内容"""进行多行注释

"""
print("Please call me", name_1, "......say again", name_2)
name_1 = "yang sir"
print("Please call me", name_2, "or", name_1)
"""
# 或
'''
print("Please call me", name_1, "......say again", name_2)
name_1 = "yang sir"
print("Please call me", name_2, "or", name_1)
'''

字符编码

  • ASCII码

支持英语和其他西欧语言,用 8 位(1个字节)来表示某一字符的编码,ASCII码最多只能表示2**8 = 256-1=255 个字符

  • GB2312

相比于ASCII码增加了中文字符的编码,使用16位(2个字节)来表示某一字符的编码,支持中文

  • GBK1.0

相比于GB2312增加了更多中文字符的编码,用16位(2个字节)来表示某一字符的编码

  • GB18030

相比于GBK1.0增加了更多中文字符以及其他少数名族语言的编码,用16位(2个字节)来表示某一字符的编码

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码

  • Unicode

世界统一码,为各个不同国家的语言字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位(2个字节)来表示

  • UTF-8

UTF-8是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

Python2默认字符编码是ASCII码,不支持中文,Python3默认支持中文,如果要让Python2支持中文,需要在代码文件首行中加入以下内容:

# _*_ coding:utf-8 _*_
# 或
# -*- coding:utf-8 -*-

如果使用PyCharm作为编译环境,无论是Python2还是Python3,都建议做如下编码设置:

image-20200112172526145

用户输入

name = input("Please input your name  :")

输出结果如下:
Please input your name  :     # 在此处输入赋予变量name的值并键入回车

Python2和Python3的区别

# Python2中raw_input()功能和Python3中input()功能相同
name = raw_input("please input your name:")

# Python2中的input()不推荐使用
name = input("Please input your name:")

输出结果如下:
Please input your name:young      
# 输入时如果不带"",系统会将输入的内容当作变量名处理
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'young' is not defined
    
name = input("Please input your name:")
Please input your name:"young"

格式化输出

多行格式化输出

多行注释还具备多行格式化输出的功能

# 跨越多行的字符串打印
hello = '''
Hello Word!
Hello Python!
'''
print(hello)

输出结果如下:
Hello Word!
Hello Python!
# 用户输入(经用户输入的变量默认类型为字符串)
name = input("name  :")
age = int(input("age   :"))    # 如果需要检验输入的有效性,建议强制类型转换(str to int)
job = input("job   :")
salary = int(input("salary:")) # 如果需要检验输入的有效性,建议强制类型转换(str to int)

# 打印变量的类型
print("name   type is", type(name))
print("age    type is", type(age))
print("job    type is", type(job))
print("salary type is", type(salary))

# 格式化打印
# 方式1:拼接字符串(需要开辟多块内存保存多个字符串变量,效率低,不推荐使用),参与字符串拼接的变量类型只能是字符串
info_1 = '''
**********Info of ''' + name + '''**********
name  : ''' + name + '''
age   : ''' + str(age) + '''
job   : ''' + job + '''
salary: ''' + str(salary)

print(info_1)

# 方式2: %s表示输入的数据类型为字符出串,%d可暂时理解为数字
info_2 = '''
**********Info of %s**********
name  : %s
age   : %d
job   : %s
salary: %d
''' % (name, name, age, job, salary)

print(info_2)

# 方式3: 官方推荐格式化输出使用这种方式,{}中的内容不一定要是变量名,{}中变量前后不能有空格
info_3 = '''
**********Info of {_name}**********
name  : {_name}
age   : {_age}
job   : {_job}
salary: {_salary}
'''.format(_name=name,
           _age=age,
           _job=job,
           _salary=salary)

print(info_3)

# 方式4:
info_4 = '''
**********Info of {0}**********
name  : {0}
age   : {1}
job   : {2}
salary: {3}
'''.format(name, age, job, salary)

print(info_4)

输出结果如下:
name  :young
age   :25
job   :IT
salary:50000
name   type is <class 'str'>
age    type is <class 'int'>
job    type is <class 'str'>
salary type is <class 'int'>

**********Info of young**********
name  : young
age   : 25
job   : IT
salary: 50000

**********Info of young**********
name  : young
age   : 25
job   : IT
salary: 50000


**********Info of young**********
name  : young
age   : 25
job   : IT
salary: 50000


**********Info of young**********
name  : young
age   : 25
job   : IT
salary: 50000

单行格式化输出

# 与多行格式化输出相同
money = 5000000
print("I want to earn " + str(money) + " dollars one day.")
print("I want to earn %d dollars one day." % money)
print("I want to earn {_money} dollars one day.".format(_money=money))
print("I want to earn {0} dollars one day.".format(money))

输出结果如下:
I want to earn 5000000 dollars one day.
I want to earn 5000000 dollars one day.
I want to earn 5000000 dollars one day.
I want to earn 5000000 dollars one day.

Python2和Python3区别

name = "young"
age = 25
# Python2中print无()
print "I'm {_name},I have {_age} years old.".format(_name=name, _age=age)

输出结果如下:
I'm young,I have 25 years old.

判断语句

可根据需求组合if,if...else,if...elif...elif...else等逻辑判断语句

# 导入Python标准库中的getpass模块
import getpass

username = "young"
password = "123456"

_username = input("Please input your username:")
# getpass输入时不显示任何输入的字符,input()输入时明文显示输入的字符,
# getpass在PyCharm中运行会卡住,需要到CMD中利用命令运行Python文件
_password = getpass.getpass("Please input your password:")

# Python使用强制缩进来区分不同级别的语句,位于顶级的语句必须顶格写,不然会出现"IndentationError"缩进错误
# =表示赋值,==表示判断是否相等
if _username == username and _password == password:
    print("Welcome {login_name} login !" .format(login_name=username))
else:
    print("Invalid username or password !")

循环语句

while循环

# 猜年龄,只允许猜3次
age_of_mine = 25
count = 0

while True:
    # 只允许循环猜3次
    if count >= 3:
        # 直接跳出停止循环
        count = 0
        break

    # 做大小关系比较需转换成数字
    age = int(input("Please guess my age:"))

    if age == age_of_mine:
        print("Yes,you got it !")
        count = 0
        break
    elif age > age_of_mine:
        print("Please think smaller !")
    else:
        print("Please think bigger !")

    # 每循环一次count计数加1,也可写为count = count + 1
    count += 1

# 以上程序优化
while count < 3:
    age = int(input("Please guess my age:"))

    if age == age_of_mine:
        print("Yes,you got it !")
        break

    elif age > age_of_mine:
        print("Please think smaller !")

    else:
        print("Please think bigger !")

    count += 1

# 当while循环每次开始时,while中的条件不成立时执行
else:
    print("you have tried too many times...fuck off!")
    
输出结果如下:
Please guess my age:22
Please think bigger !
Please guess my age:20
Please think bigger !
Please guess my age:26
Please think smaller !
you have tried too many times...fuck off!
Please guess my age:22
Please think bigger !
Please guess my age:20
Please think bigger !
Please guess my age:26
Please think smaller !
you have tried too many times...fuck off!
# 猜过3次后,询问是否继续,是则继续,否则停止
age_of_mine = 25
count = 0

while count < 3:
    age = int(input("Please guess my age:"))

    if age == age_of_mine:
        print("Yes,you got it !")
        break

    elif age > age_of_mine:
        print("Please think smaller !")

    else:
        print("Please think bigger !")

    count += 1

    if count == 3:
        continue_confirm = input("Do you want to keep guessing?(yes/no)")
        if continue_confirm != "no":
            count = 0
else:
    print("Game Over!")
    
输出结果如下:
Please guess my age:22
Please think bigger !
Please guess my age:26
Please think smaller !
Please guess my age:20
Please think bigger !
Do you want to keep guessing?(yes/no)no
Game Over!
*****************************************
Do you want to keep guessing?(yes/no)yes
Please guess my age:

for循环

# 循环10次,0-9
for a in range(10):
    print("a =:", a)
# range(起始[默认0],循环次数,步长[默认1])
for b in range(0, 10, 2):
    print("b =:", b)

age_of_mine = 25

for i in range(3):
    age = int(input("Please guess my age:"))

    if age == age_of_mine:
        print("Yes,you got it !")
        break

    elif age > age_of_mine:
        print("Please think smaller !")

    else:
        print("Please think bigger !")
# 当for循环每次开始时,i的范围不在rang()规定的范围内执行
else:
    print("You have tried too many times...fuck off!")

break和continue

for i in range(10):
    print("loop times: ", i+1)
    if i < 3:
        print("I have been printed: i =", i)
    else:
        # continue表示直接跳出本次循环,开始下一次循环
        continue
    # i>=3时不会被执行,程序经continue后直接开启下一次循环,共循环10次
    print("Program didn't skip me!")
    
输出结果如下:
loop times:  1
I have been printed: i = 0
Program didn't skip me!
loop times:  2
I have been printed: i = 1
Program didn't skip me!
loop times:  3
I have been printed: i = 2
Program didn't skip me!
loop times:  4
loop times:  5
loop times:  6
loop times:  7
loop times:  8
loop times:  9
loop times:  10
for a in range(10):
    print("loop times: ", a+1)
    if a < 3:
        print("I have been printed: a =", a)
    else:
        # break表示直接结束整个循环程序
        break
    # i=3时程序经break后结束整个循环,共循环3次
    print("Program didn't skip me!")
    
输出结果如下:
loop times:  1
I have been printed: a = 0
Program didn't skip me!
loop times:  2
I have been printed: a = 1
Program didn't skip me!
loop times:  3
I have been printed: a = 2
Program didn't skip me!
loop times:  4
for a in range(5):
    print("***********:a =", a)
    for b in range(5):
        if b > 3:
            # break只结束当前所在的整个循环程序
            break
        print("b =", b)
        
输出结果如下:
***********:a = 0
b = 0
b = 1
b = 2
b = 3
***********:a = 1
b = 0
b = 1
b = 2
b = 3
***********:a = 2
b = 0
b = 1
b = 2
b = 3
***********:a = 3
b = 0
b = 1
b = 2
b = 3
***********:a = 4
b = 0
b = 1
b = 2
b = 3

猜你喜欢

转载自www.cnblogs.com/bitdancer/p/12200765.html