python中while如何使用多条件判断呀,求大神解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中while如何使用多条件判断呀,求大神解答相关的知识,希望对你有一定的参考价值。

temp = input("你的成绩是多少呢?来输入他吧: ")
number = int(temp)

while number >100 and number < 0:
temp = input("输入的内容有误重新输入吧: ")
number = int(temp)

if number >90:
print("您的成绩很优秀\n")
elif (number >80 and number <90):
print("您的成绩良好\n")
elif (number <80 and number >60):
print("你的成绩合格\n")
else:
print("fuck!\n")

例如这个简单的例子,运行后程序输入大于100或者小于0的数字,程序会直接忽略while直接运行if语句,之前学的是C现在真的有点懵逼不知道是什么原因求大神解答

额。。。常识性的错误,看起来对“与或非”的用法不太熟悉。

你设定的条件是“number > 100 and number < 0”也就是“大于 100 且小于 0 的数”,这自然一个永远不可能达成的条件。

正确的写法是使用“or”,也就是“number > 100 or number < 0”来表示一个“大于 100 或小于 0 的数”。

参考技术A while and
用and链接条件就可以

Python开发第六篇:Python基础条件和循环

目录

一、if语句

1、功能

2、语法

单分支,单重条件判断

多分支,多重条件判断

if + else

多分支if + elif + else

语句小结 + 案例

三元表达式

二、while语句

1、功能

2、语法

基本语法

计数循环

无限循环

while与break,continue,else连用

while语句小结 + 案例

三、for语句

1、功能

2、语法

基本语法

遍历序列类型

遍历可迭代对象或迭代器

for基于range()实现计数循环

for与break,continue,else

for语句小结 + 案例

四、练习

一、if语句

  1、功能

    计算机又被称作电脑,意思指计算机可以像人脑一样,根据周围环境条件(即expession 表达手法)的变化做出不同的反应(即执行代码)

    if语句就是来控制计算机实现这一功能

  2、语法

    单分支,多重条件判断

if expression:

    expr_true_suite

注释:expession为真执行代码expr_true_suite

     多分支,多重条件判断

if not  active or over_time >= 10:

    print(‘Warning:service is dead‘)

    warn_tag+=1

     if + else

if expression:

    expr_true_suite   

else:

    expr_false_suite

     多分支if + elif + else

if expession1:

    expr1_true_suite

elif expression2:

    expr2_true_suite

elif expession3:

    expr3_true_suite

else:

    none_of_the_above_suite

     if语句小结 + 案例

      1、if后表达式返回值为True执行其子代码块,然后此if语句到此终止,否则进入下一分支判断,直到满足其中一个分支,执行后终止if

      2、expression可以引入运算符:not,and,or,is,is ont

      3、多重expression为加强可读性最好用括号包含

      4、if与else缩进级别一致表示一对

      5、elif与else都是可多选的

      6、一个if判断最多只有一个else但是可以有多个elif

      7、else代表if判断if判断的终结

      8、expession可以是返回值为布尔值的表示式(例如:x > 1,x is not None)的形式,也可以是单个标准对象(例如:x = 1;if x :print(‘ok‘))

      9、所有标准对象均可用布尔值测试,同类型的对象之间可以比较大小。每个对象天生具有布尔 True 或False 值。空对象、值为零的任何数字或者Null对象None的布尔值都是False

      下面对象的布尔值是False

      None、False(布尔类型)、所有的值为零的数、0(整数)、0.0+0.0j(复数)、""(空字符串)、[](空列表)、()(空元组)、{}(空字典)

    案例:

技术分享
#!/usr/bin/env python
#_*_coding:utf-8_*_

‘‘‘
提示输入用户名和密码

验证用户名和密码
     如果错误,则输出用户名或密码错误
     如果成功,则输出 欢迎,XXX!
‘‘‘

import getpass

name=input(用户名: )
passwd=getpass.getpass(密码: )

if name == alex and passwd == 123:
    print(土豪里边请)
else:
    print(土鳖请走开)
用户登陆验证
技术分享
#!/usr/bin/env python
#_*_coding:utf-8_*_

‘‘‘
 根据用户输入内容打印其权限

 alex --> 超级管理员
 eric --> 普通管理员
 tony,rain --> 业务主管
 其他 --> 普通用户
‘‘‘
name = input(请输入用户名:)


if name == "alex":
    print("超级管理员")
elif name == "eric":
    print("普通管理员")
elif name == "tony" or name == "rain":
    print("业务主管")
else:
    print("普通用户")
根据用户输入内存输出权限

    三元表达式:

      语法:expr_true_suite if expession else expr_false_suite

      案例:

>>> active=1
>>> print(‘service is active‘) if active else print(‘service is inactive‘)
service is active

       案例:

>>> x=1
>>> y=2
>>> smaller=x if x < y else y
>>> smaller
1

 二、while语句

  功能

  while循环的本质就是让计算机在满足某一种条件的前提下去重复做同一件事情(即while循环为条件循环,包括:1、条件计数循环,2、条件无限循环)

  这一条件指:条件表达式

  同一件事指:while循环体包含的代码块

  重复的事情例如:从1加到10000,求1-10000内所有的奇数,服务等待链接

  语法

    基本语法

while expression:

    suite_to_repeat

注解:重复执行suite_to_repeat,直到expression不再为真

     循环计数

count=0
while (count < 9):
    print(‘the loop is %s‘ %count)
    count+=1 

     无限循环

count=0
while True:
    print(‘the loop is %s‘ %count)
    count+=1
---------------------------------------
tag=True
count=0
while tag:
    if count == 9:
        tag=False
    print(‘the loop is %s‘ %count)
    count+=1 

     while与break,continue,else连用

