python学习-Day6
学习内容详述
上期 ‘猜年龄’练习详解:
小tip:
"""
前期编写代码一定要先用中文写出步骤,再翻译成python代码
主要先能实现功能
写任何业务,都应该先搭建它的主体功能,再考虑配套优化
"""

'''
编写一个猜年龄的游戏
如果不对的情况下可以猜三次
如果对了直接结束
三次机会用完之后提示用户是否继续猜测
如果用户输入了y 则再给用户三次机会
如果用户输入n则直接结束
'''
答案及过程详解(代码注解):
# 1.定义真是的年龄
real_age = 18
# 7.定义一个记录用户猜测次数的计数器
guess_count = 1
# 5.将需要反复执行的代码缩进到while子代码中
while True:
# 9.判断当前用户到底猜测了几次
if guess_count == 4:
# 10.提示用户已经尝试了三次 是否继续尝试
is_again = input('您已经尝试了三次 是否继续(y/n)>>>:')
# 11.判断用户是否继续
if is_again == 'y':
# 12.重置用户尝试的次数
guess_count = 1
else:
# 13.直接结束循环
print('下次记得来玩哟~')
break
# 2.获取用户猜测的年龄
guess_age = input('请输入猜测的年龄>>>:')
# 3.将字符串类型的数字转换成整型类型的数字
guess_age = int(guess_age) # 该代码可能会报错 暂且忽略
# 4.比较猜测的年龄和真实年龄
if guess_age > real_age:
print('哎呀 讨厌 猜大了')
guess_count += 1 # 8.猜错了就应该自增依次
elif guess_age < real_age:
print('不好意思 没那么小')
guess_count += 1 # 8.猜错了就应该自增依次
else:
print('哈哈哈 你真棒!!!')
# 6.一旦猜对了 立刻结束循环
break
作业弄懂啦,让我们继续上次没学完的循环知识吧~
while循环补充
while + else
# while 与 else 连用
#语法:
"""
while 条件:
循环体代码
else:
循环体代码正常运行结束 则会执行该子代码块
"""

```python
当 while 没有被关键字 break 主动结束的情况下,
正常结束循环体代码之后,会执行 else 的子代码(如上图)
当 while 被关键字 break 主动结束的情况下,
else 就不运行了(如下图)
```

死循环与while的嵌套
死循环就是永远无法结束的循环并且一直占用CPU工作
# 死循环有些时候会极度的影响电脑的性能 甚至会造成硬件的损坏
eg一个死循环:
count = 10
while True:
count *= 1
while嵌套
我们使用上次的 用户登录系统 来写一个while嵌套吧~

当然,如果我们写了很多的嵌套循环,除了每个循环都加上break的方式以外,我们还可以使用另外一个方法(全局标志位)来一次解决。

# 贴个代码:
flag = True # 定义一个变量flag 等于True
while flag: # flag 指代 True的位置
username = input('username>>>:')
password = input('password>>>:')
if username == 'qiao' and password == '123':
print('登录成功')
while flag: # flag 指代 True的位置
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
print('下次光临')
flag = False # 将flag改为False 结束循环
print('正在执行您的指令:%s' % cmd)
else:
print("用户名或密码错误")
for循环
'''
for循环可以做到的while都能做到,但是for循环更简单
'''
一般情况下涉及到循环取值时,都会考虑使用for循环而不是while循环

贴个代码:
name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar']
# 使用while循环依次打印出列表中所有的元素
count = 0
while count < 5:
print(name_list[count])
count += 1
# 使用for循环依次打印出列表中所有的元素
for name in name_list:
print(name)
'''
语法结构:
for 变量名 in for循环对象: # 字符串、列表、字典、元组、集合
for循环的循环体代码
每次执行都会将循环对象中的一个元素赋值给变量名
'''
"""
命名规范:
针对for循环语法结构中的变量名 也应该做到见名知意
如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item...
"""
贴几个例子:
# 循环字符串:依次取出每一个字符
for i in 'hello world':
print(i)

# 循环字典(特殊):循环字典只能获取到字典的key,value无法直接获取
userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
for i in userinfo_dict: # for循环默认取的是字典的key赋值给变量名i
print(i)

# 循环元组
for i in (11, 22, 33, 44, 55):
print(i)

# 循环集合:字典与集合内部的元素都是无序的
for i in {11, 22, 33, 44, 55, 66}:
print(i)

range关键字
range方法在python2和python3中有所区分
在python2中range是直接产生一个列表 元素很多的情况下比较占用空间
在python2中有一个xrange 其实就是python3里面的range
在python3中就只有一个range了
在python3中range相当于哆啦A梦的口袋,不占空间但是可以取出很多数据

现在我们来学习使用range吧~
当我们用while循环打印0-100时:
# while循环
count = 0
while count < 101:
print(count)
count += 1
当我们用for循环打印0-100时就能用range帮忙啦~
# for循环
for i in range(101): # 从0开始到100结束的数据集 顾头不顾尾
print(i)
range其实一个迭代器,用于产生一个数据集合,但是节省空间
range用法
括号内只写一个数字 -- 默认从0开始 -- 顾头不顾尾
for i in range(10):
print(i)

