跟老齐学Python之用while来循环
在python中,它也有这个含义,不过有点区别的是,“当...时候”这个条件成立在一段范围或者时间间隔内,从而在这段时间间隔内让python做好多事情。就好比这样一段情景:
while 年龄大于60岁:-------->当年龄大于60岁的时候
退休 -------->凡是符合上述条件就执行的动作
展开想象,如果制作一道门,这道门就是用上述的条件调控开关的,假设有很多人经过这个们,报上年龄,只要年龄大于60,就退休(门打开,人可以出去),一个接一个地这样循环下去,突然有一个人年龄是50,那么这个循环在他这里就停止,也就是这时候他不满足条件了。
这就是while循环。写一个严肃点的流程,可以看下图:
再做猜数字游戏
本教程有一讲,是跟看官一同做一个小游戏,在里面做了一个猜数的游戏,当时遇到了一个问题,就是只能猜一两次,如果猜不到,程序就不能继续运行了。
前不久,有一个在校的大学生朋友(他叫李航),给我发邮件,让我看了他做的游戏,能够实现多次猜数,直到猜中为止。这是一个多么喜欢学习的大学生呀。
我在这里将他写的程序恭录于此,单元李航同学不要见怪,如果李航同学认为此举侵犯了自己的知识产权,可以告知我,我马上撤下此代码。
#! /usr/bin/env python
#coding:UTF-8
import random
i=0
while i
print'********************************'
num = input('请您输入0到9任一个数:') #李同学用的是python3
xnum = random.randint(0,9)
x = 3 - i
if num == xnum:
print'运气真好,您猜对了!'
break
elif num > xnum:
print'''您猜大了!\n哈哈,正确答案是:%s\n您还有%s次机会!''' %(xnum,x)
elif num
print'''您猜小了!\n哈哈,正确答案是:%s\n您还有%s次机会!''' %(xnum,x)
print'********************************'
i += 1
我们就用这段程序来分析一下,首先看while i
当bool(i
根据上述代码,看官看看是否可以修改?
为了让用户的体验更爽,不妨把输入的整数范围扩大,在1到100之间吧。
num_input = raw_input("please input one integer that is in 1 to 100:") #我用的是python2.7,在输入指令上区别于李同学
程序用num_input变量接收了输入的内容。但是,请列位看官一定要注意,看到这里想睡觉的要打起精神了,我要分享一个多年编程经验,请牢记:任何用户输入的内容都是不可靠的。这句话含义深刻,但是,这里不做过多的解释,需要各位在随后的编程生涯中体验了。为此,我们要检验用户输入的是否符合我们的要求,我们要求用户输入的是1到100之间的整数,那么就要做如下检验:
输入的是否是整数
如果是整数,是否在1到100之间。
为此,要做:
if not num_input.isdigit(): #str.isdigit()是用来判断字符串是否纯粹由数字组成
print "Please input interger."
elif int(num_input)=100:
print "The number should be in 1 to 100."
else:
pass #这里用pass,意思是暂时省略,如果满足了前面提出的要求,就该执行此处语句
再看看李航同学的程序,在循环体内产生一个随机的数字,这样用户每次输入,面对的都是一个新的随机数字。这样的猜数字游戏难度太大了。我希望是程序产生一个数字,直到猜中,都是这个数字。所以,要把产生随机数字这个指令移动到循环之前。
import random
number = random.randint(1,100)
while True: #不限制用户的次数了
...
观察李同学的程序,还有一点需要向列位显明的,那就是在条件表达式中,两边最好是同种类型数据,上面的程序中有:num>xnum样式的条件表达式,而一边是程序生成的int类型数据,一边是通过输入函数得到的str类型数据。在某些情况下可以运行,为什么?看官能理解吗?都是数字的时候,是可以的。但是,这样不好。
那么,按照这种思路,把这个猜数字程序重写一下:
#!/usr/bin/env python
#coding:utf-8
import random
number = random.randint(1,100)
guess = 0
while True:
num_input = raw_input("please input one integer that is in 1 to 100:")
guess +=1
if not num_input.isdigit():
print "Please input interger."
elif int(num_input)=100:
print "The number should be in 1 to 100."
else:
if number==int(num_input):
print "OK, you are good.It is only %d, then you successed."%guess
break
elif number>int(num_input):
print "your number is more less."
elif number
else:
print "There is something bad, I will not work"
以上供参考,看官还可改进。
break和continue
break,在上面的例子中已经出现了,其含义就是要在这个地方中断循环,跳出循环体。下面这个简要的例子更明显:
#!/usr/bin/env python
#coding:utf-8
a = 8
while a:
if a%2==0:
break
else:
print "%d is odd number"%a
a = 0
print "%d is even number"%a
a=8的时候,执行循环体中的break,跳出玄幻,执行最后的打印语句,得到结果:
8 is even number
如果a=9,则要执行else里面的的print,然后a=0,循环就在执行一次,又break了,得到结果:
9 is odd number
0 is even number
而continue则是要从当前位置(即continue所在的位置)跳到循环体的最后一行的后面(不执行最后一行),对一个循环体来讲,就如同首尾衔接一样,最后一行的后面是哪里呢?当然是开始了。
#!/usr/bin/env python
#coding:utf-8
a = 9
while a:
if a%2==0:
a -=1
continue #如果是偶数,就返回循环的开始
else:
print "%d is odd number"%a #如果是奇数,就打印出来
a -=1
其实,对于这两东西,我个人在编程中很少用到。我有一个固执的观念,尽量将条件在循环之前做足,不要在循环中跳来跳去,不仅可读性下降,有时候自己也糊涂了。
while...else
这两个的配合有点类似if ... else,只需要一个例子列为就理解了,当然,一遇到else了,就意味着已经不在while循环内了。
#!/usr/bin/env python
count = 0
while count
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
执行结果:
0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어에서는 루프에 전달된 조건에 따라 작동하는 루프를 정의하는 데 'while' 키워드가 사용된다는 것을 알고 있습니다. 이제 조건은 true 또는 false 두 가지 값을 가질 수 있으므로 조건이 true이면 while 블록 내부의 코드가 반복적으로 실행되고 조건이 false이면 실행되지 않습니다. 이제 while 루프에 매개변수를 전달함으로써 while(1)과 while(0)을 구별할 수 있습니다. 왜냐하면 while(1)은 조건이 항상 참으로 간주되어 블록 내부의 코드가 반복적으로 실행되기 시작하는 루프이기 때문입니다. 또한 조건을 참으로 만드는 루프에 전달되는 것은 1이 아니지만 while 루프에 0이 아닌 정수가 전달되면 참 조건으로 간주됩니다.

람다 표현식은 루프에서 벗어나기 때문에 특정 코드 예제가 필요합니다. 프로그래밍에서 루프 구조는 자주 사용되는 중요한 구문입니다. 그러나 특정 상황에서는 현재 루프 반복을 종료하는 대신 루프 본문 내에서 특정 조건이 충족될 때 전체 루프를 중단하고 싶을 수도 있습니다. 이때 람다 표현식의 특징은 루프에서 벗어나는 목표를 달성하는 데 도움이 될 수 있습니다. 람다 표현식은 내부적으로 간단한 함수 논리를 정의할 수 있는 익명 함수를 선언하는 방법입니다. 일반적인 함수 선언과는 다릅니다.

참고: 이 기사에서는 Go 언어의 관점에서 루프와 재귀를 비교합니다. 프로그램을 작성할 때 일련의 데이터나 작업을 반복적으로 처리해야 하는 상황에 자주 직면하게 됩니다. 이를 달성하려면 루프나 재귀를 사용해야 합니다. 루프와 재귀는 모두 일반적으로 사용되는 처리 방법이지만 실제 응용에서는 각각 장단점이 있으므로 어떤 방법을 사용할지 선택할 때 실제 상황을 고려해야 합니다. 이 기사에서는 Go 언어의 루프와 재귀에 대한 비교 연구를 수행합니다. 1. 루프 루프는 특정 코드 부분을 반복적으로 실행하는 메커니즘입니다. Go 언어에는 세 가지 주요 유형이 있습니다.

이 기사에서는 PHP가 배열의 모든 값을 반환하여 배열을 형성하는 방법을 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. . array_values() 함수 사용하기 array_values() 함수는 배열에 있는 모든 값의 배열을 반환합니다. 원래 배열의 키는 유지되지 않습니다. $array=["foo"=>"bar","baz"=>"qux"];$values=array_values($array);//$values는 ["bar","qux"]를 사용하여 루프는 루프를 사용하여 배열의 모든 값을 수동으로 가져오고 새 값에 추가할 수 있습니다.

Iterator 인터페이스 Iterator 인터페이스는 컬렉션을 순회하는 데 사용되는 인터페이스입니다. hasNext(), next() 및 Remove()를 포함한 여러 메소드를 제공합니다. hasNext() 메서드는 컬렉션에 다음 요소가 있는지 여부를 나타내는 부울 값을 반환합니다. next() 메서드는 컬렉션의 다음 요소를 반환하고 컬렉션에서 제거합니다. Remove() 메서드는 컬렉션에서 현재 요소를 제거합니다. 다음 코드 예제에서는 Iterator 인터페이스를 사용하여 컬렉션을 반복하는 방법을 보여줍니다. Listnames=Arrays.asList("John","Mary","Bob");Iterator

Java 함수의 재귀 호출을 반복으로 대체 Java에서 재귀는 다양한 문제를 해결하는 데 사용되는 강력한 도구입니다. 그러나 어떤 경우에는 반복을 사용하는 것이 더 효율적이고 스택 오버플로가 발생할 가능성이 적기 때문에 더 나은 옵션일 수 있습니다. 반복의 장점은 다음과 같습니다. 각 재귀 호출에 대해 새 스택 프레임을 생성할 필요가 없으므로 더 효율적입니다. 스택 공간 사용량이 제한되어 있기 때문에 스택 오버플로가 발생할 가능성이 적습니다. 재귀 호출의 대안인 반복 메소드: Java에는 재귀 함수를 반복 함수로 변환하는 여러 메소드가 있습니다. 1. 스택 사용 스택을 사용하는 것은 재귀 함수를 반복 함수로 변환하는 가장 쉬운 방법입니다. 스택은 함수 호출 스택과 유사한 LIFO(후입선출) 데이터 구조입니다. 공공 인파

모든 프로그래밍 언어는 루프와 분리될 수 없습니다. 따라서 기본적으로 반복 작업이 있을 때마다 루프 실행을 시작합니다. 그러나 많은 수의 반복(수백만/수십억 행)을 처리할 때 루프를 사용하는 것은 범죄입니다. 몇 시간 동안 정체되어 있다가 나중에 그것이 작동하지 않는다는 것을 깨닫게 될 수도 있습니다. Python에서 벡터화를 구현하는 것이 매우 중요합니다. 벡터화란 무엇입니까? 벡터화는 데이터 세트에 대한 (NumPy) 배열 작업을 구현하는 기술입니다. 뒤에서는 한 번에 한 행씩 작업하는 "for" 루프와는 달리 배열이나 계열의 모든 요소에 작업을 한 번에 적용합니다. 다음으로 몇 가지 사용 사례를 사용하여 벡터화가 무엇인지 보여줍니다. 숫자의 합을 구하세요##루프를 사용하세요 importtimestart

PHP 루프 중첩 오류를 처리하고 해당 오류 메시지를 생성하는 방법 개발 중에 배열 탐색 및 데이터베이스 쿼리 결과 처리와 같은 반복 작업을 처리하기 위해 루프 문을 사용하는 경우가 많습니다. 그러나 루프 중첩을 사용할 때 무한 루프 또는 너무 많은 중첩 수준과 같은 오류가 발생할 수 있습니다. 이 문제로 인해 서버 성능이 저하되거나 심지어 충돌할 수도 있습니다. 이러한 오류를 더 잘 처리하고 해당 오류 메시지를 생성하기 위해 이 문서에서는 몇 가지 일반적인 처리 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 카운터를 사용하여
