Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从循环内的if条件返回值并在第一个循环中使用它_Python_Python 3.x - Fatal编程技术网

Python 如何从循环内的if条件返回值并在第一个循环中使用它

Python 如何从循环内的if条件返回值并在第一个循环中使用它,python,python-3.x,Python,Python 3.x,我有一个for循环来创建付费号码,比如040-050,下面是代码 start_num = 40 end_num = 50 painumreturn = '' count = 0 for painum in range(start_num, end_num): if not painumreturn: painumbe = painum else: painumbe = painumreturn painumber = str(pa

我有一个for循环来创建付费号码,比如040-050,下面是代码

    start_num = 40
end_num = 50
painumreturn = ''
count = 0
for painum in range(start_num, end_num):
    if not painumreturn:
        painumbe = painum
    else:
        painumbe = painumreturn

    painumber = str(painumbe).zfill(3)

    if painumber == '044':
        if count == 2:
            painumreturn = ''
            count == 0
            painumber = int(painumbe) +1
        else:  
         painumreturn = painumber
         count = count +1
         print(count)
    print(painumber)
#输出

它应该从这里继续第一次做45,不做045,它从046跳,所以这是正确的,但是

2
044
045
046
047
048
049

你是说像这样的事吗

# intialize varibales:
start = 40
end = 50

# iterate over given range:
for number in range(start, end):

    # skip values less than 44:
    if number < 44:
        continue

    # use zfill to format number:
    formatted_number = str(number)
    formatted_number = formatted_number.zfill(3)

    # print result:
    print(formatted_number)

跳过条件满足的所有项目:

start_num = 40
end_num = 50

for painum in range(start_num, end_num):
    if painum < 44:
        continue

    print(f"{painum:03.0f}")
start_num = 40
end_num = 50

for painum in range(start_num, end_num):
    if painum >= 44:
        print(f"{painum:03.0f}")

如果您乐于将结果存储为列表,则可以使用列表理解在一行中完成任务

numbers = [str(num).zfill(3) for num in range(start, stop) if num >= 44]

#['044', '045', '046', '047', '048', '049']

print(*numbers, sep='\n')

#044
#045
#046
#047
#048
#049

打印一个元素两次:

start_num = 40
end_num = 50
painumreturn = ''

for p in range(start_num, end_num):
    if p == 44:
        print(f"{p:03.0f}")
        painumreturn = f"{p:03.0f}"

    print(f"{p:03.0f}")
输出:

040
041
042
043
044
044
045
046
047
048
049
040
041
042
043
044
044
046
047
048
049
这就是解决方案:

start_num = 40
end_num = 50
painumreturn = ''
count = 0
for painum in range(start_num, end_num):
    if not painumreturn:
        painumbe = painum
    else:
        painumbe = painumreturn

    painumber = str(painumbe).zfill(3)

    if painumber == '044':
        if count == 1:
            painumreturn = ''
            count == 0
        else:  
            painumreturn = painumber
            count = count +1
    print(painumber)
输出:

040
041
042
043
044
044
045
046
047
048
049
040
041
042
043
044
044
046
047
048
049
谢谢


向您致意。

您的问题很难理解。发生了什么(输出),应该发生什么/显示什么?编辑问题以显示它。我编辑它查看它如果条件已经满足,您可以使用附加变量来标记(
True
False
)。在另一个
if
-子句中,您可以检查此标志并根据标志打印数字(或不打印)。范围内p的
输出(开始数,结束数):打印(f“{p:03.0f}”)之间有什么区别
以及您想要作为输出的内容?在条件正确后,是否所有值都是
044
?我宁愿将代码放在if中,特别是当我们可以只使用一行打印它,但使用
continue
也绝对是一个不错的选择。将painumreturn的值从空更新为当前值将painumreturn的值从空更新为当前值的想法将painumreturn的值从空更新为当前值的想法价值这与您所寻找的结果不一致吗<代码>从044开始并迭代到结束。这似乎是一个非常合乎逻辑、易于阅读的方法,可以达到你的目标。您需要它以这种方式运行有什么具体原因吗?是的,如果您之前知道
painumreturn
044
,我想使用它来满足某些条件,为什么你不只是循环44-50?对,但它应该继续打印,不只是设置后从044增加的数字,现在开始:)好,但我的意思是,再增加一次,然后它喜欢检查这是第二次还是第一次,如果它是第一次从值开始增加,那么我们不打印“044”?我们把它打印出来,就像我们做了一件好事一样