Python起步学习

  1. 案例1:程序输入输出
  2. 案例2:判断合法用户
  3. 安全3:编写判断成绩的程序

1 案例1:程序输入输出

1.1 问题

编写login.py脚本,实现以下目标:

  1. 提示用户输入用户名
  2. 将用户名保存在变量中
  3. 在屏幕上显示欢迎用户的信息

1.2 方案

编写程序时,很多情况下都需要程序与用户交互。在python中,主要通过raw_input()获取用户输入信息,使用print打印信息。

通常当想看变量内容时,会在代码中使用print语句输出。不过在交互式解释器中,可以用print语句显示变量的字符串表示,或者仅使用变量名查看该变量的原始值。

从用户那里得到数据输入的最容易的方法是使用raw_input()内建函数。它读取标准输入,并将读取到的数据赋值给指定的变量。需要注意的是,raw_input()函数读入的数据全部是以字符串的方式存储的。如果用户输的是数字,那么python也将其保存为字符串,当将字符串与数字做数学运算是将会出现TypeError的错误。

初学者在需要显示信息或得到用户输入时,很容易想到使用print语句和raw_input()内建函数。不过在此建议函数应该保持其清晰性,也就是它只应该接受参数,返回结果。从用户那里得到需要的数据, 然后调用函数处理, 从函数得到返回值,然后显示结果给用户。这样你就能够在其它地方也可以使用你的函数而不必担心自定义输出的问题。这个规则的一个例外是,如果函数的基本功能就是为了得到用户输出,或者就是为了输出信息,这时在函数体使用print语句或raw_input()也未尝不可。更重要的,将函数分为两大类,一类只做事,不需要返回值(比如与用户交互或设置变量的值), 另一类则执行一些运算,最后返回结果。如果输出就是函数的目的,那么在函数体内使用 print 语句也是可以接受的选择。

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本

本次练习的脚本文件是/root/bin/login.py。

  1. [root@py01 bin]# vim login.py
  2. #!/usr/bin/env python
  3. username = raw_input('username: ')       #使用变量username接收用户输入的字符
  4. print 'Welcome', username            #输出欢迎信息,字符串和变量名之间用逗号
  5. #隔开,两者之间自动会加上空格

步骤二:测试脚本执行

  1. [root@py01 bin]# chmod +x login.py       #给脚本添加执行权限
  2. [root@py01 bin]# login.py
  3. username: bob                              #输入用户名
  4. Welcome bob

案例2:判断合法用户

2.1 问题

编写login.py2脚本,实现以下目标:

  • 提示用户输入用户名和密码
  • 将用户名和密码分别保存在变量中
  • 如果用户名为bob并且密码为123456,则输出Login successful,否则输出Login inorrect

2.2 方案

本题主要是复合的判断语句,写法有如下两种:

  • 使用两个判断语句,先判断用户名,如果用户名正确再判断密码是否正确
  • 在一个判断语句中,同时判断两个条件是否全部成立

2.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本

在很多语言中,if后面的判断条件需要使用圆括号或方括号,但是python并不强制,可以直接将判断条件写在if后面,并不会产生错误。

有些时候,判断条件可能有多个(使用and或or连接),为了更好的可读性,建议在这种环境下,将多个条件分别用圆括号括起来。

  1. [root@py01 bin]# vim login2.py
  2. #!/usr/bin/env python
  3. username = raw_input('username: ')
  4. password = raw_input('password: ')
  5. if username == 'bob':
  6. if password == '123456':
  7. print 'Login successful'
  8. else:
  9. print 'Login incorrect'
  10. else:
  11. print 'Login incorrect'

或将上面的代码改为以下写法:

  1. [root@py01 bin]# vim login2.py
  2. #!/usr/bin/env python
  3. username = raw_input('username: ')
  4. password = raw_input('password: ')
  5. if username == 'bob' and password == '123456':
  6. print 'Login successful'
  7. else:
  8. print 'Login incorrect'

步骤二:测试脚本执行

  1. [root@py01 bin]# ./login2.py
  2. username: bob
  3. password: 123456
  4. Login successful
  5. [root@py01 bin]# ./login2.py
  6. username: bob
  7. password: abcd
  8. Login incorrect
  9. [root@py01 bin]# ./login2.py
  10. username: tom
  11. password: 123456
  12. Login incorrect

步骤三:改进脚本

脚本程序在运行时,应该将敏感的密码隐藏,不要显示在屏幕上。为了实现这个功能,可以使用getpass模块中的getpass方法。

getpass可以像Linux处理密码一样,屏幕上不出现任何字符,但是用户的输入可以保存到相应的变量中。

上面的代码可以改写为:

  1. [root@py01 bin]# vim login2.py
  2. #!/usr/bin/env python
  3. import getpass
  4. username = raw_input('username: ')
  5. password = getpass.getpass('password: ')
  6. if username == 'bob' and password == '123456':
  7. print 'Login successful'
  8. else:
  9. print 'Login incorrect'

