第一题:使用while循环输入 1 2 3 4 5 6 8 9 10

# 使用while循环输入 1 2 3 4 5 6  8 9 10
count = 0
while (True) :
count = count + 1
#判断当count等于7的时候,返回循环最初,不执行下面的打印等语句
if count == 7:
continue
print (count)
#判断当count等于10的时候,跳出循环。
if count == 10:
break

思路是设置一个初始值count,然后开始循环,自增1;

加if判断语句,当count为7时使用continue跳过打印7;

当count为10时,使用break中断和跳出循环。

敲的时候出了很多规范性的错,

比如没有使用英文的冒号,

没有对应缩进区块,

== 错敲成了=,这两者的区别,

前者是比较值,后者是直接赋值。

更优雅的写法应该是while的同时将其中满足跳出循环的条件也给上,节省代码行数,也比较优雅易懂。

例如以下:

#计数初始为0
count = 0
#当count小于10时,进行循环,反之则是中止循环,不需要用到break
while ( count < 10 ) :
count = count + 1
#当count为7时使用continue跳过打印7;
if count == 7:
continue
print (count)

对比两例可看出,有效代码行数从8行节省到6行,关键是易读性提高了。

第二题:求1-100的所有数的和

# 求1-100的所有数的和
# 求和,故除设置初始计数的count变量外,还应设置多一个sum和的变量
count = 0
sum = 0
# 注意,设置满足的条件我最初设的是小于101,结果得数把101也算进去了,
# 排查后发现是count自增1,到count为99的时候再加1就是100了,条件设为小于100才是刚刚好。
while (count < 100):
#计数器自增1
count = count + 1
#和数和计数器相加
sum = sum + count
#循环中止的时候我们输出结果,注意字符串只能和字符串拼接,所以sum要用str转义
print ('1-100的所有数之和为:'+str(sum))

第三题 输出 1-100 内的所有奇数

odd = 1
while (odd < 101):
print (odd)
#奇数的特质之一是从1开始,自身加2后的数同样也是奇数
odd = odd + 2

如果换另一种思路,从奇数的另一个特质,被2除后都余1来输出的话会怎么样呢?

odd = 0
while (odd < 100):
odd = odd + 1
#取余来进行判断,余数为1则输出打印,不用对余数为0的情况再进行判断。
if (odd % 2 == 1) :
print (odd)

注意,上面敲代码的时候我缩进的时候混合使用了tab键和spaces键以致报错。

所以python在对缩进规范这里要求挺严的,嗯,要优雅,不要慌乱。

第四题:输出1-100内的所有偶数

# 输出 1-100 内的所有偶数
even = 0
while (even < 100):
even = even + 1
#对even进行取余运算,等于0的则打印输出even
if even % 2 == 0:
print (even)

这题与第三题是同类型的,不多作叙述。

第五题:求1-2+3-4+5 ... 99的所有数的和

# 求1-2+3-4+5 ... 99的所有数的和
# 计数器初始为0,和也初始为0
count = 0
sum = 0
while (count < 99):
count = count + 1
#当count是偶数时(取余为0)就被和相减
if count % 2 == 0:
sum = sum - count
#加上continue来控制它不再执行下面的语句,又周而复始进行下一次循环
continue
#反之,奇数时直接相加
sum = sum + count
#别忘了将得出的sum结果输出给用户,str转义成字符串与提示拼接。
print ('1-2+3-4+5...99的所有数的和为:'+str(sum))

第六题:模拟用户登录(三次机会重试)

# 用户登录(三次机会重试)
# 这里题意比较含糊,实际上现在还是基础阶段,
# 老师这题的意思是大致让你模拟出人机交互及认证三次 # 故定义用户名和密码变量如下:
username = 'tiele'
password = 'ABCabc123'
#认证计数器初始为3
count = 3 #开始三次认证循环
while (count > 0):
#开始人机交互,分别输入用户名和密码
name = input ("请输入用户名:")
#需要给个pass让用户进行输入交互
pass
passwd = input ("请输入密码:")
if username == name and password == passwd :
print ("你已成功登录")
#成功登录后当然要break跳出循环
break
else:
#输错机会减1并给出提示
count = count - 1
print ("用户名或密码错误,你还有"+str(count)+"次机会进行验证。")



最初我做这题的时候是用了机会初始为0,增加到3则中止循环的方式,后来对照了一下同学的,感觉的确使用初始机会为3,然后能逐次-1并提示的思路人性化一点。

