python之day1

2023-01-31 05:01:48 python day1

  初学python会有学Python2还是python3的困惑,因为现在公司的实际环境下大部分还是用2.7编写的代码,python3.X又向下不兼容2.X,我认为作为初学者更应该从python3着手:

  1. python3和python2区别不是很大,只有在某些语法、某些库名不一样而已;

  2. python2官方只支持到2020年,且不会有大版本的更新;

  3. 官方的所有标准库只在python3中更新;

所以还是忘掉python2吧,它已经是过去时了。

 

第一个程序hello world!

print('hello world!') #这里单引号或双引号均可

wKiom1jeWnOSzEqOAAAdGP14Lps477.png-wh_50

     也可以创建一个helloworld.py的文件执行:

wKiom1jeXd_gNtWMAAAUJ0S4HCk894.png-wh_50

linux下(为2.7版本):

#!/usr/bin/env python  #声明解释器是什么,告诉操作系统用什么方式打开

Print “hello world”    #python3中必须加(),python2中可以省略

保存为hello.py

增加执行权限:chmod 755 hello.py

直接执行: ./hello.py即可

 

变量

 

如何定义变量:name = ”Tone”    #变量声名并赋值后指向该值的内存地址

调用变量:print(“My name is”,name)

变量定义的原则

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

2、  变量名的第一个字符不能是数字;

3、  关键字不能声明为变量;

4、  约定俗成:变量名有含义英文单词,不要用拼音,单词之间用_隔开,gf_of_oldboy,每个单词的首字母大写;

 

Python中没有常量的概念,但约定俗成变量全是大写表示常量,如:PIE = “chang liang”(注:可以更改)

 

字符编码与二进制

 

 

Python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascii)

 

ASCII(American Standard Code for InfORMation Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用8位来表示(一个字节),即:2**8=256-1,所以,ASCII码最多只能表示255个符号。可以参考ASCII码表。

 

为了处理汉字,程序员设计了用于简体中文的GB231和用于繁体中文的big5

 

GB2312(1980年)共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中5个空位是D7FA-D7FE。

GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求,所以手机、MP3一般只支持GB2312。

 从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一的处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。

有的中文windows的缺省内码还是GBK,可以通过GB18030升级包升级到GBK18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

 

各个国家使用扩展位,导致混乱,国际开始定制新的标准即:Unicode

Unicode占用2个字符,统一编码

UTF-8 可变长的编码,存英文占用1byte,中文占用3bytes

 

Python2中默认使用ASCII编码,所以不支持中文,可以指定编码方式:

# -*- coding:UTF-8  -*-

Name = “你好,世界”

Print(name)

 

Python3天生支持中文,默认就是utf-8

 

 

用户交互程序

 

注释:单行可以用#,多行可以用三个’’’开头,三个’’’结尾

赋值:单行可以使用'或是"没有区别,只是在值中有单引号出现时使用"更清晰,name="i'm Tone"

      多行赋值必须使用'''

 

用户输入:input等待用户输入

         python2中的raw_input和python3中的input一样,python2中的input不要使用

格式化输出1:多行可以使用加号拼接的方法(尽量不要用该方法)

格式化输出2:可以使用%s:字符串;%d:数字;%f:浮点型的方式,如下程序

             默认所有输入的数据类型为字符串,可以使用int强制转换,并可以使用type查看类型

name= input("name:")
age = int(input("age:"))
print(type(age))
job = input("job:")
salary = int(input("salary:"))
info = '''
------------info of %s------------
name:%s
age:%d
job:%s
salary:%d
'''
%(name,name,age,job,salary)
print (info)

格式化输出3:可以使用{}的方式,如下

info='''

-----------------info of {_name}----------------------

name:{_name}

age:{_age}

job:{_job}

salary:{_salary}

'''.format(_name=name,

                _age=age,

                _job=job,

                _salary=salary)

或者

info='''

-----------------info of {0}----------------------

name:{0}

age:{1}

job:{2}

salary:{3}

'''.format(name,age,job,salary)

 

 

 

If else流程判断

 

实现密码密文显示效果:

import getpass   #调用模块标准库

username=input("username:")

passWord=getpass.getpass("password:")    #PyCharm中不好用

print(username,password)

 

判断输入的用户名密码是否正确

_username="tone"

_password="pass123"

username=input("username:")

password=input("password:")

if _username==username and _password==password:

   print("welcome user {name} login..".format(name=username))   #强制缩进

else:

   print("invalid username or password.")

 

定义一个年龄,然后判断年龄大小

 

real_age = 33
guess_age = int(input("input your guess age:"))
if guess_age == real_age:
   
print("congratulations,you got it.")
elif guess_age > real_age:
   
print("think smaller..")
else:
   
print("think bigger..")

 

While循环

在上面程序基础上增加功能:给3次机会猜年龄

 

real_age= 33
count = 0
while count < 3:
   
guess_age = int(input("input your guess age:"))
   
if guess_age == real_age:
       
print("congratulations,you got it.")
   
elif guess_age > real_age:
       
print("think smaller..")
   
else:
       
print("think bigger..")
   
count += 1

 

 

增加友好提示信息,当猜3次没有猜出来,提示游戏结束(low代码)

 

real_age= 33
count = 0
while count < 3:
   
guess_age = int(input("input your guess age:"))
   
if guess_age == real_age:
       
print("congratulations,you got it.")
       
break
    elif
guess_age > real_age:
       
print("think smaller..")
   
else:
       
print("think bigger..")
   
count += 1
    if count == 3:
       
print("guess too many times,game over!")


 

增加友好提示信息,当猜3次没有猜出来,提示游戏结束(high代码)使用while  else的语法

 

real_age= 33
count = 0
while count < 3:
   
guess_age = int(input("input your guess age:"))
   
if guess_age == real_age:
       
print("congratulations,you got it.")
       
break
    elif
guess_age > real_age:
       
print("think smaller..")
   
else:
       
print("think bigger..")
   
count += 1
else:
   
print("guess too many times,game over!")

 

While循环优化版本

 

range(10)表示0到9的一组数字集

for 可以结合else使用

range(0,10,2)0到10之间的数,2表示间隔数步长

 

猜年龄游戏,升级到每次有3次机会,并可以选择玩与不玩

 

real_age= 33
count = 0
while count < 3:
   
guess_age = int(input("guess age:"))
   
if guess_age == real_age:
       
print("congratulation,you got it")
       
break
    elif
guess_age > real_age:
       
print("think smaller..")
   
else:
       
print("think bigger..")
   
count += 1
    if count == 3:
       
play_agin = input("play game agin,yes or not:")
       
if play_agin == "y" or play_agin == "yes":
           
count = 0

 

For循环及作业要求

 

总结:continue表示结束本次循环,不执行continue以下的代码,但继续循环

            break结束整个循环,不执行break以下的代码,并跳出循环,继续执行循环外的代码

 

 

 

 

 

相关文章