有没有办法在Python(3)中为循环使用条件语句?
主要使用Java编写代码,并想知道Python是否可以在其for循环(如Java和C)中使用条件和不同类型的递增。如果这是一个简单的问题,我很抱歉 i、 e:有没有办法在Python(3)中为循环使用条件语句?,python,python-3.x,for-loop,Python,Python 3.x,For Loop,主要使用Java编写代码,并想知道Python是否可以在其for循环(如Java和C)中使用条件和不同类型的递增。如果这是一个简单的问题,我很抱歉 i、 e: boolean标志=True 对于(int i=1;i >(例如,列表、字符串等) PYTHON FOR循环: for循环用于迭代序列(即列表、元组、字典、集合或字符串) 这不像其他编程语言中的for关键字,更像是其他面向对象编程语言中的迭代器方法 使用for循环,我们可以为列表、元组、集合等中的每个项目执行一组语句 范例 在水果列表中打
boolean标志=True
对于(int i=1;i<20&&flag;i*=2){
//在这里输入代码
}
不是直接的。for
循环迭代预先生成的序列,而不是生成序列本身。天真的翻译可能看起来像
flag = True
i = 1
while i < 20:
if not flag:
break
...
if some_condition:
flag = False
i *= 2
最后,您可以定义自己的生成器进行迭代
def powers_of_two():
i = 1
while True:
yield i
i *= 2
for i in powers_of_two():
...
if some_condition:
break
如果将步长作为某个常量增量(如i++、i+=10等),则可以使用range()
。语法是-
range(start,stop,step)
范围(开始、停止、步进)
用于替换(int i=start;ii
的东西,您仍然可以使用它(使用break
)
您在问题中提到的等效循环可以是=>
for(int i=0;i<20;i*=2) // C/C++ loop
# Python - 1
i = 0
while i < 20 : # Equivalent python loop
# Code here
i*=2
for(int i=0;i
/C/C++
布尔标志=真;
for(int i=0;iPython中的for
循环与C中的循环不同。它们类似于Java 7中应用于iterables的for-each循环:
for (String name: TreeSet<String>(nameList) ) {
//Your code here
}
for(字符串名称:TreeSet(名称列表)){
//你的代码在这里
}
如果您想要控制迭代器变量,那么使用while
或for
循环,并在循环中使用break
可能是实现这种控制的最干净的方法
这可能是一个研究Python理解教程的好时机。尽管它们不直接适用于您的问题,但这是我最欣赏的特性,大约五年前它来自Java。从某种意义上说,但它不像JS和Java那么简单
下面是使用带有两个条件的while循环用Python编写的示例。还要注意,在Python while循环中,不能在循环声明中分配或增加索引
boolean_flag = True
i = 1
while (i < 20 and boolean_flag):
i *= 2
# Code in here
boolean\u flag=True
i=1
而(i<20和布尔值_标志):
i*=2
#在这里输入代码
您使用while作为循环内的标志、条件和增量
i = 1
while flag and i < 20:
# code here
i = i*2
i=1
当flag和i<20时:
#代码在这里
i=i*2
当然可以,但您可能需要自己做一些事情
Python提供了一个类,该类生成具有可选步长增量的可交互值序列
范围(1、20、2)内的i的:
#做事
#在这里,i从1开始,每循环在>=20处停止时递增2
如果要执行更复杂的操作,如i*=2
,则有两个选项:
使用while循环并自己增加值
编写一个自定义生成器,如range()
,实现这样的功能
示例生成器:
def范围步骤(启动、停止、步骤):
启动<停止时:
产量起点
开始*=步骤
对于范围内的i步数(1100,2):
印刷品(一)
请注意此处使用的yield
关键字。这对于大范围内的性能非常重要,特别是当iterable对象位于较大的一侧时。此处使用关键字允许Python一次只处理一个对象,而不是在开始处理之前在内存中生成所有这些内容
您可以在for循环中使用条件,也可以使用break
和continue
关键字将循环流控制到某个级别。也就是说,循环是在该块之外生成的,因此您不能在循环中间更改步骤或其他内容
虽然循环是一个完全不同的故事,你可以改变你想要的步骤,因为你是一个增加它的第一位
示例while循环:
i = 1
while i < 100
if i % 2 == 0:
i *= 2
else:
i += 1
i=1
当我<100
如果i%2==0:
i*=2
其他:
i+=1
对于您的提问,上面的答案是好的和有效的,但我会给出我的想法
max = 20
for i in range(0, max/2):
c = i * 2
if flag:
#Do work.
break
或者缩短它:
max = 20
for i in range(0, max, 2):
if flag:
#Do work.
break
在Python中,不能使用增量运算符,如C++、Java、E.X、 X++< /C>或<代码> -X/COD>。Python中的< <代码> >循环工作在java >迭代器< /C> >(例如,列表、字符串等)
PYTHON FOR循环:
for循环用于迭代序列(即列表、元组、字典、集合或字符串)
这不像其他编程语言中的for
关键字,更像是其他面向对象编程语言中的迭代器方法
使用for循环,我们可以为列表、元组、集合等中的每个项目执行一组语句
范例
在水果列表中打印每个水果:
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
将打印:
apple
banana
cherry
范例
请勿打印香蕉:
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
PYTHON条件:
在python中,假值的关键字是false
,真值的关键字是true
类似C++或java,可以使用==/Cuff>比较值。但是与java不同,在这里有严格的类型检查,条件需要是<代码>布尔< /COD>语句,在Python中:
如果有某种内容,几乎任何值都将被计算为True
除空字符串外,任何字符串均为True
除0外,任何数字均为真
任何列表
、元组
、集合
、和字典都是
True`,空的除外
事实上,除了空值(如()、[]、{}、“”、数字0和值None)之外,计算结果为False
的值不多。当然,值False
计算结果为False
以下内容将返回False:
bool(False)
bool(None)
bool(0)
bool("")
bool(())
bool([])
bool({})
在本例中,一个以上的值或对象的计算结果为False
,并且
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
bool(False)
bool(None)
bool(0)
bool("")
bool(())
bool([])
bool({})
class myclass():
def __len__(self):
return 0
myobj = myclass()
print(bool(myobj))
boolean_flag = True
i = 1 # actually I wouldn't use i as a variable name, but whatever.
while i < 20 and boolean_flag:
# code goes here
i *= 2
from itertools import takewhile, count
boolean_flag = True
for i in takewhile(lambda i: i < 20, map(lambda x: 2**x, count())):
# code goes here
if not boolean_flag:
break
boolean_flag = something()
something_that_has_to_happen_after_regardless_of_flag_value()
if not boolean_flag:
break
for i in (2**x for x in range(10)):
if not i < 20:
break
for x in range(10):
i = 2 ** x
if not (i < 20 and boolean_flag):
break