Python判断和循环

布啦豆 8495

判断关键字 if

先上一段示例代码

if '屁股' in '求一个游戏名,叫守什么屁股':
    print('守望先锋')

一个简单的 if 语句,意思是 如果 '屁股' 在 '求一个游戏名,叫守什么屁股' 这句话里面,那么打印'守望先锋'。很明显 if 判断成立,'守望先锋'会被打印出来

当然,if 语句还可以复杂一点

if '屁股' in '请问LOL游戏的全称是什么?':
    print('守望先锋')
else:
    print("LOL就是全称,简称英雄联盟")

else里面,就是放在前面判断失败的情况,也就是'请问LOL游戏的全称是什么?'这句话里面没有'屁股'二字。打印结果是"LOL就是全称,简称英雄联盟"

if ... else ...在很多编程语言里面就是这么使用,不过这里是Python,当然可以更高级,下面再来一个例子:

if 2 > 2:
    print('if 判断成立')
elif 2 < 2:
    print('elif 判断成立')
else:
    print("前面两个判断都不成立,所以我是else输出")

演示代码的结构是 if ... elif ... else,中间的elif其实就是 else if,在别的语言中也有else if的语法,只是Python中写作elif而已

所以写到这里突然感觉自己打了自己脸,略尴尬,但是这里也不修正了,一个小梗应该会让学习者将这个知识点记得更牢固

上面一个示例代码的结果是:前面两个判断都不成立,所以我是else输出

另外这里补充几个小知识点:

  • 单引号、双引号括起来的数据类型都是字符串
  • in也是Python的关键字,判断字符串时候包含某子串,可以写作if '子串' in '字符串'
  • 在语法中,数字就是数字,比大小可以用大于小于等于符号,大于号>,小于号<,等于号=
  • print()是Python语法的输出函数,是Python3,请忽略Python2的脚本print

循环关键字 for

涉及对数据做批量的操作,而且操作是基本一致,那用for循环就很好玩了在,这里以示例来说明个情况

设定一个题目,提取100以内的所有奇数,如果你全部写出来就挺多的,我们用代码写吧

  • 第一步:获取0到100的全部数
for i in range(0,101):
    print(i)

简单说明,range也是Python的内置函数,括号内第一个参数写0【包括0】,第二个写大于0的数【不包括这个数】,默认递增是1,这样就得到了0至100的所有数。for循环只是从里面读然后print打印出来。【第一个for循环例子,吸收消化一下】

  • 第二步:判断数字是否为奇数,如果是打印,不是跳过 判断奇、偶数是非常简单的,小学数学知识,而且前面章节也写了Python的四则运算,这里就上代码然后解析下
for i in range(0,101):
    if (i % 2) != 0:
        print(i)

前面讲了 if 判断,这里就直接用上了。 另外,%是取余数,偶数除以2的余数是0,奇数除以2的余数是1。 如果当前数除以2的余数,不是0,那余数就是1,所以就是我们要的奇数,打印它就对了。如果是偶数,除以2是0,if判断不成立,跳过输出语句

刚刚是用for循环做的一个对数字的操作,下面结合 if 和 for 做个无聊的小游戏,但是学习过程还是可以很好的吸收知识点

输入账户密码,一旦输入5次,可能就要验证手机好了,像涉及金融方面的更严重,3次就冻结,就像ATM取款机

这里的小游戏呢,做一个猜数字的游戏,只能猜3次,猜不到就骂你是傻逼1k次

小游戏脚本的材料准备:

  • 生产随机数的函数,一个
  • 接收输入的数字,若干
  • if 判断语句,若干
  • for循环语句,若干
  • 你是傻逼,1000句

开始动工写小游戏前,先将各组件都测试一下

  • 随机数函数
import random 
# random不能直接使用,需要导入
guess_num = random.randint(1,10)
#randint是随机函数,1到10之间随便取出一个整数
print(guess_num)
#打印刚刚生成的随机数
#这里解释注释,#开始的是注释,#后面的代码是不会执行的,一行
  • 输入函数,接收用户输入的值
number = int(input('please input you guess number: '))
#input()是输入函数,括号内是提示语句。
#int()是类型转化,一开始输入的是字符串,然后通过int()转换成数字
print(number, type(number))
#打印检测输入结果和类型,type()内置函数,查看变量类型,肯定是整型

结果图:输入测试终端截图

if判断语法和for循环语法就不准备了,直接上手写脚本

  • 脚本启动之后,先生成随机数,赋值给一个变量
import random
answer = random.randint(1,10)
  • 用户只有三次机会,用 for 来判断控制,设置range(1,4),这样就做到了3次机会
import random
answer = random.randint(1,10)
for i in range(1,4):
    guess = int(input('please input you guess number: '))
  • 三次循环和猜数字都做好了,然后就是对比输入的数字和答案时候相等,不相等的时候,输入提示是猜大了还是猜小了。继续写脚本
import random
answer = random.randint(1,10)
for i in range(1,4):
    guess = int(input('please input you guess number: '))
    if guess == answer:
        print('猜对了')
    elif guess < answer:
        print('猜小了')
    else:
        print('猜大了')

如果大于答案,打印猜大了;如果小于答案,打印猜小了;等于答案则是猜对了

  • 最后就是接上,三次都猜错之后,打印1000遍你是傻逼。第三次猜错,也就是 i 等于3的时候,并且也猜错,所以这里的接入逻辑是在 if 判断的等于判断后面。稍微修改下逻辑
import random
answer = random.randint(1,10)
for i in range(1,4):
    guess = int(input('please input you guess number: '))
    if guess == answer:
        print('猜对了')
    elif i == 3:
        print('你失败了','你是傻逼'*1000)
    elif guess < answer:
        print('猜小了')
    else:
        print('猜大了')
  • 就游戏而言,到这里就可以结束了,但是我们还需要补上一些可能会出现问题的情况,例如第一次就猜对了,但是后面还会执行两次;再者,猜对给个鼓励机制--一遍猜中,"好厉害"30遍;第二次猜对,"好厉害"15遍;第三次猜对,"好厉害"10遍。所以脚本还是会有bug的。再次修改代码
import random
answer = random.randint(1,10)
for i in range(1,4):
    guess = int(input('please input you guess number: '))
    if guess == answer:
        print('猜对了', "好厉害 "*(30//i))
        break
    elif i == 3:
        print('你失败了','你是傻逼 '*1000)
    elif guess < answer:
        print('猜小了')
    else:
        print('猜大了')

脚本到这里就写完了,如果要测试的话,可以在猜之前就将随机数打印出来,方便测试第一次、第二次、第三次猜中

补充知识点

  • print()里面,"字符串"*30是打印30遍字符串的意思
  • print()里面,用逗号隔开的两个变量,打印时中间会有一个空格【30遍的字符串之间不会有】
  • print()里面,"字符串"*30后面的30,可以用数学式子计算,但是要是整型,/ 符号的结果会得到浮点型;// 符号的结果才是整型;%符号是取余操作

版权声明:允许转载,转载请注明出处 —— 《Python3教程》: Python判断和循环

Copyright @2016-2017 | 赣ICP备16003025号