From 363fa7ad992b9e8bb7fe962580ad6e3cfb888e55 Mon Sep 17 00:00:00 2001 From: "Hancel.Lin" Date: Tue, 3 Apr 2018 17:00:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AC=AC=E4=B8=80=E6=9C=9F?= =?UTF-8?q?=E9=A1=B9=E7=9B=AEsample=20code=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03-21/backend/flow.pdf | Bin 0 -> 52488 bytes 03-21/backend/main.c | 27 ++++++++++++ 03-21/backend/main.py | 23 ++++++++++ 03-21/crawler/main.py | 12 ++++++ 03-21/frontend/css/style.css | 81 +++++++++++++++++++++++++++++++++++ 03-21/frontend/img/logo.png | Bin 0 -> 11455 bytes 03-21/frontend/index.html | 26 +++++++++++ readme.md | 33 ++++++++++++++ 8 files changed, 202 insertions(+) create mode 100644 03-21/backend/flow.pdf create mode 100644 03-21/backend/main.c create mode 100644 03-21/backend/main.py create mode 100644 03-21/crawler/main.py create mode 100644 03-21/frontend/css/style.css create mode 100644 03-21/frontend/img/logo.png create mode 100644 03-21/frontend/index.html create mode 100644 readme.md diff --git a/03-21/backend/flow.pdf b/03-21/backend/flow.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2ac1f63ef22ca31c9fa32f117fb2565a37536c87 GIT binary patch literal 52488 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
Gp;U1#0#gQGTraeQg{#;?$?9o9=uGVg@Ja+?AX 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 +#include +#include + +int main() +{ + int nRand = 0, nGuess = 0, nCount = 0; + srand((unsigned)time(NULL)); + nRand = rand() % 1000 + 1; + printf("请输入1~1000的数字:"); + while (nGuess != nRand) + { + while (!scanf("%d", &nGuess)) + getchar(); // 防止用户输入非数字导致的死循环 + if (nGuess > nRand) + { + printf("大了!\n"); + } + else if (nGuess < nRand) + { + printf("小了!\n"); + } + nCount++; + } + printf("你猜中了!你猜了%d次!\n", nCount); + return 0; +} \ No newline at end of file diff --git a/03-21/backend/main.py b/03-21/backend/main.py new file mode 100644 index 0000000..b69ceff --- /dev/null +++ b/03-21/backend/main.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from random import random + +def main(): + rand_number = int(random() * 1000 + 1) + guess_number = 0 + count = 0 + + print('请输入1~1000的数字:') + while rand_number != guess_number: + guess_number = input() + if guess_number < rand_number: + print('小了') + elif guess_number > rand_number: + print('大了') + count += 1 + print('恭喜你!猜中了!你一共猜测了{}次'.format(count)) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/03-21/crawler/main.py b/03-21/crawler/main.py new file mode 100644 index 0000000..c9e3d77 --- /dev/null +++ b/03-21/crawler/main.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import sys +if sys.version_info.major == 3: + from urllib.request import urlopen # Python 3 +else: + from urllib2 import urlopen # Python 2 + + +rsp = urlopen('http://ip.sxisa.com/') +print(rsp.read()) \ No newline at end of file diff --git a/03-21/frontend/css/style.css b/03-21/frontend/css/style.css new file mode 100644 index 0000000..3a31c77 --- /dev/null +++ b/03-21/frontend/css/style.css @@ -0,0 +1,81 @@ +html { + min-height: 100%; + position: relative; +} +body { + max-width: 300px; + margin: auto; + font: 300 1em/1.8 PingFang SC,Lantinghei SC,Microsoft Yahei,Hiragino Sans GB,Microsoft Sans Serif,WenQuanYi Micro Hei,sans; + padding: 0 1em; +} + +.logo { + text-align: center; +} + +.logo img{ + width: 100%; + max-width: 300px; /*最大宽度不能大于图片宽度*/ +} + +:focus { + outline: none; +} + +.content .title{ + text-align: center; + font-size: 300%; + font-weight: 100; +} + +.input-text { + border: none; + width: 100%; + text-align: center; + font-size: 1.5em; + border-bottom: 1px dashed #000; + padding: .2em 0; +} + +.submit-btn { + -webkit-appearance: none; /* 取出ios系统按钮默认带有的渐变样式 */ + background-color: #AD190E; + color: #FFF; + border: 0; + width: 100%; + font-size: 1.5em; + padding: .5em; + border-radius: 1.25em; +} + +.submit-btn:hover { + cursor: pointer; +} + +.submit-btn:active { /*实现按下时按钮收缩效果*/ + padding: .45em; + margin: .05em; +} + +.tip { + text-align: center; +} + +.tip a { + color: #CCC; + text-decoration: none; +} + +footer { + text-align: center; + color: #CCC; + height: 4em; +} + +footer p { + font-size: 80%; + position: absolute; + bottom: 0; + width: 100%; + left: 0; +} \ No newline at end of file diff --git a/03-21/frontend/img/logo.png b/03-21/frontend/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..027bb52b741ab8b988d0100fa037970cdec03bce GIT binary patch literal 11455 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

No34JxV-CXJhP5vR+Wp^v$pXj#a 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 literal 0 HcmV?d00001 diff --git a/03-21/frontend/index.html b/03-21/frontend/index.html new file mode 100644 index 0000000..a8a975a --- /dev/null +++ b/03-21/frontend/index.html @@ -0,0 +1,26 @@ + + + + + + + 报名查询 + + + +

+

+
+
+

报名查询

+
+

+

+
+

没查到报名?点击这里前往报名→

+
+ + + \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..37478fb --- /dev/null +++ b/readme.md @@ -0,0 +1,33 @@ +# 创软俱乐部项目训练 + +[后端] 3/21 猜数字 + +猜数字是已一个古老的游戏,由一个出题者随机出一个数字,由猜题者猜,若所猜数字大于所出数字,则出题者回答『大了』;若小于,则回答『小了』;直到猜题者猜中。现在请编写程序模拟出题者,随机数字在0~1000之间。当使用者猜中时,同时打印出猜测次数。 + +[爬虫] 3/21 获取IP + +访问网站:ip.sxisa.com 可以得到本机的外网IP。现在,请编写程序,打印出本机的外网IP。 + +[前端] 3/21 网站设计 + +按照设计图:https://coding.net/s/576fc1e8-5f9f-4863-8b5a-87adcc2e8e80 +制作出对应的网页。 + +--- + +[后端] 4/11 保存猜数字成绩 + +修改上一个程序,添加如下功能: +1. 当用户猜到数字之后,提示其输入一个昵称作为游戏名称,然后保存成绩,包含昵称,开始时间,耗时,所猜数字,猜测次数; +2. 游戏开启时,若用户已有设置了昵称,则输出提示语:你好!昵称~; +3. 然后提示选择 1. 玩猜数字;2. 查看历史成绩;3. 更改设置昵称; +4. 实现2,3功能。 + +[爬虫] 3/29 获取IP与IP相关信息 + +爬取 www.myip.cn 得到本机的外网IP,IP 地域,运营商。 + +[前端] 3/29 表单验证 + +修改上一个网页,添加如下功能: +当用户输入的电话号码非数字与长度不等于11位时,提示无效的手机号,同时禁用按钮,当输入符合要求时,则按钮恢复可用。 \ No newline at end of file