测试脚本执行:

  1. [root@py01 bin]# ./login2.py
  2. username: bob
  3. password: 123456               #此处所填写的密码将不在屏幕上显示
  4. Login successful

安全3:编写判断成绩的程序

3.1 问题

编写score.py脚本,根据用户输入的成绩分档,要求如下:

  • 如果成绩大分60分,输出“及格”
  • 如果成绩大于70分,输出“良”
  • 如果成绩大于80分,输出“好”
  • 如果成绩大于90分,输出“优秀”
  • 否则输出“你要努力了”

3.2 方案

本题需要注意的是逻辑顺序。在多分支的if语句中,自顶向下逐步匹配,一旦匹配则执行相应的子语句,其他语句将不再执行。

因此,在编写代码时要注意逻辑,成绩是100分也大于60分,如果把判断较小分数的语句写在前面,那么是凡大于60分的成绩都是输出“及格”,那么只有第一个判断语句会执行,所以应该把分值更高的判断写在上面。

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:编写脚本

  1. [root@py01 bin]# vim score.py
  2. #!/usr/bin/env python
  3. #coding: utf8                               #为了程序可以支持中文,指定UTF8编码
  4. score = int(raw_input('enter score: '))
  5. if score > 90:
  6. print '优秀'
  7. elif score > 80:
  8. print '好'
  9. elif score > 70:
  10. print '良'
  11. elif score > 60:
  12. print '及格'
  13. else:
  14. print '你要努力了!'

步骤二:测试脚本执行

  1. [root@py01 bin]# ./score.py
  2. enter score: 59
  3. 你要努力了!
  4. [root@py01 bin]# ./score.py
  5. enter score: 88

Python起步学习的更多相关文章

  1. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

  2. python基础学习10

    python基础学习 内容概要 文件内光标的移动 文件数据修改 函数简介 函数语法结构 内容详情 文件内光标的移动 with open(r'路径','r',encoding='utf8') as f: ...

  3. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  4. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  5. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  6. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  7. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  8. python 线程学习

    彩照 一.学习[1] # -*- coding: utf-8 -*- import time import thread def timer(no, interval): cnt = 0 while ...

  9. Openstack python api 学习文档 api创建虚拟机

    Openstack python api 学习文档 转载请注明http://www.cnblogs.com/juandx/p/4953191.html 因为需要学习使用api接口调用openstack ...

随机推荐

  1. 【剑指Offer】简单部分每日五题 - Day 1

    今天开始更新leetcode上<剑指Offer>的题解,先从简单难度开始.预计按下列顺序更新: 简单难度:每日5题 中等难度:每日3题 困难难度:每日1题 17 - 打印从1到最大的n位数 ...

  2. 超强图文|并发编程【等待/通知机制】就是这个feel~

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  3. 前端基础面试题(js部分)

      前端基础面试题(JS部分)   1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined.Null.Boolean.Number.String值类 ...

  4. 记一次在新服务器上搭建lnmp的过程

    背景: 前不久阿里云在做活动,200+一台服务器三年,于是果断入手了一台. 今天有空就在服务器上把lnmp环境给装了,之前为了了解安装过程,在别的机器上尝试过单独安装nginx.mysql.php,虽 ...

  5. $api 回调函数then应用

    getReceiveListAPI (param) { return new Promise(resolve => { let params = { // idCard: this.idCard ...

  6. created:异步初始化数据都应该放到 created里面

    created:异步初始化数据都应该放到 created里面

  7. 微信小程序开发(二)认识开发工具

    腾讯微信团队提供非常优秀的微信小程序开发工具,大大降低了开发者的入门门槛,为他们点赞!上一篇文章已经说明了,如何注册及下载开发工具,现在我们就来一起认识见识一下开发工具的庐山真面目. 首次打开这个开发 ...

  8. Airtest,Poco,Unity自动化测试集成

    作为一个Game Developer,测试部分是必不可少,程序完成需求首先要进行S0相关的测试,这样确保交付到策划验收和QA验收时是没有阻断性的bug或者显而易见代码缺陷.那么如何去做测试用例呢?肯定 ...

  9. C# 微信 生活助手 空气质量 天气预报等 效果展示 数据抓取 (二)

    此文主要是 中国天气网和中国环境监测总站的数据抓取 打算开放全部数据抓取源代码 已在服务器上 稳定运行半个月 webapi http://api.xuzhiheng.cn/ 常量 /// <su ...

  10. vue-element框架通过blob进行后端token权限验证下载

    在项目中,后端要求下载时要进行后端的权限验证,发现a链接进行直接下载无法满足这个需求,只能通过blob对象来进行下载操作,翻阅大量资料最后实现该功能.以下是我个人的理解,如有不足,请各位大佬多指教 / ...