设为首页 收藏本站
查看: 929|回复: 0

[经验分享] Python第一天课程

[复制链接]

尚未签到

发表于 2017-7-9 12:01:05 | 显示全部楼层 |阅读模式
  1、在linux下写python脚本,开头的解释器宣告的写法应该是#!/usr/bin/env python

  定义变量name="XXX"  age=21   所有使用引号引起的内容都是字符串
  变量的意义是标示数据,所以变量名称应该有意义
  遇到复杂变量名是使用“_”分割多个单词或单词首字母大写
son_of_twins_brother_age = 2
NameOfTwinsGf = "FengJie"

  不可以使用“-”连接单词
  不可以使用数字开头
  不可以使用特殊字符
  变量名中不可以有空格
  不可以使用关键字作为变量
  在python2.X的时候默认支持ASCII编码,如果需要中文需要明确指示编码表,写法为:
  #!/usr/bin/env python
#_*_ coding:utf-8 _*_
  python3默认使用utf-8编码,因此不需要特别宣示,仅需要
  #!/usr/bin/env python用来宣示解释器即可(linux运行)
  python开发规范,每一行最大不应超过80个字符
  注释
  #用于单行注释
  使用3个引号(前后各三个)用于多行注释
'''
XXX
XXX
'''
  打印用户输入的内容
  在3.0中的写法
user_input = input("input your name:")

print("user input msg:",user_input)

  在2.7中的写法
user_input = raw_input("input your name:")

print("user input msg:",user_input)
  在2.7中input会认为你输入的不是字符串,而是变量名,因此如果要将输入的内容付给变量,应该使用raw_input。否则会报错
  但是input如果是数字,就会认为是数字。因此 在2.7中input可以是数字,也可以是变量名,如果是字符串则只能用raw_input


  因此2.7中基本不用input
  格式化字符串
  #!/usr/bin/envpython
  #_*_coding:utf-8_*_
  Name=input("inputyourname:")
  Age=input("inputyourage:")
  Job=input("inputyourjob:")
  msg='''
  Informationforuser:%s
  -----------------------
  Name:%s
  Age:%s
  Job:%s
  -----------END------------
  '''%(Name,Name,Age,Job)# %前后均有空格
  print(msg)
  %s代表字符串,还可以替换为%d代表输入的是数字
  但是如果要使用%d,必须要确保这个变量为数字类型,input输入的内容都是字符串类型,因此Age变量不能直接使用%d,而要将输入的内容转为int类型
  即
Age=int(input("input your age: "))


  Name=input("inputyourname:")
  Age=int(input("inputyourage:"))
  Job=input("inputyourjob:")
  msg='''
  Informationforuser:%s
  -----------------------
  Name:%s
  Age:%d
  Job:%s
  -----------END------------
  '''%(Name,Name,Age,Job)#%前后均有空格
  print(msg)



  格式化数据类型有3中
  $s 字符串
  $d 数字
  $f 小数
  导入模块(导入的内容只能在windows的CMD或linux下使用,pycharm不能用)
  import getpass #导入一个可以使输入变成密文的模块
username = input("username: ")
password = getpass.getpass("password : ")

  import os #导入系统命令模块
  os.system("df") #用于打印系统命令
  os.mkdir("/root/123") #用于创建一个文件夹
  os.system("df -h") 这个命令的输出有2个,一个是实际的命令输出,一个是输出结果,命令输出就是df的内容(系统存储使用情况),输出结果就是0

  如果我们直接 cmd = os.system("df -h"),则cmd中只有输出结果,如果要想将命令输出复制则应该写为
  cmd = os.popen("df -h").read(),先用popen将结果保存到内存中,再read一下
  实际import 命令后面接的模块就是一个python的脚本,但是不能带.py后缀
  可是这个脚本的位置需要注意,默认情况下系统会到特定的路径下寻找脚本,或者是当前路径下。查找特定路径的方法为
import sys
print(sys.path)


  >>> import sys
  >>> print(sys.path)
  ['', '/usr/local/python3/lib/python35.zip', '/usr/local/python3/lib/python3.5', '/usr/local/python3/lib/python3.5/plat-linux', '/usr/local/python3/lib/python3.5/lib-dynload', '/usr/local/python3/lib/python3.5/site-packages']

  从这里可以看出因为第一个位子的是'',因此说明当前路径的优先级是最高的,因此如果在当前路径下存在一个其他路径中的同名脚本,则当前路径优先



  我们可以自己写一个模块,就用之前的
import getpass
username = input("username: ")
password = getpass.getpass("password : ")
print(username,password)

  保存为pass.py,然后将其保存到上面的路径中,之后就可以在其他的脚本中import pass来导入这个模块了
  if 判断
  python是一个有强烈格式的语言,其语法格式依照严格的缩进
  user="XXX"
  passwd="cisco,123"
  username=input("inputyourusername;")
  password=input("inputyourpassword:")
  if user == username:
  print("usernameiscorrect...")
  if passwd == password:
  print("Welcomelogin...")
  else:
  print("passwordisinvalid...")
  else:
  print("usernameisinvalid")
  同时,if可以多条件判断
  user="XXX"
  passwd="cisco,123"
  username=input("inputyourusername;")
  password=input("inputyourpassword:")
  if user==username and passwd==password:
  print("Welcome login")
  else:
  print("usernameorpassworisinvalid")
  循环
  for i in range(10):  range(10)代表0到9的10个数
  循环10次,但是只能猜3次,超过3次自动跳出
  age=32
  foriinrange(10):
  ifi<3:
  gage=int(input("inputage:"))
  ifgage>age:
  print("guessmorethanage")
  elifgage<age:
  print("guesslessthanage")
  else:
  print("yougotit")
  break
  else:
  print("toomanytimes")
  break
for i in range(10)
    i=100

  在上面的内容中,range(10)代表的是一个序列,因此在for的循环中每次i的值是这个序列中的值依次被赋值,即便下面重新将i赋值,只要仍在这个循环中,这个i仍然会被range覆盖
  跳出程序
  1、跳出整个程序,break,设置完成后,当运行到break时,就会结束程序
  2、跳出当次循环,continue,设置完成后,当运行到continue时,会结束当次循环,但是整体循环仍然还会有
  作业一:博客
  作业二:编写登录程序
  输入用户名密码
  认证成功后显示欢迎信息
  输错三次后锁定
  作业三:多级菜单
  1.北京
  2.上海
>>input
  1.东城
  2.西城
>>input
  1.沙河
>>input

  同时输入b返回上级菜单,q退出程序
  流程图 processon.com
readme:
  SVN:
  作业命名day1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-391947-1-1.html 上篇帖子: NAT 下篇帖子: 第7章 处理串行线路和帧中继连接故障
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表