技术分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本层循环,即彻底终结这一个/层while循环)
        break
    print(the loop is %s %count)
break跳出本层循环    
技术分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环)
        continue
    print(the loop is %s %count)
continue跳出本次循环
技术分享
count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环)
        continue
    print(the loop is %s %count)
else:
    print(循环不被break打断,即正常结束,就会执行else后代码块)




count=0
while (count < 9):
    count+=1
    if count == 3:
        print(跳出本次循环,即这一次循环continue之后的代码不再执行,进入下一次循环)
        break
    print(the loop is %s %count)
else:
    print(循环被break打断,即非正常结束,就不会执行else后代码块)
else在循环完成后执行,break会跳过else

    while语句小结 + 案例

      1、条件为真就重复执行代码,直到条件不在为真,而if是条件为真,只执行一次代码就结束了

      2、while有计数循环和无限循环两种,无限循环可以用于某一服务的主要程序一直处于等待被链接的状态

      3、break代表跳出本层循环,continue代表跳出本次循环

      4、while循环在没有被break打断的情况下结束,会执行else后代码

    案例:

技术分享
while True:
        handle, indata = wait_for_client_connect()
        outdata = process_request(indata)
        ack_result_to_client(handle, outdata)
服务等待链接
技术分享
import getpass

account_dict={alex:123,eric:456,rain:789}
count = 0
while count < 3:
    name=input(用户名: ).strip()
    passwd=getpass.getpass(密码: )
    if name in account_dict:
        real_pass=account_dict.get(name)
        if passwd == real_pass:
            print(登陆成功)
            break
        else:
            print(密码输入错误)
            count+=1
            continue
    else:
        print(用户不存在)
        count+=1
        continue
else:
    print(尝试次数达到3次,请稍后重试)
用户登陆验证

三、for语句

    功能

      基本语法

for iter_var in iterable:

    suite_to_repeat

注解:每次循环, iter_var 迭代变量被设置为可迭代对象(序列, 迭代器, 或者是其他支持迭代的对 象)的当前元素, 提供给 suite_to_repeat 语句块使用.

     遍历序列类型

name_list=[‘alex‘,‘eric‘,‘rain‘,‘xxx‘]

#通过序列项迭代
for i in name_list:
    print(i)

#通过序列索引迭代
for i in range(len(name_list)):
    print(‘index is %s,name is %s‘ %(i,name_list[i]))

#基于enumerate的项和索引
for i,name in enumerate(name_list,2):
    print(‘index is %s,name is %s‘ %(i,name)) 

     遍历可迭代对象或迭代器

      迭代对象:就是一个具有next()方法的对象,obj.next()每执行一次,返回一行内容所有内容迭代完后

      迭代器引发一个StopIteration异常告诉程序循环结束,for语句在内部调用next()并捕获异常

      for循环遍历迭代器或可迭代对象与遍历序列的方法并无二致,只是在内部做了调用迭代器next(),并捕获异常,终止循环操作

      很多时候你根本无法区分for循环的是序列对象还是迭代器

>>> f=open(‘a.txt‘,‘r‘)

for i in f:
    print(i.strip())
hello
everyone

     for基于range()实现计数循环

     range()语法:

     range(start,end,step=1):过顾头不顾尾

      1、range(10):默认step=1,start=0,生成可迭代对象,包含[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

      2、range(1,10):指定start=1,end=10,默认step=1,生成可迭代对象,包含[1, 2, 3, 4, 5, 6, 7, 8, 9]

      3、range(1,10,2):指定start=1,end=10,step=2,生成可迭代对象,包含[1, 3, 5, 7, 9]  

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> for i in range(10):
    print(i)
0
1
2
3
4
5
6
7
8
9

 注释:for基于range()实现计数循环,range()生成可迭代对象,说明for循环本质还是一种迭代循环

     for与break,continue,else

    与while相同

    for语句小结 + 案例

      1、for循环为迭代循环

      2、可遍历序列成员(字符串、列表、元组)

      3、可遍历任何可迭代对象(字典、文件等)

      4、可以使用在列表解析和生成器表达式中

      5、break,continue,else在for中用法与while中一致

    案例:

albums = (‘Poe‘, ‘Gaudi‘, ‘Freud‘, ‘Poe2‘)
years = (1976, 1987, 1990, 2003)

#sorted:排序
for album in sorted(albums):
    print(album)

#reversed:翻转
for album in reversed(albums):
    print(album)

#enumerate:返回项和
for i in enumerate(albums):
    print(i)
#zip:组合
for i in zip(albums,years):
    print(i)

 四、练习

  链接:http://www.cnblogs.com/Jiayongxu/p/6984904.html

一、元素分类

有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1‘: 大于66的所有值, ‘k2‘: 小于66的所有值}

二、查找
查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素。
    li = ["alec", " aric", "Alex", "Tony", "rain"]
    tu = ("alec", " aric", "Alex", "Tony", "rain") 
    dic = {‘k1‘: "alex", ‘k2‘: ‘ aric‘,  "k3": "Alex", "k4": "Tony"}
 
三、输出商品列表,用户输入序号,显示用户选中的商品
    商品 li = ["手机", "电脑", ‘鼠标垫‘, ‘游艇‘]
 
四、购物车
功能要求:

要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车
goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
]
 五、用户交互,显示省市县三级联动的选择

 

以上是关于python中while如何使用多条件判断呀,求大神解答的主要内容,如果未能解决你的问题,请参考以下文章

python的if和while如何放多个条件判断?

Python语法基础03(if语句,while循环与for循环)

python if 判断 while 循环 for 循环

Python开发第六篇:Python基础条件和循环

Python基础之if判断,while循环,循环嵌套

python语言如何结尾?