我对使用python编程非常陌生,但我真的很愿意学习它。我的讲师强烈建议这个社区,所以我试试看。
好吧所以我有一个带大写和小写单词的句子,我想编写一个只打印出以大写字母开头的单词的函数。
这是我到目前为止所得到的:
s = """Hey! Hast du schon gesehen,
wie einfach es ist, in Python zu programmieren?
Es ist viel einfacher als on den meisten
anderen Sprachen, die man so kennt."""
def print_all_Uppercased(s):
for word in s:
if word[0].isupper():
print word
print_all_Uppercased(s)
事情是,这只打印出单个大写字母。我哪里做错了?
答案 0 :(得分:5)
你非常接近。
for word in s.split():
if word[0].isupper()
你不会迭代单词,而是字母。 split
首先获得所需的结果。
你也可以将这个功能从一个函数修改为一个list comprehension:
[word for word in s.split() if word[0].isupper()]
如果您想要做的不仅仅是立即将它们打印出来,那将是非常方便的。
答案 1 :(得分:5)
你真的如此亲密!这里的问题是for word in s
遗憾地只选择s
中的每个字符,而不是s
中的每个字。
如果您在其上运行此循环并拥有print
内容,则您会看到结果只是字符。
for word in s: print word
# Prints:
H
e
... # (omitting the rest of the characters)
所以你的函数只是检查每个单独的字符检查该字符是否为if word[0].isupper():
大写(记住每个字符可以被认为是带有一个元素的列表),然后打印它。 / p>
要解决此问题,您需要首先从字符串list
中制作s
个字词。
这可以通过使用split()
s
轻松完成,http://sqlfiddle.com/#!9/a981f/1 isupper()
将空格上的字符串拆分并返回包含单词的列表。然后,您可以应用def print_all_Uppercased(s):
for word in s.split():
if word[0].isupper():
print word
来检查列表中的每个字词。
Hey!
Hast
Python
Es
Sprachen,
现已成功打印:
#include <stdio.h>
#include <io.h>
#include <winsock2.h>
#define snprintf _snprintf
static void sendmail_write(
const int sock,
const char *str,
const char *arg
) {
char buf[4096];
if (arg != NULL)
snprintf(buf, sizeof(buf), str, arg);
else
snprintf(buf, sizeof(buf), str);
send(sock, buf, strlen(buf), 0);
}
static int sendmail(
const char *from,
const char *to,
const char *subject,
const char *body,
const char *hostname,
const int port
) {
struct hostent *host;
struct sockaddr_in saddr_in;
int sock = 0;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
return -1;
}
sock = socket(AF_INET, SOCK_STREAM, 0);
host = gethostbyname(hostname);
saddr_in.sin_family = AF_INET;
saddr_in.sin_port = htons((u_short)port);
saddr_in.sin_addr.s_addr = 0;
memcpy((char*)&(saddr_in.sin_addr), host->h_addr, host->h_length);
if (connect(sock, (struct sockaddr*)&saddr_in, sizeof(saddr_in)) == -1) {
return -2;
}
sendmail_write(sock, "HELO %s\n", "Testname"); // greeting****************
sendmail_write(sock, "MAIL FROM: %s\n", from); // from
sendmail_write(sock, "RCPT TO: %s\n", to); // to
sendmail_write(sock, "DATA\n", NULL); // begin data
// next comes mail headers
sendmail_write(sock, "From: %s\n", from);
sendmail_write(sock, "To: %s\n", to);
sendmail_write(sock, "Subject: %s\n", subject);
sendmail_write(sock, "\n", NULL);
sendmail_write(sock, "%s\n", body); // data
sendmail_write(sock, ".\n", NULL); // end data
sendmail_write(sock, "QUIT\n", NULL); // terminate
closesocket(sock);//*******************************
return 0;
}
int main(int argc, char *argv[]) {
int ret = sendmail(
"support@mydomain.com", // from - put an email address here
"atomail", // to - put an email address here
"test",
"this would be cool if it worked!",
"iputmyisphere",//this is my ISP -use your own
25
);
if (ret != 0)
fprintf(stderr, "Failed to send mail (code: %i).\n", ret);
else
fprintf(stdout, "Mail successfully sent.\n");
return ret;
}