python不用if编一个数字游戏_洗礼灵魂,修炼python(10)--有趣的判断分支+从实例中掌握循环语句...

所有的编程语言里都有判断语句和循环语句。

判断语句则是用来分支程序流程的

循环语句则是为了实现一个效果,让程序的规律性的重复操作

不用说,分支和循环自然在python里也是有的

一,条件判断:if,if……else

1.在python里if可以单独出现,也可以和else配套出现,但是else不能单独出现

这里则要提到一个在编程里一个共有的特性:

悬挂else:即出现多余或者不和if匹配的else,就叫悬挂else,当出现悬挂else是会导致程序报错的。但在python里强制限制else属于哪一个循环里,对缩进严格要求,所以不会出现悬挂else,也就是前面提到的【else不能单独出现】。

2.if格式:

a:

if XX:

suite(语句体套件)

b:

if XX:

suite

else:

suite

3.使用条件判断案列:

代码:

# -*- coding:utf-8 -*-

print("猜一个幸运数字,游戏开始!")#提示游戏开始

temp=input("请输入你觉得对的数字:")#这一句是和用户交互得到一个值,并赋值给temp

guess=int(temp)#这一句将temp变量转换成整形,方便下面的条件判断

if guess>8:

print("大了")#如果guess变量大于8,则运行print

else:#否则的话

if guess == 8:

print("哇,猜对了")#如果guess等于8,运行print

else:

print ("小了")#如果不等于8也不大于8,运行print

print("游戏结束")#提示游戏结

运行结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTUxMzQxMDA1LTk2MjYzMTM0My5wbmc=.jpg

因为没有猜对,再运行两次:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTUxNDE4NjE1LTE0MzU3NzMyNjkucG5n.jpg

第三次终于对了,判断语句就是这样使用的

不过这个小程序看起来还不够完善,可以优化一下:

# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!")

guess=int(input("请输入你觉得对的数字:"))

if guess>8:

print("大了")

elif guess == 8: #注意elif

print("哇,猜对了")

else:

print ("小了")

print("游戏结束")

这里elif等同于else+if

但是还是不够完善,因为每次运行代码只有一次猜的机会,觉得有点少了,可以猜多次吗?当然可以,所以得用上下面要说的循环

二,循环

在python里有两种循环,while循环和for循环,并注意在python里没有when语句和switch语句

1.while循环

1)格式:

a:

while XX:

suite

b:

while XX:

suite

else:

suite

是的,while语句可以和else配套使用

2)从实例中剖析while循环:

代码:

# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!")

guess=int(input("请输入你觉得对的数字:"))

while guess!=8:

guess=int(input("请重新输入你觉得对的数字:"))

if guess>8:

print("大了")

else:

print ("小了")

print("猜对了")

运行结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTYwNTQzNDU4LTE3NDExMDkzOTcucG5n.jpg

效果是实现了,但是又有个两个小问题:

问题1.为什么我要在while语句里还要在再一次为guess赋值

因为在当while运行时,首先判定的就是当第一次用户输入时能不能满足条件,满足条件则循环,而这里的不等于8,第一次输入是5,5确实不等于8,所以满足条件运行,但是,如果不重新赋值,guess则会在整个程序里一直指向5这个值,永远满足条件,永远循环,就成了一个死循环,直到耗尽你的计算机资源让计算机崩溃宕机为止:

不给guess再一次赋值的效果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTYxMTMyNTUyLTg0MjQ2NDk4OC5wbmc=.jpg

这里我把程序终止了,所以有个keyboardInterrupt键盘异常出现,关于异常的后面会讲解,暂时可以忽略

所以,在while里的那一句重新赋值很重要,防止发生死循环,并且切记,在使用循环时如果产生了死循环是编程的大忌

问题2.在第一次输入5的时候,并没有给出提示是大了还是小了,这个需要改善的

所以稍微改动一下代码:

# -*- coding:utf-8 -*-print("猜一个幸运数字,游戏开始!")

while True:

guess=int(input("请输入你觉得对的数字:"))

if guess>8:

print("大了")

elif guess<8:

print ("小了")

else:

print("猜对了")

运行结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTYxOTQ1ODQ5LTgwNjkwMDU5MS5wbmc=.jpg

这样就可以在第一次输入值时给出提示,但是你应该发现了,我已经输入了正确答案,程序还是没有退出,还在运行,这个情况要怎么解决呢?此时又需要一点新的知识——break和continue语句

break:用于满足条件时跳出本层循环,且只能跳过一层循环

continue:用于满足条件时跳过本层循环内的某一次循环,如果在本次循环内下面条件满足则运行完再进入下一次循环

上面的代码,我加入break后:

# -*- coding:utf-8 -*-

print("猜一个幸运数字,游戏开始!")

while True:

guess=int(input("请输入你觉得对的数字:"))

if guess>8:

print("大了")

elif guess<8:

print ("小了")

else:

print("猜对了")

break

运行结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTYyNDQ5NTM2LTYyMTQxMDkwNi5wbmc=.jpg

这样的话,就完美的解决一个问题,并且前面那个死循环问题如果使用break也可以避免,但是代码还是有问题的,我只是给下解决了死循环这个问题的效果,所以不给出代码,只是做下演示:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTYyOTUwNDkwLTgwMTYwMzA0Ni5wbmc=.jpg

继续看看break和continue的用法:

代码:

# -*- coding:utf-8 -*-

i=1

while True:

while i!=8:

i+=1 #姑且认为同i=i+1,但其实不等价于,自己可以用id函数查看

if i<5:

continue

print('i的值目前小于5')

if i==5:

print('i的值为%d'%i)

break

print('跳出了内层循环')

break

print('跳出了外层循环')

