在python

时间:2017-06-14 00:14:59

标签: python python-3.x

我正在进行一项练习,其中我应该同时拥有一个列表和字典,如果列表中的值不在字典中,可以打印出指定的消息,有人可以帮忙吗?出于某种原因,它只打印出else语句,但不打印if。我确信我错过了一些东西

poll_takers = ['angel', 'jana', 'murad', 'adel', 'joe', 'jake']

favorite_language = {
    'angel': 'python',
    'jana': 'c++',
    'murad': 'python',
    'adel': 'swift',
}

for name in poll_takers:
    if name == favorite_language:
        print(name.title() + ", thank you for taking the poll.")
    else:
        print(name.title() + ", please take the poll.")

1 个答案:

答案 0 :(得分:1)

你的条件应该是

if name == favorite_language

检查密钥是否在字典中,否则

==

总是求值为false,因为字符串名称不等于字典,因为# testing feature extraction model. import time import numpy as np, cv2 import sys import os import keras import tensorflow as tf from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, Flatten, BatchNormalization from keras.layers import Conv3D, MaxPooling3D from keras.optimizers import SGD,rmsprop, adam from keras import regularizers from keras.initializers import Constant from keras.models import Model #set gpu options gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=.99, allocator_type = 'BFC') sess = tf.Session(config=tf.ConfigProto(log_device_placement=True, gpu_options=gpu_options)) config = tf.ConfigProto() batch_size = 5 num_classes = 1 epochs = 50 nvideos = 56 nframes = 55 nchan = 3 nrows = 480 ncols = 640 #load any single image, resize if needed img = cv2.imread('C:\\Users\\david\\Documents\\AutonomousSS\\single frame.jpg',cv2.IMREAD_COLOR) img = cv2.resize(img,(640,480)) x_learn = np.random.randint(0,255,(nvideos,nframes,nrows,ncols,nchan),dtype=np.uint8) y_learn = np.array([[1],[1],[1],[0],[1],[0],[1],[0],[1],[0], [1],[0],[0],[1],[0],[0],[1],[0],[1],[0], [1],[0],[1],[1],[0],[1],[0],[0],[1],[1], [1],[0],[1],[0],[1],[0],[1],[0],[1],[0], [0],[1],[0],[0],[1],[0],[1],[0],[1],[0], [1],[1],[0],[1],[0],[0]],np.uint8) #each sample, each frame is either the single image for postive examples or 0 for negative examples. for i in range (nvideos): if y_learn[i] == 0 : x_learn[i]=0 else: x_learn[i,:nframes]=img #build model m_loss = 'mean_squared_error' m_opt = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True) m_met = 'acc' model = Sequential() # 1st layer group model.add(Conv3D(32, (3, 3,3), activation='relu',padding="same", name="conv1a", strides=(3, 3, 3), kernel_initializer = 'glorot_normal', trainable=False, input_shape=(nframes,nrows,ncols,nchan))) #model.add(BatchNormalization(axis=1)) model.add(Conv3D(32, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv1b", activation="relu")) #model.add(BatchNormalization(axis=1)) model.add(MaxPooling3D(padding="valid", trainable=False, pool_size=(1, 5, 5), name="pool1", strides=(2, 2, 2))) # 2nd layer group model.add(Conv3D(128, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv2a", activation="relu")) model.add(Conv3D(128, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv2b", activation="relu")) #model.add(BatchNormalization(axis=1)) model.add(MaxPooling3D(padding="valid", trainable=False, pool_size=(1, 5, 5), name="pool2", strides=(2, 2, 2))) # 3rd layer group model.add(Conv3D(256, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv3a", activation="relu")) model.add(Conv3D(256, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv3b", activation="relu")) #model.add(BatchNormalization(axis=1)) model.add(MaxPooling3D(padding="valid", trainable=False, pool_size=(1, 5, 5), name="pool3", strides=(2, 2, 2))) # 4th layer group model.add(Conv3D(512, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv4a", activation="relu")) model.add(Conv3D(512, (3, 3, 3), trainable=False, strides=(1, 1, 1), padding="same", name="conv4b", activation="relu")) #model.add(BatchNormalization(axis=1)) model.add(MaxPooling3D(padding="valid", trainable=False, pool_size=(1, 5, 5), name="pool4", strides=(2, 2, 2))) model.add(Flatten(name='flatten',trainable=False)) model.add(Dense(512,activation='relu', trainable=True,name='den0')) model.add(Dense(num_classes,activation='softmax',name='den1')) print (model.summary()) #compile model model.compile(loss=m_loss, optimizer=m_opt, metrics=[m_met]) print ('compiled') #set callbacks from keras import backend as K K.set_learning_phase(0) #set learning phase tb = keras.callbacks.TensorBoard(log_dir=sample_root_path+'logs', histogram_freq=0, write_graph=True, write_images=False) tb.set_model(model) reduce_lr = keras.callbacks.ReduceLROnPlateau(monitor='loss', factor=0.2,verbose=1, patience=2, min_lr=0.000001) reduce_lr.set_model(model) ear_stop = keras.callbacks.EarlyStopping(monitor='loss', min_delta=0, patience=4, verbose=1, mode='auto') ear_stop.set_model(model) #fit history = model.fit(x_learn, y_learn, batch_size=batch_size, callbacks=[reduce_lr,tb, ear_stop], verbose=1, validation_split=0.1, shuffle = True, epochs=epochs) score = model.evaluate(x_learn, y_learn, batch_size=batch_size) print(str(model.metrics_names) + ": " + str(score)) 测试了相等性,这就是为什么else语句不断被触发