括号内写两个数字 -- 自定义起始位置 -- 顾头不顾尾
for i in range(1, 10):
print(i)

括号内写三个数字 -- 第三个数字表示的是等差数列的差值 -- 默认情况下是1
for i in range(1, 10, 2):
print(i)

什么是爬虫???
通过编写代码去网络上爬取我们需要的数据
"""
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
可以自己找一个具有多页数据的网址 研究url是否有规律
有一些网址分页是用的url
有一个使用的是内部js脚本(暂且忽略)
"""
url_demo = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
real_url = url_demo % i
# 通过代码请求页面获取页面数据
# 然后根据业务需求筛选出特定的内容
for循环补充
for+break
break结束本层for循环
for i in range(10):
if i == 4:
break
print(i)
else:
print('结束')

for+continue
continue结束本次for循环 直接开始下一次
for i in range(10):
if i == 4:
continue
print(i)
else:
print('结束')

for+else
for循环正常结束之后运行else子代码
for i in range(10):
print(i)
else:
print('结束')

for循环嵌套
注*: break 与 continue也可以用于for循环,使用语法同while循环
for i in range(3):
for j in range(5):
print('*', end='') # end=''内部不写--> 不换行
print()

基本数据类型的内置方法
如何查看数据类型的内置方法
可以借助于编程软件的自动提示 -- 采用句点符快速查看

int整型内置方法
类型转换、
int 方法只能转换纯数字的字符串
# 类型转换
# res = int('123') # 将int方法执行之后的结果赋值给变量res
# print(res, type(res)) # int
# int('11.11')
# int('abc')
进制数转换
# 将十进制转换成其他机制
print(bin(100)) # 0b1100100 二进制(0b开头)
print(oct(100)) # 0o144 八进制(0o开头)
print(hex(100)) # 0x64 十六机制(0x开头)
# 将其他机制转换成十进制
print(int('0b1100100', 2))
print(int('0o144', 8))
print(int('0x64', 16))
float浮点型内置方法
类型转换
res = float('11.11')
print(res, type(res)) # 11.11
res = float('11')
print(res, type(res)) # 11.0
float('abc')

今天就学那么多吧!!!!
python学习-Day6的更多相关文章
- python 学习day6(面向对象)
博客部分内容转自:http://www.cnblogs.com/wupeiqi/p/4493506.html 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法 ...
- Python学习-day6 面向对象概念
开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...
- python学习day6 数据类型Ⅳ(集合)
day6 数据类型-集合 内容补充: 列表功能: .reverse()反转 v = [1,2,3,4,5,6]v.reverse()print() #[6, 5, 4, 3, 2, 1] .sort( ...
- python学习 day6 (3月7日)
#__author : 'liuyang' #date : 2019/3/7 0007 a = ['a' , 'b' , 'c'] b = [] print(a is b ) # 空元组 可以 空列表 ...
- python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝
一.深浅拷贝 1. 值拷贝 ls1 = ls2 不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...
- python学习day6 for循环 字符串的内置方法
1.for循环 和while相比 l=[1,2,3] i=0 while i <len(l) print(l[i]) i+=1 l=['a','b','c'] for item in l: pr ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
- python笔记 - day6
python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
随机推荐
- [vmware to openstack] 安装virtio驱动
描述 从vmware的虚拟机迁移到opensatck,由于vmware虚拟机磁盘类型采用的是scsi,要迁移到opensatck平台运行,发现虚拟机无法起来,原因是vmware虚拟机没有安装vir ...
- 解释一下Spring AOP里面的几个名词?
(1)切面(Aspect):被抽取的公共模块,可能会横切多个对象.在Spring AOP中,切面可以使用通用类(基于模式的风格)或者在普通类中以@AspectJ注解来实现. (2)连接点(Join p ...
- String s = new String("xyz");创建了几个字符串对象?
两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象.
- Thymeleaf使用遇见的问题,如字符串不相等
所属情况:内联JavaScript语言 当使用Thymeleaf取请求参数的值时,会出现数组符号包围值的问题,可通过[0]进行取出里面的字符串,取值之前需先判断值是否存在,不然会抛出索引0不存在问题 ...
- Thymeleaf+Spring使用自己的工具类
第一种.提供思路,继承SpringStandardDialect,重写getExpressionObjectFactory方法,设置expressionObjectFactory的实际对象,并在Tem ...
- vue 初识(基础语法与数据驱动模型)
1.es6的语法 let 特点: 1.局部作用域 2.不会存在变量提升 3.变量不能重复声明 const 特点: 1.局部作用域 2.不会存在变量提升 3.不能重复声明,只声明常量 不可变的量 模板字 ...
- redis 使用详解
前戏: 又到了最喜欢的前戏部分,这个前戏可能有点长: Nosql和sql的区别 存储结构与mysql这一种关系型数据库完全不同,nosql存储的是KV形式 应用场景不同,sql支持关系复杂的数据查询, ...
- docker学习-01-安装docker
[root@localhost firstDocker]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@loc ...
- C语言之API
C语言之API 1.输入(控制台输入) scanf("%d,%d",&a,&b); 2.输出(打印数值) printf("max=%d\n",c ...
- apollo规划控制视频-13 motion planning with autonomous driving