运行结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTcwMjQwNzI0LTkyNjM1ODM5Ni5wbmc=.jpg

感觉不大明显对吧,break应该很好理解,但是continue还是有点不大懂,对吧?这样,我去掉continue看看效果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTcwNDI5OTExLTk5MzE2OTkwNS5wbmc=.jpg

图解:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTcyOTI3MDk5LTE5NTk1MzA2MS5wbmc=.jpg

只能搞成这个样子了,还不懂的话,自己复制代码拿来运行,多体会

3)练习:用while循环打印斐波那契数列

代码:

# -*- coding:utf-8 -*-

list1=[0,1]

n1=list1[0]

n3=n2=list1[1]

n=int(input('请输入一个你希望打印出多少项斐波那契数列里的数:'))

if n<1:

print("输入有误!")

while (n-2)>0:

n3=n2+n1

n1=n2

n2=n3

n-=1

list1.append(n3)

print('斐波那契数列的前%d项:'%len(list1))

print(list1)

结果:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTc1MzMxNzg2LTIxMTQxNDIzMTcucG5n.jpg

2.for循环

1)说到for循环,就得说说迭代这个词

迭代:指的是按照某种顺序逐个访问列表中的每一项,for语句就是迭代最好的体现和解释

for循环和while循环差不多,不过for来得更简洁

2)格式:

a:

for XX in 表达式:

suite

b:

for XX in 表达式:

suite

else:

suite

3)实例:

L3Byb3h5L2h0dHBzL2ltYWdlczIwMTcuY25ibG9ncy5jb20vYmxvZy8xMjQ5MTgzLzIwMTcxMC8xMjQ5MTgzLTIwMTcxMDAyMTczNzA5NDkwLTk2NzY0NzA3My5wbmc=.jpg

是不是很好的解释了迭代这个词

for和while没什么差别,while能用的for都能用,if条件判断和break,continue语句都可以使用,所以不再练习举例了,不过你可以自己尝试用for循环输出一个斐波那契数列

但是for在有些方面优于while循环:

用for可以迭代的优势

比如用for可以很快的生成一个列表,这种方法叫列表生成器和列表解析,后面的章节会讲解

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢? 整形(int) 长整型(long) 浮点型(float) 字符型(str) 布尔型(bool) 最常见的就这几种. 在 ...

详解Python中的循环语句的用法

一.简介 Python的条件和循环语句,决定了程序的控制流程,体现结构的多样性.须重要理解,if.while.for以及与它们相搭配的 else. elif.break.continue和pass语句 ...

Python学习笔记(二):条件控制语句与循环语句及常用函数的用法

总结的内容: 1.条件控制语句 2.while循环语句 3.for循环语句 4.函数的用法 一.条件控制语句 1.介绍 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决 ...

python实例 条件和循环语句

#! /usr/bin/python #条件和循环语句 x=int(input("Please enter an integer:")) if x<0:     x=0    ...

Python中的循环语句

Python中有while循环和for循环 下面以一个小例子来说明一下用法,用户输入一些数字,输出这些数字中的最大值和最小值 array = [5,4,3,1] for i in array: pri ...

python中的循环语句-01

接触python已经一周时间,下面针对这一周python学习的情况做一梳理: 1)单行注释,使用一个#:多行注释,使用三个单引号(或者三个双引号)如: name = input("name: ...

python之最强王者(3)——变量,条件、循环语句

1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ...

Python系列:三、流程控制循环语句--技术流ken

Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...

python第三章:循环语句--小白博客

Python条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: Python程序语言指定任何非0和非 ...

随机推荐

介绍开源的&period;net通信框架NetworkComms框架 源码分析

原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 售价249英镑 我曾经花了 ...

矩形覆盖-我们可以用2&ast;1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2&ast;1的小矩形无重叠地覆盖一个2&ast;n的大矩形,总共有多少种方法?

class Solution { public: int rectCover(int number) { ; ; ; ||number==) ; ) ; ;i

Java设计模式学习资源汇总

本文记录了Java设计模式学习书籍.教程资源.此分享会持续更新: 1. 设计模式书籍 在豆瓣上搜索了一把,发现设计模式贯穿了人类生活的方方面面.还是回到Java与程序设计来吧. 打算先归类,再浏览,从 ...

网络编程(学习整理)---3--(Udp)FeiQ实现广播消息群发

1.广播群发消息: 这里使用的任然是UDP协议,使用方法还是比较简单的! 我就记录一下需要注意的一些地方(笔记): (1)这里是在局域网内,借用FeiQ聊天软件,编写一段程序,实现对局域网内的每一个登 ...

aspx页面中获取当前浏览器url

/假设当前浏览器地址为:http://www.360.net.cn/Group/Index.aspx?id=123 这其中如下介绍: ①."http://"是协议名 ②.&quot ...

OC教程10-NSNumber具体

NSNumber简单介绍 NSNumber是数字的对象形式,由于在OC的数组和字典中仅仅同意存放对象,所以我们有时候须要转化 我们普通的类型是   123 那么 NSNumber类型的是  @123, ...

MVC源码解析 - 进入CLR

这一篇是转载自汤姆大叔的一篇随笔. IIS 5 的 ASP.net 请求处理过程 IIS5核心特征是:IIS是允许在一个叫InetInfo.exe的进程上的,所以无论是aspx页面还是html页面都是 ...

ios小型服务器环境配置

之前买的一台二手iphone4退役了,上闲鱼上一看,就值200,而且耳机声音也有点轻,估计买不了什么钱 于是网上看看能不能有什么废物利用的法子,看到说做行车记录仪的,有说做git服务器的,感觉挺有兴趣 ...

linux常用命令:cat 命令

cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 1.命令格式: cat [选项] [文件] ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值