后来发觉有别的同学用的是我最初的0增到3的思路,直接提示登录失败,到3次时提示超过三次登录失败,请稍后重试,也是很符合常见的情境。

所以是感觉都可以。

至此,day1的作业就全部完成了。

2018-3-17

end

附:day01的作业6题代码全部己提交到github上。

https://github.com/tielemao/python-learn/tree/master/day01

铁乐学python_day01-作业的更多相关文章

  1. 铁乐学Python_day12_作业

    1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[('红心',2),('草花',2), -('黑桃','A')] def poker(): suit = ['红心', '梅花', ...

  2. 铁乐学python_day10_作业

    1.继续整理函数相关知识点,写博客. 2.写函数,接收n个数字,求这些参数数字的和.(动态传参) def sum_n(*args): sum = 0 for i in args: sum += i r ...

  3. 铁乐学python_day09_作业

    练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...

  4. 铁乐学Python_day08作业

    1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数. apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 通过 ...

  5. 铁乐学python_Day44_IO多路复用

    目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO ...

  6. 铁乐学python_Day43_协程

    铁乐学python_Day43_协程 引子 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位. 按道理来说我们已经算是把cpu的利用率提高很多了. ...

  7. 铁乐学python_Day42_线程池

    铁乐学python_Day42_线程池 concurrent.futures 异步调用模块 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor: ...

  8. 铁乐学python_Day42_线程-信号量事件条件

    铁乐学python_Day42_线程-信号量事件条件 线程中的信号量 同进程的一样,Semaphore管理一个内置的计数器, 每当调用acquire()时内置计数器-1:调用release() 时内置 ...

  9. 铁乐学python_Day42_锁和队列

    铁乐学python_Day42_锁和队列 例:多个线程抢占资源的情况 from threading import Thread import time def work(): global n tem ...

  10. 铁乐学python_Day39_多进程和multiprocess模块2

    铁乐学python_Day39_多进程和multiprocess模块2 锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发 ...

随机推荐

  1. SSL编程(1) 概述

    文章来自本园马若望 SSL是TCP/IP环境上的标准的安全加密传输协议.SSL的全称是安全的 Socket层,它具有与Socket类似的客户端/服务器体制.常见的https即http+ssl,从安全的 ...

  2. javascript实例——鼠标特效篇(包含2个实例)

    鼠标是现在电脑的基本配置之一,也是最常用的输入命令的工具之一.本文将将一些与鼠标有关系的特效. 1.跟随鼠标移动的彩色星星 如题,会根据鼠标的移动而移动,并在鼠标周围随机来回移动,让人感觉在放大缩小. ...

  3. MVC 基架不支持 Entity Framework 6 或更高版本 即 NuGet的几个小技巧

    MVC 基架不支持 Entity Framework 6 或更高版本.有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=276833. 原因:mvc版 ...

  4. [转]WebForm中使用MVC

    本文转自:https://www.cnblogs.com/encoding/articles/3556046.html 前言 掐指一算,3年没写博了,好懒的说... 众所周知,MVC现在越来越火了,不 ...

  5. Node.js构建可扩展的Web应用1

    <Practical Node.js:Building Real-World Scalable Web Apps>[美]Azat Mardan(电子工业出版社) 安装node.js和NPM ...

  6. 结合after使用content

    结合after或before伪类,在元素的开头或结尾附加上一定的内容,content:""的引号中即是添加的内容,比如说我们这么写: <div>学而时习之不亦说乎< ...

  7. SpringMVC 工作原理详解

    本文Github开源项目https://github.com/Snailclimb/JavaGuide,只供自己学习总结无商业用途,如有侵权,联系删除 先来看一下什么是 MVC 模式 MVC 是一种设 ...

  8. git 查看暂存区

    一.简介 git ls-files 命令是用来查看暂存区中文件信息 二.常用参数 参数说明(括号里是简写) --cached(-c)显示暂存区中的文件,git ls-files命令默认的参数 --de ...

  9. Markdown预览功能不可用解决方案

    初学者在使用Markdown时也许会遇到这个问题 原因是电脑缺少一个组件,解决方案很简单,安装上就好了,以下是链接 http://markdownpad.com/download/awesomium_ ...

  10. react组件(react-grid-gallery)

    react有很多好玩的组件,react-grid-gallery就是其中一个,主要处理图片展示,对图片进行放大与缩小 文档:https://www.npmjs.com/package/react-gr ...