鱼C论坛

 找回密码
 立即注册
查看: 949|回复: 5

[已解决]python求助

[复制链接]
发表于 2020-4-10 05:36:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我一共有三个问题,
问题1:while的用法不应该是         while +条件:
吗,,,然而,我却看到小甲鱼还有其他人这样 while true    ,或者   while count。
在这之前他给count赋了值,但是true没有赋值

我懵了,true和count是条件吗,顶多也就是一个值把,,条件不应该是像这样a>3,或者b!=3  之类的吗
我对小甲鱼他们的理解是:本应这样while a>3  然而小甲鱼这样while a


问题2:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7and 8 and 9
答案竟然是4.逻辑操作符不应该返回布尔类型的值吗,求运算过程



问题3:x,y,z, = 1,2,3
这是什么意思?
最佳答案
2020-4-10 07:55:39
问题一: while 后面跟的是以个布尔值,条件返回的就是一个布尔值,True 在 Python 中就是一个关键字,表示真,跟他相对应的是 False ,表示的是假。所以, while 后面写的是 True ,
             像这样的条件一直为 True ,这个就是一个死循环。
             在 Python 中只要不是 0 、 None 以及其他的空集合,都会认为是真,否则都是假。所以 while 后面写这 count ,因为 count 是一个变量。
            
问题二:如果逻辑运算两边如果不是布尔值,那返回的就不是一个布尔值了,并且逻辑运算是按照短路逻辑运算的,or 运算只要一个为真,就不会在往后在继续判断了。
             and 运算只要有一个 为假,就不会再继续判断了。
             not or and 是有优先级的,not 先算,再算 and ,最后算 or 。
             所以运行结果是:not 1 为 False ,0 and 1 ,返回  0 ,3 and 4 为 4 因为是短路逻辑, 5 and 6 是 6, 7 and 8 是 8 .
             8 and 9 是 9 , 最后看 or 运算, False and 0 是 0, 0 or 4 是 4 ,4 就是真 所以返回的是 4 。

问题三:这行代码就是下面一行代码的简便形式:
         
x=1
y=2
z=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-10 06:18:31 From FishC Mobile | 显示全部楼层
本帖最后由 wp231957 于 2020-4-10 06:55 编辑

while 后面跟真值  进入循环
while  后面跟假值   不进循环
真值.:true   所有自然数
假值:false   0   当然还有很多,自己搜一下

第二个百度一下  逻辑短路

第三个猜都能猜到,分别赋值,即把三个语句捏成一个语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 07:04:44 | 显示全部楼层
1、True和False是python自带的布尔值,False、None、""、0、()、[]、{}都会被解释器解释为假,其他值都会被解释为真;
2、python中的and和or运算是短路逻辑运算,以and为例,x and y,若x为假,则返回x,否则返回y,or同理。
3、x,y,z, = 1,2,3是序列解包操作,等价于
x=1
y=2
z=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 07:42:47 | 显示全部楼层
1,while后面可以跟真值,
True是一个关键字,你在Python里面输入True的时候,是不是变成橙色了?
2,并不是while a > 3,是while a != 0。(因为0是假值,非0的就是真值,你while 5和while True效果一样的。)
3,并不是,是因为你之前输入的是布尔值。
这样也是可以的:
>>> "a " and "b"
'b'
>>> "a" or "b"
'a'
你把它分开来看就好。
3,就是一个解包,
相当于:
x = 1
y = 2
b = 3
缩成一行。
还有:
>>> list1 = [1,2,3,4,5]
>>> first, *middle, end = list1
>>> first
1
>>> middle
[2, 3, 4]
>>> end
5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 07:55:39 | 显示全部楼层    本楼为最佳答案   
问题一: while 后面跟的是以个布尔值,条件返回的就是一个布尔值,True 在 Python 中就是一个关键字,表示真,跟他相对应的是 False ,表示的是假。所以, while 后面写的是 True ,
             像这样的条件一直为 True ,这个就是一个死循环。
             在 Python 中只要不是 0 、 None 以及其他的空集合,都会认为是真,否则都是假。所以 while 后面写这 count ,因为 count 是一个变量。
            
问题二:如果逻辑运算两边如果不是布尔值,那返回的就不是一个布尔值了,并且逻辑运算是按照短路逻辑运算的,or 运算只要一个为真,就不会在往后在继续判断了。
             and 运算只要有一个 为假,就不会再继续判断了。
             not or and 是有优先级的,not 先算,再算 and ,最后算 or 。
             所以运行结果是:not 1 为 False ,0 and 1 ,返回  0 ,3 and 4 为 4 因为是短路逻辑, 5 and 6 是 6, 7 and 8 是 8 .
             8 and 9 是 9 , 最后看 or 运算, False and 0 是 0, 0 or 4 是 4 ,4 就是真 所以返回的是 4 。

问题三:这行代码就是下面一行代码的简便形式:
         
x=1
y=2
z=3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 07:59:03 | 显示全部楼层
1. while 后面可以跟任意类型的值,只要值为真就继续循环。

2. 可以不返回布尔类型的值。
    not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
  == False or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
  == False or 0 or 4 or 6 or 9
  == 4
3. 同时执行 x = 1,y = 2,z = 3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表