精华内容
下载资源
问答
  • While True还是While 1?

    千次阅读 2021-01-14 07:32:22
    我有时在别人身上看到代码是“while1”而不是“whiletrue”。我认为使用True更像Python,但我想看看是否有实践中有什么不同。在所以我试着做下面的事情,结果是令人惊讶的。为了什么?我可以看出解释器可以优化掉1...

    我有时在别人身上看到代码是“while1”而不是“whiletrue”。

    我认为使用True更像Python,但我想看看是否有

    实践中有什么不同。在

    所以我试着做下面的事情,结果是令人惊讶的。为了什么?

    我可以看出解释器可以优化掉1布尔值

    虽然它与真实不符,却与我相反

    想象上的。在

    任何人都可以解释为什么,或者我的结论是错误的?在def f1():

    while 1:

    pass

    def f2():

    while True:

    pass

    In [10]: dis.dis(f)

    2 0 SETUP_LOOP 3 (to 6)

    3 >> 3 JUMP_ABSOLUTE 3

    >> 6 LOAD_CONST 0 (None)

    9 RETURN_VALUE

    In [9]: dis.dis(f1)

    2 0 SETUP_LOOP 10 (to 13)

    >> 3 LOAD_GLOBAL 0 (True)

    6 POP_JUMP_IF_FALSE 12

    3 9 JUMP_ABSOLUTE 3

    >> 12 POP_BLOCK

    >> 13 LOAD_CONST 0 (None)

    16 RETURN_VALUE

    展开全文
  • python学习-while True的用法

    千次阅读 2020-12-28 23:49:20
    在学习过程中,经常能遇到采用while True的用法。下面以一个例子进行说明:建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统。1、我自己最开始的写法:d = {} #数据库字典,所有用户的用户名...

    在学习过程中,经常能遇到采用while True的用法。下面以一个例子进行说明:

    建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统。

    1、我自己最开始的写法:

    d = {} #数据库字典,所有用户的用户名密码存储在此

    name = input("请输入您的用户名:")

    if name in d:

    password = input("请输入您的密码")

    if d[name] == password:

    print('进入系统')

    else:

    print('您输入的密码错误,请重新输入')

    else:

    print('您输入的用户名不正确,请重新输入')

    这个自己写的程序逻辑上貌似是对的:

    ——先让用户输入用户名,如果存在该用户名,就继续让用户输入密码,如果密码正确就进入系统。如果密码不正确就重新输入。

    ——如果不存在该用户名,提示“您输入的用户名不正确,请重新输入”

    但是在实际运行过程中,如果用户输入的用户名和密码都正确,那自然是没有问题的。但是如果有一个输入不正确,那系统只会显示“您输入的用户名不正确,请重新输入”或“您输入的密码错误,请重新输入”。也就是说,如果出现错误,没有返回到原来的地方,请求继续输入。

    2、采用while True循环语句:

    采用该语句的核心思想是如果出现错误的话,可以继续循环。

    d = {}

    while Ture:

    name = input('请输入您的用户名:')

    if name in d:

    break

    else:

    print('您输入的用户名不存在,请重新输入')

    continue

    while True:

    password = input('请输入您的密码:')

    if d[name] == password:

    print('进入系统')

    break

    else:

    print('您输入的密码不正确,请重新输入')

    continue

    以上程序就可以达到所需目的:在输入用户名或密码错误的情况下返回到开始部分,请求继续输入。

    while True 语句中一定要有结束该循环的break语句,否则会一直循环下去的。

    当然,我们遇见过如果密码错误的话,提示您还有几次输入密码的机会。可以这样实现:

    count = 5

    while count:

    password = input('请输入您的密码:')

    if d[name] == password:

    print('进入系统')

    break

    else:

    count -= 1

    print('您输入的密码不正确,还有{}次输入机会'.format(count))

    continue

    ---------------------

    作者:geerniya

    来源:CSDN

    原文:https://blog.csdn.net/geerniya/article/details/77524173

    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 解析Python中while true的使用

    千次阅读 2021-02-03 01:42:41
    无限循环如果条件判断.../usr/bin/python# -*- coding: UTF-8 -*-var = 1while var == 1 : # 该条件永远为true,循环将无限执行下去num = raw_input("Enter a number :")print "You entered: ", numprint "Good bye...

    无限循环

    如果条件判断语句永远为 true,循环将会无限的执行下去,如下实例:

    #!/usr/bin/python

    # -*- coding: UTF-8 -*-

    var = 1

    while var == 1 : # 该条件永远为true,循环将无限执行下去

    num = raw_input("Enter a number :")

    print "You entered: ", num

    print "Good bye!"

    以上实例输出结果:

    Enter a number :20

    You entered: 20

    Enter a number :29

    You entered: 29

    Enter a number :3

    You entered: 3

    Enter a number between :Traceback (most recent call last):

    File "test.py", line 5, in

    num = raw_input("Enter a number :")

    KeyboardInterrupt

    注意:以上的无限循环你可以使用 CTRL+C 来中断循环。

    python while 1 vs while True

    Python 3.0之前,他们的执行是不同的:

    while 1,python会进行优化,每次循环是不会去检查1的条件,因此性能会好

    而while True,在python 3k前,True不是保留字,用户可以True=0,所以,每次还要比较True的值

    Python 3.0之后,True/False都变成了保留字,

    >>> True = 10

    会报错

    因此,python 3后,while 1和while True效果一样,都会被解释器优化

    展开全文
  • 1、前言前些天被Python的多线程坑了一把,本篇讲的内容是Python的bool类型。2、前提2.1 bool是int的子类根据PEP285中Review...2.2 Python2中True/False不是关键字,但Python3中是我们可以导入keyword模块,来查看...

    1、前言

    前些天被Python的多线程坑了一把,本篇讲的内容是Python的bool类型。

    2、前提

    2.1 bool是int的子类

    根据PEP285中Review部分第6条所述,bool类是从int类继承而来的,这样可以极大的简化实现(C代码中调用PyInt_Check的地方仍将继续工作)。

    2.2 Python2中True/False不是关键字,但Python3中是

    我们可以导入keyword模块,来查看关键字:

    150098280_1_20181220072043903

    而在Python3中,关键字中添加了True/False/None。

    由于Python2中True/False不是关键字,因此我们可以对其进行任意的赋值:

    3. True + True = 2

    由于bool是继承自int的子类,因此为了保证向下兼容性,在进行算术运算中,True/False会被当作int值来执行。

    150098280_2_2018122007204460

    4. While 1比While True快?

    首先来看一个比较while 1和while True循环的脚本,两个函数中,除了1和True的区别之外,其他地方完全相同。

    150098280_3_20181220072044107

    执行结果:

    while one: 1.37000703812

    while_true: 2.07638716698

    可以看出wihle 1的执行时间约为while True的2/3。

    那么,这是为什么呢?

    其实这就是前提中提到的关键字的问题。由于Python2中,True/False不是关键字,因此我们可以对其进行任意的赋值,这就导致程序在每次循环时都需要对True/False的值进行检查;而对于1,则被程序进行了优化,而后不会再进行检查。

    我们可以通过dis模块来查看while_one和while_true的字节码,下面的程序是对刚才的程序进行了一定的简化后的版本。

    150098280_4_20181220072044278

    执行的结果是:

    150098280_5_20181220072044325

    可以看出,正如上面所讲到的,在while True的时候,字节码中多出了几行语句,正是这几行语句进行了True值的检查。

    而在Python3中,由于True/False已经是关键字了,不允许进行重新赋值,因此,其执行结果与while 1不再有区别(好吧,我这没有Python3的环境,就不去验证了,网上有人验证过了)。但是由于Python2的使用十分广泛,因此大家不得不注意这个可能会降低性能的地方。

    5. if x == True: 还是 if x:

    在PEP285中,还提到了这两种写法的比较。PEP285中认为,==具有传递性,a==b, b==c会被化简为a==c。也就是说,如果选择前一种写法的话,6和7在if语句中都应该被认为是真值,那么就会造成6==True==7,被化简为6==7的问题,因此后一种写法才是正确的。

    现在,让我们偏个题,假设x就是True,那么程序的执行效率又如何呢?

    150098280_6_20181220072044388

    执行结果是:

    if_x_eq_true: 0.212558031082

    if_x: 0.144327878952

    让我们再来看看字节码(程序未作修改,dis的使用方式同上,因此不再给出程序):

    150098280_7_20181220072044685

    可以清晰的看到第9行比第14行,多出了检查True值和进行比较的操作。

    也就是说,不论从遵循PEP的规范,还是执行效率,或者程序的简洁性来说,我们都应该使用if x:,而不是if x == True:来进行比较。同理,那些if x is not None:之类的语句也应当被简化为if x:(如果要比较的是非值,而不必须是None的话)。

    150098280_8_20181220072045325

    展开全文
  • python中while True用法

    2021-07-17 20:27:48
    while True是一种循环语句,核心思想是如果出现错误,可以继续循环 列: d = {"awei1": "passwd1", "awei2": "passwd2"} while True: name = input('请输入您的用户名:') if name in d: break else: print('...
  • 记得以前的windows 任务定时是可以的正常使用的,今天试了下,发现不能正常使用...首先最容易的是while true死循环挂起,上代码import osimport timeimport sysfrom datetime import datetime, timedeltadef One_Pl...
  • 想问一下就是while(true)发挥了什么作用。class Rnd_36_7{public static void main(String[] args){int a[] = new int[7];for( int i=0;i{one_num:while(true){a[i] = (int)( Math.random()*36 ) +1;...
  • ### 问题描述while(true)协程不会立即退出### Swoole版本,PHP版本,以及操作系统版本信息PHP 7.4.7 (cli) (built: Jun 12 2020 00:04:10) ( NTS )swooleSwoole => enabledAuthor => Swoole Team Version =>...
  • return def doorsensor(): while True: if gpio.input(door): time.sleep(3) for i in range(0,5): blink(led) for i in range (0,5): blink(buzzer) else: gpio.output(buzzer, False) def cardreader(): while ...
  • 在学习过程中,我们经常遇到的使用而真实。下面是一个例子来说明:设置用户登录系统时,用户输入用户名和密码,如果他们是正确的,他们可以进入系统。1. 我第一次措辞:d ={} #数据库字典,所有用户的用户名和密码存储在...
  • while true 死循环

    2021-01-06 15:54:50
    while true ; do cat 1.txt ;sleep 10 ; done 为真 ------------执行后面的命令 ------ 间隔10秒
  • python中while True的用处

    千次阅读 2021-11-18 21:41:28
    python中while的用处1.打印成绩并求平均数3.总结 1.打印成绩并求平均数 为了减轻老师们的负担,我们今天就用Python来打印学生成绩。这里我们以十个学生举例,首先先写代码: sum = 0 for i in range(10): score = ...
  • run()方法中基本都会写while(true)的循环,如下:public class XXXThread implements Runnable {public void run(){while(true) {……}}}使用while(true)的作用:run方法中的代码就是线程要运行的代...
  • while循环的使用 结构 初始化条件; while(循环条件){ 循环体; 迭代条件; } 说明 1.写while循环千万小心丢了迭代条件,一旦丢了,就可能导致死循环。 2.我们写程序,要避免出现死循环。 3.for循环和while循环...
  • while(true)//这里,不加这句话的话,打印结果是 加了就是正常的多窗口买票了,我刚学多线程.求教 //Thread[2号窗口,5,main]------------100 //Thread[3号窗口,5,main]------------98 //Thread[1号窗口,5,main]-------...
  • while (curr.next.data != null) { curr = curr.next; } newNode.next = curr.next; curr.next = newNode; } } 错误: Exception in thread "main" java.lang.NullPointerException at LinkedLists....
  • 做各种SERVICE的时候,常常会需要一个程序重复定时地执行,基本上常见的山寨写法都是如下所示:while (true) {System.out.println("yours code");Thread.sleep(3000);}但实际这样的写法可控性很低,JDK的java.util....
  • 我是Java编程的新手。 目前我正在研究一个名为Evercam的Android应用程序的源代码...这是代码的片段:while (true){while (true){byte[] responseMessageByteArray = new byte[4000];DatagramPacket datagramPacketR...
  • 我不会说这是坏的 – 但同样,我通常至少寻找一个选择。在这是我写的第一件事情,我几乎总是至少试图重构它...作为使用break比flag更清楚的例子,请考虑:while (true){doStuffNeededAtStartOfLoop();int input = ge...
  • 本来想给你贴一段代码 但是追答的时候 字数有... while (true) { String line = br.readLine(); pw.println("response:" + line); if (line.equals("X")) { break; } } } catch (Exception e) {...} } }
  • } } 代码的逻辑很简单:客户端和服务器都在等待while(true)循环内的消息. 服务器的listen方法中的while循环执行得很好.但是,在listenForMessages方法中,循环似乎只执行一次.我只在屏幕上看到一个“In loop”. 你能...
  • java while (true) 死循环

    千次阅读 2021-02-12 19:31:24
    因此while(true)是一个无限循环,因为表达式的值一直为真。为了跳出循环,循环体内部要用break语句来跳出。例如,可以在循环体内部用if来判断,if(x==5)break;用exit也可以跳出,此时表示了函数直接返回​1、在java...
  • 用代码解释如下: while(true){ //your code } 改进之后: while(true){ Sleep(1); //your code }其实就是添加了一句“Sleep(1)”,但是CPU占用率就直接从100%跌到了1%左右。 Sleep()是Windows API线程调度相关的...
  • Python2 while 1 比 while True 快 Python3 因为True被作为关键字,所以一样快 分析: 由于Python2中 True 不作为关键字,作为全局变量存在,需要一步加载到堆栈的操作LOAD_GLOBAL 经过在同等条件下不严格测试,10...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,402,515
精华内容 961,006
关键字:

truewhile