所以,我是一个新的python编码器,我正在制作一个密码生成器,但是它的名字nam未定义。
这是我的代码:
$(".some-select").on("change", function(){
alert('yes');
});
答案 0 :(得分:0)
首先,您的缩进有些偏离(也许只是您发布的方式?)。但是,您也不会use warnings;
use strict;
use Getopt::Std
getopts('i');
our($opt_i)
my $DESIRED_LENGTH = $opt_i;
while (<>) {
chomp; # remove trailing newline
if (m/^>/) { # if line starts with '>'
print "$_\n"; # just print it
} else {
my $i = 0;
while ($i + $DESIRED_LENGTH <= length($_)) {
print substr($_, $i, $DESIRED_LENGTH);
print "\n";
$i++;
}
}
}
使用函数中的任何值,因此将无法按预期访问nslookup mach_name
或 int main(int argc, char** argv) {
dequeue(); // to take junk values out of the queue
// initialize all values
pthread_mutex_init(&workLock, NULL);
pthread_cond_init(&canTake, NULL);
pthread_cond_init(&canPut,NULL);
char *dict = NULL, *port = NULL;
int newsockfd; // to create the socket conditions
struct sockaddr_in clienaddr; // to get the client info
socklen_t clilen;
pthread_t threads[NUM_WORKERS]; // for the thread id
if(argc < 2){
dict = DEFAULT_DICT;
port = DEFAULT_PORT;
} else {
dict = argv[1];
port = argv[2];
}
for (int i = 0; i < NUM_WORKERS; i++) {
pthread_create(&(threads[i]), NULL, (void *) &worker,NULL);
}
load_table(dict); // load the table
int listenfd, portno;
struct sockaddr_in server;
socklen_t srv_len = sizeof(server);
listenfd = socket(AF_INET, SOCK_STREAM, 0);
if(listenfd < 0){
perror("socket failed");
exit(EXIT_FAILURE);
}
// changes all the buffers to 0
bzero((char *) &server, sizeof(server));
// changes the port into a number
portno = atoi(port);
server.sin_addr.s_addr = INADDR_ANY;
server.sin_family = AF_INET;
server.sin_port = htons(portno);
//binds the port to the listenfd
if(bind(listenfd, (struct sockaddr *) &server, srv_len)< 0){
perror("bind failed");
exit(EXIT_FAILURE);
}
// waits for incoming connections
if(listen(listenfd,BACKLOG) < 0){
close(listenfd);
perror("listen failed");
exit(EXIT_FAILURE);
}
clilen = sizeof(clienaddr);
bzero((char *) &clienaddr, sizeof(clienaddr));
// listenfd = getlistenfd(port); // get the listen fd
while(1){
newsockfd = accept(listenfd, (struct sockaddr *) &clienaddr, &clilen); // accept a connection
pthread_mutex_lock(&workLock); // make sure only one thread can access the queue
while(size == MAXSIZE) pthread_cond_wait(&canPut, &workLock); // make sure main thread is put to sleep if there is no space for the queue
enqueue(newsockfd); // add the socket to the queue
pthread_cond_signal(&canTake); // signal that worker threads can take from the queue
pthread_mutex_unlock(&workLock); // unlock so another socket can be added
}
close(listenfd);
return (EXIT_SUCCESS);
}
。您可以调整脚本以返回这些变量,然后更改return
的定义以调用这些函数。像这样:
nam
导致:number
被打印(当我运行它时,您的输出将有所不同)。
我建议您回顾一下创建函数和范围,因为主要错误是试图从全局范围访问局部变量,而实际上没有让您的函数执行任何操作(如果没有pas
,它们将毫无用处)< / p>
答案 1 :(得分:0)
有local variables
和global variables
。
您在nam
内创建gen()
,这是局部变量,仅存在于gen()
内部,而没有gen()
外部。
但是在gen()
之外,您尝试从nam
获得价值
pas = nam + nam + number + number + nam + number
但是Python不知道如何从gen()
外部不存在的变量中获取价值。
在gen()
内部,您可以使用return nam
将值从函数发送到外部函数。
然后您可以运行gen()
并将返回的值分配给变量。它可以是nam
。
nam = gen()
通过这种方式,您可以创建局部变量nam
,该变量位于get()
外部,但不在get()
内部。对于Python,它将是两个不同的变量。
函数number
中的num()
遇到相同的问题
我将使用string.ascii_letters(num)
代替num
(这是不正确的)和string.digits
import random
import string
def gen():
let1 = random.choice(string.ascii_lowercase)
let2 = random.choice(string.ascii_lowercase)
let3 = random.choice(string.ascii_lowercase)
let4 = random.choice(string.ascii_lowercase)
let5 = random.choice(string.ascii_lowercase)
nam = let1 + let2 + let3 + let4 + let5
return nam
def num():
number = random.choice(string.digits)
return number
nam = gen()
number = num()
pas = nam + nam + number + number + nam + number
print(pas)
为了更加简洁,我在函数内更改了名称-现在只有一个nam
和一个number
import random
import string
def gen():
let1 = random.choice(string.ascii_lowercase)
let2 = random.choice(string.ascii_lowercase)
let3 = random.choice(string.ascii_lowercase)
let4 = random.choice(string.ascii_lowercase)
let5 = random.choice(string.ascii_lowercase)
result = let1 + let2 + let3 + let4 + let5
return result
def num():
result = random.choice(string.digits)
return result
nam = gen()
number = num()
pas = nam + nam + number + number + nam + number
print(pas)
我还可以删除变量result
import random
import string
def gen():
let1 = random.choice(string.ascii_lowercase)
let2 = random.choice(string.ascii_lowercase)
let3 = random.choice(string.ascii_lowercase)
let4 = random.choice(string.ascii_lowercase)
let5 = random.choice(string.ascii_lowercase)
return let1 + let2 + let3 + let4 + let5
def num():
return random.choice(string.digits)
nam = gen()
number = num()
pas = nam + nam + number + number + nam + number
print(pas)