即使条件为真,如果python中的语句也不会运行

时间:2015-11-27 22:58:12

标签: python arrays if-statement

制作了一个程序来模拟地球上生命的最简单形式;数组中较大的数字(species [])在数组旁边吃一个较小的数字,并使该数字变小。我做了一个if语句,说如果num> 0&长度> 1,然后执行任何操作,其中num是程序运行的循环数,length是数组的长度,species []。我已经测试了两个变量并且它们都超过1.即使如此,if语句也没有运行,else正在使它摆脱while循环。关于如何修复它的任何想法?请以简单的方式解释,我刚刚开始编码。继承我的代码:

# Import Packages
import random

# Author
__author__ = 'VectorImage'

# Defaults
print('DEFAULTS')
print('Starting Size = 10')
print('Chance Of New Species = 1')
print('New Species Size = 5')
print('Number of Cycles = 100')
print('\n\n');


# Variables
print('SET VARIABLES')
choice = input('CUSTOM or DEFAULT: ')
p3 = 11

while p3 > 10:
    if choice == 'CUSTOM':
        p1 = int(input('Starting Size: '))
        p2 = int(input('Chance Of New Species (lower number means higher chance): '))-1
        p3 = int(input('New Species Size: '))-1
        p4 = int(input('Number of Cycles: '))
    elif choice != 'CUSTOM':
        p1 = 10
        p2 = 0
        p3 = 5
        p4 = 100
    else:
        print('species size cannot be more than x10')
species = [p1, p1, p1]
length = None
l = None
new_species = None
chance = None
num_range = None
temp_num = None
num = None
print('\n\n')


# Program
def main():
    print('PROGRAM')
    length = len(species)
    if length > 2:
        l = 0
        num = p4
        while 1 < 2:
            print(species)
            if num > 0 & length > 1:
                length = len(species)
                num_range = int(round(random.random()*(p3+1)))
                new_species = int(round(random.random()*p2))
                chance = int(round(random.random()))
                if new_species == 0:
                    if chance == 0:
                        species.insert(len(species) + num_range, length)
                    else:
                        species.insert(len(species) - num_range, length)
                l += 1
                num -= 1
                print('Cycle #', p4-num)
                print(length, ' species')
            else:
                break
            if species[length-1] > species[length-2]:
                temp_num = species[length-1] - num_range * (1 + p3)
                species[length-2] -= temp_num
                species[length-1] += temp_num
            else:
                temp_num = species[length-1] - (num_range * (1 + p3))
                species[length-1] += temp_num
                species[length-2] -= temp_num
            if species[length-1] <= 0:
                del species[length-1]
            elif species[length-2] <= 0:
                del species[length-2]

# RUN
main()

2 个答案:

答案 0 :(得分:3)

替换

if num > 0 & length > 1:

if num > 0 and length > 1:
Python中的

&是按位的,而前一行代码相当于if num > (0 & length) > 1:,这不是你想要的。

答案 1 :(得分:1)

&不是您正在寻找的运营商。它比较了两个操作数的位。使用布尔运算符andor