Learning Python Day 1

2018-06-18 01:17:13来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

Python擅长的领域:

WEB开发:Django\pyramid\Tornado\Bottle\Flask\WebPy
网络编程:Twisted\Requests\Scrapy\Paramiko
科学运算:SciPy\Pandas\Ipython
GUI图形开发:wxPythin\PyQT\Kivy
运维自动化:OpenStack\SaltStack\Ansible\腾讯蓝鲸

 

  • 第一个Python程序:"Hello World"
1 print("Hello World")
  • 变量与交互式输入:(注意Input得到的是字符型变量,如果需要数字要进行强制转换,如int)
 1 #代码在interaction.py中
 2 name = input("name:")
 3 age = int(input("age:"))    #integer
 4 print(type(age),type(str(age)))
 5 job = input("job:")
 6 info1 = '''
 7 ---------------info1 of %s --------------
 8 name:%s
 9 age:%d
10 job:%s
11 ''' %(name,name,age,job)    # '''   ''' 表示多行注释,也可以将此赋给变量
12 print(info1)                #第一种方法:%d,%s……
13 info2 = '''
14 ---------------info2 of {_name} -----------
15 name:{_name}
16 age:(_age}
17 job:{_job}
18 '''.format(_name=name,_age=age,_job=job)
19 print(info2)                 #第二种方法:{}加.format()
20 info3 = '''
21 -------------info3 of {0} ---------
22 name:{0}
23 age:(1}
24 job:{2}
25 '''.format(name,age,job)
26 print(info3)                 #第三种方法:{}里面数字加.format(),此时.format()中变量要按顺序排列
  •  小型用户登录程序(不显示密码)这里要使用getpass模块
1 import getpass
2 _username = zheng zhi
3 _password = abc123
4 username = input("username:")
5 password = getpass.getpass("password:")
6 if _username == username:
7     print("Welcome user {name} login..".format(name=username))
8 else:
9     print("Invalid username or password")    
  •  简单的循环

注意,类似for,while,if,else等后面一定要加冒号

while

1 count = 0
2 while True:
3     print("count:",count)
4     count = count+1
5     if count == 10000
6         break

for

1 for i in range(10):
2     if i < 3:
3         print("loop",i)
4     else:
5         continue
6     print("go")

注意Python中强制缩进,一个代码缩进与不缩进可能会有很大差别,比如在上个例子中,如果把最后一行代码修改一下:

1 for i in range(10):
2     if i < 3:
3         print("loop",i)
4     else:
5         continue
6 print("go")

这样最后运行的结果与上个会产生不同,要多注意。

接下来,我们运用至今所学的知识编写一个“猜年龄”的小游戏,可以分别用while和for循环来写

  • 猜年龄
 1 #用while来写,代码在guess_while中
 2 age_of_zhengzhi = 21
 3 count = 0
 4 while count < 3:
 5     guess_age = int(input("Please guess the age of zhengzhi")) #注意不要忘记了用int将字符型变量转化为整形变量
 6     if guess_age ==age_of_zhengzhi:
 7         print("Yes,you got it!")    
 8         break
 9     elif guess_age > age_of_zhengzhi:
10         print("Emmm,guess smaller..")
11     else:
12         print("Emmm,guess bigger..")
13     count = count+1
14 else:
15     print("You have tried too many times..")

 

#用for来写,代码在guess_for中
age_of_zhengzhi = 21
for i in range(1,5):
    guess_age = int(input("Please guess the age of zhengzhi")) #注意不要忘记了用int将字符型变量转化为整形变量
    if guess_age ==age_of_zhengzhi:
        print("Yes,you got it!")    
        break
    elif guess_age > age_of_zhengzhi:
        print("Emmm,guess smaller..")
    else:
        print("Emmm,guess bigger..")
else:
    print("You have tried too many times..")

注意break和continue的含义:

break:跳出当前循环

continue:跳出当次循环

  • 模块初识

内置的两个模块:

sys模块:

1 import sys
2 print(sys.path)      #打印环境变量
3 print(sys.argv)      #打印相对路径
4 print(sys.argv[2])  #用于读取给定的参数

 

比如在命令行中python sys_mod.py 5 4 3 2 1,这样,print(sys.argv[2])命令会返回第二个参数4

os模块:

1 import os
2 cmd_res1 = os.system("dir)  #os.system直接输出到屏幕上,不存给cmd_res,即执行命令,不保存结果
3 print("-->",cmd_res1)
4 cmd_res2 = os.popen("dir").read()  #执行命令但不显示,将结果保存给变量
5 print("-->",cmd_res2

 

我们在执行第2行os.system()代码后运行直接打印出根目录,前面的赋值表达式似乎没起到作用,接下来我们打印cmd_res1,结果发现输出了0,这个含义是代表执行命令成功;

第4行执行os.popen()则是执行命令但不显示,将内容赋值给了cmd_res2,由于加了.read(),接下来我们打印cmd_res2时会得到具有可读性的根目录。

第三方模块:

第三方下载的,甚至自己写的.py文件都可称之为第三方模块,可以使用import调用。但是需要注意的是,命令执行时寻找模块会在sys.path显示的路径中寻找,找不到则会报错。比如我们将之前写好的password.py文件放入day1文件夹新建的一个名为new_dir的文件夹中,运行以下代码将会报错:

1 import password

 

这是因为import命令会在sys.path显示的环境变量路径中寻找待调用的模块,但是我们将password.py模块改变了位置。对此,有两种解决方法,第一是将password.py重新复制到site_package目录中(一个专门存放第三方模块的位置,在环境变量路径中有);第二是将new_dir目录增添到环境变量路径中去。

  • bytes类型及转码

简单地说,就是.encode(encoding = "~”)将str(字符串)转化为bytes,.decode(encoding = "~")将bytes转化为str(字符串)

msg = "我爱北京天安门"
print(msg)
print(msg.encode(encoding = "utf-8").decode(encoding = "utf-8))

 

两个print打印的结果是相同的。但注意,不是字符串无法进行.encode()转码,比如123.encode()

  • 三元运算
1 result = 值1 if 条件 else 值2

 

如果条件为真,则result = 值1;若条件为假,则result = 值2。

 

password改进版(加入了连续输入三次错误后不允许继续输入)(但并没有把次数与用户名联系起来,日后继续改进):

 1 import getpass
 2 _username = "zheng zhi"
 3 _password = "abc123"
 4 count = 0
 5 while count < 3:
 6     username = input("username:")
 7     password = getpass.getpass("password:")
 8     if _username == username and _password == password:
 9         print("Welcome user {name} login ..".format(name = username))
10         break
11     else:
12         print("Invalid username or password,you have the last %d chances"%(2-count))
13         count += 1
14 if count == 3:
15     print("You have tried unsucessfully for 3 times,your username has been locked!")

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输

下一篇:使用Python读写csv文件的三种方法