一个简易的前端业务工具库【tj-jstools】
简介 工作两年多了,最近自己总结用 TypeScript 写了一个简易的前端业务工具库: tj-jstools 。有以下功能:判断js数据类型、获取一个变量或者值的具体类型手机号脱敏、数值千分位、金额汉字大写转换数组和tree形数据互转、url参数获取并组合浏览器存储(Cookie/LoaclStorage/SessionStorage)自定义格式化存储如果有用,希望大家给个star,以是对萌新的鼓励!操作使用文档地址官方文档地址:http://jstools.itbooks.work/GitHub 使用文档地址:https://geniusmanyxh.github.io/tj-jstools/️安装使用方式npm方式npm install tj-jstools浏览器方式jsdelivr的umd格式地址<script src="https://cdn.jsdelivr.net/npm/tj-jstools@1.3.2/static/umd/index.js"></script>
<script>
const {_tj} = window
console.log(_tj);
</script>引入后,查看全局变量中的window._tj对象,里面包含了所有工具函数。简单使用的Demo判断数据类型Demoimport { isInt, isFloat, isNumber} from 'tj-jstools'
const isNumRes = isNumber(12.9); // true
const isIntRes = isInt(12.9); // false
const isFloatRes = isFloat(12.9); // true
当你想确定某一个变量或者值,是否和你预想的一样是可以使用以上这些数据类型判断函数。当你想获取某一个变量或者值具体的数据类型时,你可以使用以下函数:import { getType, getArrayAllType, getObjectAllType} from 'tj-jstools'
const getTypeRes1 = getType(Array(1)) // array
const getTypeRes2 = getType({}) // object
const getTypeRes3 = getType() // undefined
const getTypeRes4 = getType(1/0) // infinite
// 判断数组里面的数据类型
const arr = [true,null,undefined,1/0,5,5.01,{},[],()=>{},NaN,'']
const arrRes = getArrayAllType(arr)
//['boolean', 'null', 'undefined', 'infinite', 'int', 'float','object',
// 'array','function','NaN','string']
// 判断对象里面的数据类型
const testObj = {
a: true,
b: null,
c: undefined,
d: 6,
e: 6.01,
f: 1/0,
g: {},
h: [],
i: () => {}
}
const objRes = getObjectAllType(testObj)
/*
[
'boolean', 'null', 'undefined', 'int', 'float','infinite',
'object', 'array', 'function'
]
*/浏览器缓存(cookie/localStorage/sessionStorage)Demoimport { newStorage } from 'tj-jstools'
const Coptions = {
prefix:'tj',
linkSign: '@',
suffix:'jstools',
expireTime: 2,
unitTime: 'd'
}
// 创建一个操作Cookie的实例
const CInstance = newStorage('cookie',Coptions)
//创建一个操作localStorage的实例
const LInstance = newStorage('local',Coptions)
// 创建一个操作sessionStorage的实例
const SInstance = newStorage('session',Coptions)
// 保存和获取cookie值
CInstance.setFun('test','testValue')
CInstance.getFun('test') // tj@test@jstools: testValue ; 过期时间:2天
// 保存和获取localStorage值
LInstance.setFun('test','testValue')
LInstance.getFun('test') // tj@test@jstools: testValue ; 过期时间:2天
// 保存和获取sessionStorage值
SInstance.setFun('test','testValue')
SInstance.getFun('test') // tj@test@jstools: testValue ; 过期时间:2天注意:对sessionStorage设置过期时间,其实效果不大,会随着浏览器的关闭而消亡如果cookie不设置expires,cookie 会在对话结束时过期具体操作可以查看文档:https://geniusmanyxh.github.io/tj-jstools/各类API列表数据类型篇(DataType)序号名称功能简介1isBoolean判断数据是否是boolean类型2isString判断数据是否是string类型3isNumber判断数据是否是number类型4isSymbol判断数据是否是symbol类型5isUndefined判断数据是否是undefined类型6isBigint判断数据是否是bigint类型7isInt判断数据是否是int类型8isFloat判断数据是否是float类型9isNaN判断数据是否是NaN类型10isFinite判断数据是否是finite类型11isNull判断数据是否是null类型12isArray判断数据是否是array类型13isDate判断数据是否是date类型14isFunction判断数据是否是function类型15isObject判断数据是否是object类型16getType判断数据是否是returnTypeStr类型,并返回类型17getArrayAllType判断数组值是否是returnTypeStr类型,并返回类型18getArrayTypeDetail判断数组值是否是returnTypeStr类型,并返回类型19getObjectAllType判断对象属性是否是returnTypeStr类型,并返回类型20getObjectTypeDetail判断对象属性是否是returnTypeStr类型,并返回类型字符串篇(String)序号名称功能简介1charInCounts计算字符串中指定字符出现的次数2DTMobile手机号脱敏处理数值篇(Number)序号名称功能简介1formatChineseRMB数字金额转换为大写人民币汉字2numberThousandsFormat数值千分位格式化处理数组篇(Array)序号名称功能简介1toTreeData将特定数组转为树形结构2treeToFlat将树形结构扁平化一维数组3findTreeData查找符合条件的树形节点URL篇序号名称功能简介1getUrlParams获取url路径参数2converParamsToUrl拼接参数到url路径上浏览器篇序号名称功能简介1isFull判断当前是否全屏2getFullEl获取全屏元素3isFullEnabled判断当前是否支持全屏功能4openFull打开全屏5closeFull关闭全屏6toggleFull打开或者关闭全屏7scrollBackTop返回浏览器顶部8scrollProgressBar计算当前页面已读内容的百分比占比浏览器缓存篇(Cookie/LoaclStorage/SessionStorage)序号名称功能简介1newStorage生成一个可操作的浏览器缓存实例实例方法-列表序号名称功能简介1setFun设置浏览器缓存的方法2getFun获取浏览器缓存的方法3delFun移除浏览器缓存的方法4existFun监测浏览器缓存的方法5allkey获取浏览器缓存的key值唯一标识的方法6clearFun批量清除浏览器缓存的方法结语 如果大家对这个工具有其他想法或者提供思路的,以及指出不足的,欢迎在下方留言评论,我会一一细读的,集思广益,才能共同进步! 另外2023年:祝大家兔年吉祥、“兔”飞猛进、“钱”“兔”似锦、“兔”步青云、“钱”“兔”无量、“兔”来运转、扬眉“兔”气、大展鸿“兔”!
史上最全HTML实体字符整理
HTML字符实体做开发的小伙伴们都知道,HTML有一些预留字符,浏览器在解析时不能正确的显示,这个时候我们就需要使用字符实体进行替换。同时,有一些键盘上找不见的符号我们也可使使用字符实体进行替换,下面是我整理的几类我们经常遇到的字符。1.常见的HTML预留字符字符实体编号实体名称描述空格&nbsp;&#160;<小于号&lt;&#60;| 大于号 | > | >& | 和号 | & | &" | 引号 | " | "’ | 撇号 | ' (IE不支持) | '¢ | 分 | ¢ | ¢£ | 镑 | £ | £¥ | 人民币/日元 | ¥ | ¥€ | 欧元 | € | €§ | 小节 | § | §© | 版权 | © | ©® | 注册商标 | ® | ®™ | 商标 | ™ | ™× | 乘号 | × | ×÷ | 除号 | ÷ | ÷2.常用的音标符号音标符字符构成输出结果̀aa&#768;à́aa&#769;á̂aa&#770;ẫaa&#771;ã̀OO&#768;Ò́OO&#769;Ó̂OO&#770;ỖOO&#771;Õ3.完整的HTML预留字符字符实体编号实体名称描述&#160;&nbsp;非间断空格(non-breaking space)¡&#161;&iexcl;倒置感叹号(inverted exclamation mark)¢&#162;&cent;美分符号(cent)£&#163;&pound;英镑符号(pound)¤&#164;&curren;货币符号(currency)¥&#165;&yen;人民币/日元符号(yen)¦&#166;&brvbar;间断的竖杠(broken vertical bar)§&#167;&sect;小节号(section)¨&#168;&uml;分音符号(spacing diaeresis)©&#169;&copy;版权所有(copyright)ª&#170;&ordf;阴性序数记号(feminine ordinal indicator)«&#171;&laquo;左双角引号(angle quotation mark (left))¬&#172;&not;否定符号(negation)&#173;&shy;软连字符(soft hyphen)®&#174;&reg;注册商标(registered trademark)¯&#175;&macr;长音符号(spacing macron)°&#176;&deg;度符号(degree)±&#177;&plusmn;加减号/正负号(plus-or-minus)²&#178;&sup2;上标 2(superscript 2)³&#179;&sup3;上标 3(superscript 3)´&#180;&acute;尖音符号(spacing acute)µ&#181;&micro;微米符号(micro)¶&#182;&para;段落符号(paragraph)·&#183;&middot;中间点(middle dot)¸&#184;&cedil;变音符号(spacing cedilla)¹&#185;&sup1;上标 1(superscript 1)º&#186;&ordm;阳性序数记号(masculine ordinal indicator)»&#187;&raquo;右双角引号(angle quotation mark (right))¼&#188;&frac14;1/4 分数(fraction 1/4)½&#189;&frac12;1/2 分数(fraction 1/2)¾&#190;&frac34;3/4 分数(fraction 3/4)¿&#191;&iquest;倒置问号(inverted question mark)4.HTML数字字符实体字符实体编号实体名称描述∀&#8704;&forall;for all∂&#8706;&part;part∃&#8707;&exist;exists∅&#8709;&empty;empty∇&#8711;&nabla;nabla∈&#8712;&isin;isin∉&#8713;&notin;notin∋&#8715;&ni;ni∏&#8719;&prod;prod∑&#8721;&sum;sum−&#8722;&minus;minus∗&#8727;&lowast;lowast√&#8730;&radic;square root∝&#8733;&prop;proportional to∞&#8734;&infin;infinity∠&#8736;&ang;angle∧&#8743;&and;and∨&#8744;&or;or∩&#8745;&cap;cap∪&#8746;&cup;cup∫&#8747;&int;integral∴&#8756;&there4;therefore∼&#8764;&sim;similar to≅&#8773;&cong;congruent to≈&#8776;&asymp;almost equal≠&#8800;&ne;not equal≡&#8801;&equiv;equivalent≤&#8804;&le;less or equal≥&#8805;&ge;greater or equal⊂&#8834;&sub;subset of⊃&#8835;&sup;superset of⊄&#8836;&nsub;not subset of⊆&#8838;&sube;subset or equal⊇&#8839;&supe;superset or equal⊕&#8853;&oplus;circled plus⊗&#8855;&otimes;circled times⊥&#8869;&perp;perpendicular⋅&#8901;&sdot;dot operator5.英语教学中常用的字符实体字符实体编号实体名称描述À&#192;&Agrave;大写字母 A,重音(grave accent)Á&#193;&Aacute;大写字母 A,尖音(acute accent)Â&#194;&Acirc;大写字母 A,抑扬音(circumflex accent)Ã&#195;&Atilde;大写字母 A,腭化(tilde)Ä&#196;&Auml;大写字母 A,带有变音符号标记(umlaut mark)Å&#197;&Aring;大写字母 A,带有上圆圈(ring)Æ&#198;&AElig;大写字母 AEÇ&#199;&Ccedil;大写字母 C,变音(cedilla)È&#200;&Egrave;大写字母 E,重音(grave accent)É&#201;&Eacute;大写字母 E,尖音(acute accent)Ê&#202;&Ecirc;大写字母 E,抑扬音(circumflex accent)Ë&#203;&Euml;大写字母 E,带有变音符号标记(umlaut mark)Ì&#204;&Igrave;大写字母 I,重音(grave accent)Í&#205;&Iacute;大写字母 I,尖音(acute accent)Î&#206;&Icirc;大写字母 I,抑扬音(circumflex accent)Ï&#207;&Iuml;大写字母 I,带有变音符号标记(umlaut mark)Ð&#208;&ETH;冰岛语大写字母 ethÑ&#209;&Ntilde;大写字母 N,腭化(tilde)Ò&#210;&Ograve;大写字母 O,重音(grave accent)Ó&#211;&Oacute;大写字母 O,尖音(acute accent)Ô&#212;&Ocirc;大写字母 O,抑扬音(circumflex accent)Õ&#213;&Otilde;大写字母 O,腭化(tilde)Ö&#214;&Ouml;大写字母 O,带有变音符号标记(umlaut mark)×&#215;&times;乘号(multiplication)Ø&#216;&Oslash;大写字母 O,带有斜线(slash)Ù&#217;&Ugrave;大写字母 U,重音(grave accent)Ú&#218;&Uacute;大写字母 U,尖音(acute accent)Û&#219;&Ucirc;大写字母 U,抑扬音(circumflex accent)Ü&#220;&Uuml;大写字母 U,带有变音符号标记(umlaut mark)Ý&#221;&Yacute;大写字母 Y,尖音(acute accent)Þ&#222;&THORN;冰岛语大写字母 THORNß&#223;&szlig;德语小写字母 sharp sà&#224;&agrave;小写字母 a,重音(grave accent)á&#225;&aacute;小写字母 a,尖音(acute accent)â&#226;&acirc;小写字母 a,抑扬音(circumflex accent)ã&#227;&atilde;小写字母 a,腭化(tilde)ä&#228;&auml;小写字母 a,带有变音符号标记(umlaut mark)å&#229;&aring;小写字母 a,带有上圆圈(ring)æ&#230;&aelig;小写字母 aeç&#231;&ccedil;小写字母 c,变音(cedilla)è&#232;&egrave;小写字母 e,重音(grave accent)é&#233;&eacute;小写字母 e,尖音(acute accent)ê&#234;&ecirc;小写字母 e,抑扬音(circumflex accent)ë&#235;&euml;小写字母 e,带有变音符号标记(umlaut mark)ì&#236;&igrave;小写字母 i,重音(grave accent)í&#237;&iacute;小写字母 i,尖音(acute accent)ï&#239;&iuml;小写字母 i,带有变音符号标记(umlaut mark)ð&#240;&eth;冰岛语小写字母 ethñ&#241;&ntilde;小写字母 n,腭化(tilde)ò&#242;&ograve;小写字母 o,重音(grave accent)ó&#243;&oacute;小写字母 o,尖音(acute accent)ô&#244;&ocirc;小写字母 o,抑扬音(circumflex accent)õ&#245;&otilde;小写字母 o,腭化(tilde)ö&#246;&ouml;小写字母 o,带有变音符号标记(umlaut mark)÷&#247;&divide;除号(division)ø&#248;&oslash;小写字母 o,带有斜线(slash)ù&#249;&ugrave;小写字母 u,重音(grave accent)ú&#250;&uacute;小写字母 u,尖音(acute accent)û&#251;&ucirc;小写字母 u,抑扬音(circumflex accent)ü&#252;&uuml;小写字母 u,带有变音符号标记(umlaut mark)ý&#253;&yacute;小写字母 y,尖音(acute accent)þ&#254;&thorn;冰岛语小写字母 thornÿ&#255;&yuml;小写字母 y,带有变音符号标记(umlaut mark)
Java中浮点数转大写金额工具类
做财务模块时,客户要求使用大写金额来显示数字金额,这时便用到了浮点数转大写金额工具类1、浮点数转大写金额工具类 AmountUtil.java:import java.math.BigDecimal;
/**
* 浮点数转为大写金额
*
* @author lizhou
*/
public class AmountUtil {
private static final String[] CN_UPPER_NUMBER = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
/**
* 汉语中货币单位大写,这样的设计类似于占位符
*/
private static final String[] CN_UPPER_MONETRAY_UNIT = {"分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟"};
/**
* 特殊字符:整
*/
private static final String CN_FULL = "整";
/**
* 特殊字符:负
*/
private static final String CN_NEGATIVE = "负";
/**
* 金额的精度,默认值为2
*/
private static final int MONEY_PRECISION = 2;
/**
* 特殊字符:零元整
*/
private static final String CN_ZEOR_FULL = "零元" + CN_FULL;
/**
* 把输入的金额转换为汉语中人民币的大写
*
* @param numberOfMoney 输入的金额
* @return 对应的汉语大写
*/
public static String number2CNMontrayUnit(BigDecimal numberOfMoney) {
StringBuffer sb = new StringBuffer();
// -1, 0, or 1 as the value of this BigDecimal is negative, zero, or
// positive.
int signum = numberOfMoney.signum();
// 零元整的情况
if (signum == 0) {
return CN_ZEOR_FULL;
}
// 这里会进行金额的四舍五入
long number = numberOfMoney.movePointRight(MONEY_PRECISION).setScale(0, 4).abs().longValue();
// 得到小数点后两位值
long scale = number % 100;
int numUnit = 0;
int numIndex = 0;
boolean getZero = false;
// 判断最后两位数,一共有四中情况:00 = 0, 01 = 1, 10, 11
if (!(scale > 0)) {
numIndex = 2;
number = number / 100;
getZero = true;
}
if ((scale > 0) && (!(scale % 10 > 0))) {
numIndex = 1;
number = number / 10;
getZero = true;
}
int zeroSize = 0;
while (true) {
if (number <= 0) {
break;
}
// 每次获取到最后一个数
numUnit = (int) (number % 10);
if (numUnit > 0) {
if ((numIndex == 9) && (zeroSize >= 3)) {
sb.insert(0, CN_UPPER_MONETRAY_UNIT[6]);
}
if ((numIndex == 13) && (zeroSize >= 3)) {
sb.insert(0, CN_UPPER_MONETRAY_UNIT[10]);
}
sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
sb.insert(0, CN_UPPER_NUMBER[numUnit]);
getZero = false;
zeroSize = 0;
} else {
++zeroSize;
if (!(getZero)) {
sb.insert(0, CN_UPPER_NUMBER[numUnit]);
}
if (numIndex == 2) {
if (number > 0) {
sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
}
} else if (((numIndex - 2) % 4 == 0) && (number % 1000 > 0)) {
sb.insert(0, CN_UPPER_MONETRAY_UNIT[numIndex]);
}
getZero = true;
}
// 让number每次都去掉最后一个数
number = number / 10;
++numIndex;
}
// 如果signum == -1,则说明输入的数字为负数,就在最前面追加特殊字符:负
if (signum == -1) {
sb.insert(0, CN_NEGATIVE);
}
// 输入的数字小数点后两位为"00"的情况,则要在最后追加特殊字符:整
if (scale <= 0) {
sb.append(CN_FULL);
}
return sb.toString();
}
}
2、测试:public static void main(String[] args) {
// 数字金额
double money = 58636.26;
// 转为BigDecimal对象,防止精度丢失
BigDecimal bigDecimal = new BigDecimal(String.valueOf(money));
// 浮点数转为大写金额
System.out.println(number2CNMontrayUnit(bigDecimal));
}输出结果为:伍万捌仟陆佰叁拾陆元贰角陆分
大学生计算机基础题(一)
嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲大学生计算机基础题,请一起学习吧。一、单选题1、Python中有这样一条语句:price=99.0。请问在该语句执行后,变量price所引用数值的数据类型是()。 A. 整型 B. 浮点型 C. 并发型 D. 字符串型参考答案B2、以下不属于评价微型机的主要性能指标的是( ) A. 运算速度 B. 显示器 C. 主频 D. 内存参考答案B3、下列哪一个不符合计算机的发展规律 A. 体积越来越小 B. 性能越来越好 C. 应用越来越广 D. 价格越来越高参考答案D4、报表统计、账务计算是计算机在下列哪个方面的应用 A. 数值计算 B. 数据处理 C. 计算机辅助设计 D. 人工智能参考答案B5、以下代码段,运行结果正确的是( )x=2y=2.0 if x==y: print("Equal")else: print("Not Equal")A. Equal B. Not Equal C. 运行异常 D. 以上结果都不对参考答案A6、将八进制数323转换为对应的二进制数等于( )。 A. 11010011 B. 11010010 C. 11100001 D. 11010000参考答案A7、字母"a"的ASCII编码为对应的十进制数为:( ) A. 64 B. 65 C. 97 D. 98参考答案C8、被国际标准化组织确定为国际标准的码制是( ) A. ASCII码 B. BCD码 C. 汉字国标码 D. 汉字机内码参考答案A9、关于 Python 序列类型的通用操作符和函数,以下选项中描述错误的是( ) A. 如果 x 不是 s 的元素,x not in s 返回 True B. 如果 s 是一个序列,s = [1,“kate”,True],s[3] 返回 True C. 如果 s 是一个序列,s = [1,“kate”,True],s[–1] 返回 True D. 如果 x 是 s 的元素,x in s 返回 True参考答案B10、所谓“裸机”是指( ) A. 单片机 B. 单板机 C. 不装备任何软件的计算机 D. 只装备操作系统的计算机参考答案C11、现代计算机中的总线不包括( )。 A. 地址总线 B. 数据总线 C. 控制总线 D. 快速总线参考答案D12、光盘驱动器通过( )来读写光盘上的数据。 A. 磁力线方向 B. 激光 C. 微波 D. 声波参考答案B13、以下程序在运行时从键盘上输入一个数23,程序的运行结果是( )a=int(input("请输入一个数:"))if a%2==0: print(-a)else: print(a)A. 1 B. 0 C. 23 D. -23参考答案C14、下面的选项中,关于操作系统叙述错误的是( ) A. 操作系统是整个计算机系统的管理中心 B. 操作系统是沟通计算机和用户的桥梁 C. 操作系统负责管理组成计算机的各个成员 D. 操作系统是最核心最重要的应用软件参考答案D15、windows的窗口空间有限,有时正文并未完全在窗口工作区中显示,可利用()进行整个文档内容的浏览。 A. 窗口移动 B. 改变窗口大小 C. 滚动条操作 D. 窗口最大化操作参考答案C16、在windows中,当鼠标指针为沙漏箭头时,则表明( ) A. 正执行一项任务,不可以执行其它任务 B. 正在执行打印任务 C. 没有执行任何任务 D. 正在执行一项任务,可以执行其它任务参考答案D17、下列方法中,可以有效预防计算机病毒危害的是( )。 A. 使用盗版软件 B. 重要数据不需要异地备份 C. 对来历不明的软盘和光盘需要防毒检查 D. 随意打开来历不明的电子邮件参考答案C18、我们可以利用IE的()按钮,返回最近刚刚访问过的网页。 A. 新建 B. 后退 C. 主页 D. 收藏夹参考答案B19、执行Python程序可以使用的快捷键是( )。 A. F4 B. F8 C. F5 D. Ctrl+F1参考答案C20、Python中表达式4**0.5的值为( ) A. 2 B. 4 C. 2.0 D. 4.0参考答案C二、填空题1、Python中,已知a=0,b=not a,语句print(b)的输出结果为()。参考答案true2、中文标点符号中的人民币符号“¥”对应的键盘上的键位是()。(写出相应的英文标点符号即可,不用带引号)参考答案$3、当窗口为活动窗口时,按()+F4组合键可以关闭该窗口。(用小写字母表示)参考答案alt4、如果要保存网页上的某个图片,可以在该图片上单击右键,在其快捷菜单中选择()菜单项。参考答案图片另存为5、基于因特网技术的商务活动称为()商务。参考答案电子6、在Python语言中,表示注释开始的符号是()。参考答案#7、Python中,数字类型包括()、float、bool、complex四种类型。(填写英文字母表示)参考答案int8、利用计算机来模拟人的智能行为的理论技术称为()。参考答案人工智能9、从用途上将计算机分为专用计算机和()计算机。参考答案通用10、程序设计的3种基本结构中,()结构用于判断给定的条件,根据判断的结果来控制程序的流程。也称分支结构。参考答案选择11、在十进制数1234.5中,3对应的权值是()。 (用阿拉伯数字表示)参考答案1012、八进制数643转换为对应的十六进制数等于()。参考答案1A313、Python内置函数len()可以用来求字符串的()。参考答案长度14、显示器是目前使用最多的()设备。 (填输入或输出)参考答案输出15、计算机的“神经中枢”是指()。参考答案控制器三、判断题1、结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。参考答案正确2、Python代码可以直接运行,省去了其他语言执行过程中的编译、链接等过程。参考答案正确3、IDLE不是Python自带的开发工具。参考答案错误4、微型计算机的体积虽小,但是性价比比较高。参考答案正确5、计算机的运算速度是指平均每秒能执行指令的条数。参考答案正确6、在Python中,表达式4//3的值为1。参考答案正确7、在Python中,表达式4/3的值为1。参考答案错误8、英文字母的编码值满足正常的字母排序关系,且大、小写英文字母编码的对应关系为小写字母比大写字母值大32。参考答案正确9、以BMP、JPG为扩展名的文件是图形文件。参考答案正确10、属于同一个选择分支的多条语句要有相同的缩进。参考答案正确11、在Python选择和循环结构的判断条件中,等于被写成“==”。参考答案正确12、冯诺依曼体系的计算机硬件系统所包含的五大部件是:输入/输出设备、运算器、控制器、内/外存储设备、电源设备。参考答案错误13、显示器这种设备经常使用“分辨率”这一指标。参考答案正确14、元组的元素用[]括起来。参考答案错误15、元组中的元素不能被修改。参考答案正确16、频繁的开关计算机对计算机的影响不大。参考答案错误17、WinRar软件属于应用软件。参考答案正确18、range(5)等价于range(0,5,1)。参考答案正确19、我国法律规定,编制和故意传播计算机病毒的行为是违反法律的行为。参考答案正确20、如果想刷新当前IE窗口,可以使用的快捷键F5。参考答案正确四、word操作题1、根据下列要求Word完成操作。 (1) 将上边距设置为3厘米 (2) 将第2段复制到第3段的后面,成为一个新段落 (3) 将第3段首行缩进设置为2个字符。其他段落也首行设置2个字符。 (4) 将第3段段前间距设置为1行。 (5) 将页眉文字设置为:计算思维 (6) 将第3段字体设置为楷体 (7) 将第3段文字加粗 (8) 将文档中所有的计算机替换为电脑 (9) 在文档末尾插入图片,设置其高度7厘米,宽度8 (10) 将第2段行间距设置为2倍行距。2、按下列要求,完成Word操作。(1) 将纸张大小设置为A4 (2) 将上边距设置为3厘米 (3) 将第1段复制到第3段的后面,成为一个新段落 (4) 将第3段首行缩进设置为2个字符。其他段落也首行设置2个字符。 (5) 将第3段段前间距设置为1行。 (6) 将页眉文字设置为:什么是多媒体? (7) 将第3段字体设置为隶书 (8) 将第3段字号大小设置为四号 (9) 将第3段文字加粗 (10) 在文档末尾插入图片,设置其高度6厘米,宽度8五、Excel操作题1、按下列要求完成Excel操作。 (1) 将含有数据的工作表名称设置为家电生产量 (2) 删除工作表sheet2和sheet3 (3) 合并单元格A1:D1 (4) 设置合并后单元格中文字水平对齐方式设置为居中,竖直对齐方式设置为居中 (5) 在B8、C8、D8中,使用数学公式求合计值 (6) 将第一列列宽设置为12 (7) 将第2行行高设置为15六、Python编程题1、英文分词。要求:程序运行时,输入一句英文(不带标点),按空格分词后,将单词输出。输入样例:How do you do输出样例:Howdoyoudo
【Python】【Flask】【字符串索引】计算人民币与美元的相互计算
目录简介Python Code导包设置首页计算的接口问题0:设置请求方式问题1:关于接收数据可能存在的问题问题2:返回结果启动完整代码HTML Code问题分析分析:获取下拉列表框的选中值分析:将计算后的数据显示出来Some bugs更新后的代码简介假设1美元等于7.0183人民币,1人民币等于0.1424美元,设计与编写解决"人民币与美元相互兑换"这-问题的程序。( 美元或者人民币采用输入的方式,输入的值为自己学号后三位,必须在运行截图中体现出来!也可设计一一个界面,界面不做要求)提交要求:(1)共两个文件;(2)第一个文件为.py文件;(3)第二个文件学号+姓名+货币兑换word; .(4)其中word文件中包含:程序代码截图、程序运行输入与结果截图【本文要点】1.本文前端使用HTML+CSS+JavaScript,后端采用Python Flask框架,实现计算人民币与美元的换算。2.前端使用原生JS的方式向后端提交数据本文的关键在于1、如何使用原生JS向后端POST提交数据2、Python Flask框架的简单使用(获取数据,返回数据)Python Code导包from flask import Flask
from flask import request # 获取数据
from flask_cors import CORS # 解决跨域问题
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}}) # 解决跨域问题设置首页这里的代码不用细看,你只需要知道@app.route("/",methods=["GET"]) 设置首页就可以了。前端代码我们会在后面分析的。@app.route("/",methods=["GET"])
def main():
return r"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form onclick="return false">
<h2>汇率计算</h2>
<label for="number">待计算金额</label>
<input type="number" id="number">
<label>
<select id="select_type">
<option>CNY</option>
<option>USD</option>
</select>
</label>
<input type="submit" value="计算" onclick="calc()">
<p id="result"></p>
<script>
function calc() {
//创建XMLHttpRequest对象
let obj
if (window.XMLHttpRequest) {
//IE7以上
obj = new XMLHttpRequest();
} else {
//IE5、IE6
obj = new ActiveXObject("Microsoft,XMLHTTP")
}
//规定请求类型,请求路径,是否异步
obj.open("POST", "/calc", true)
//发送请求
let s = document.getElementById("select_type")
let i = s.selectedIndex
let v_2 = s.options[i].value
let v_1 = document.getElementById("number").value
let v = v_1 + v_2
let value = "value=" + v
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 设置请求头
obj.send(value)
//请求完成后的处理
obj.onreadystatechange = function (data) {
console.log("data:",data)
if (obj.readyState === 4 && obj.status === 200) {
//responseText:获取字符串形式的响应数据;responseXML:获取XML形式的响应数据
txt = obj.responseText
console.log(txt)
//JSON.parse();JSON字符串转化为JS对象;JSON.stringify():JS转为JSON字符串
let r = JSON.parse(txt)
//调用对象内的属性回填数据
document.getElementById("result").innerText=r["result"]+(r["type"]==="CNY"?"USD":"CNY")
}else{
console.log("获取返回数据失败")
}
}
}
</script>
</form>
</body>
</html> """你可能会好奇为什么我设置了跨域,但是页面却不是分来的。实际上我调试的时候,前端是单独的页面,而不是写在Python里面的。所以其实你可以这样:首页你就 return "hello word"然后前端不管写在哪都行,只要Post地址正确就行。计算的接口@app.route("/calc",methods=["POST","GET"])
def calc():
result=0
value =request.values.get("value")
print(value)
if value=="":
result=-1
print("【INFO】", "用户输入", value)
type = value[-3::1].upper()
print("【INFO】", "类型为", type)
try:
number = int(value[:-3])
print("【INFO】", "金额为", number)
except:
return -1
if type == "CNY":
# 表示输入的人民币,需要计算为美元
result=number * 0.1424
elif type == "USD":
# 表示输入的美元,需要计算为人民币
result=number / 0.1424
print("【INFO】", "结果为",result)
return {"result": result, "type": type}这是最关键的地方,事实上代码并不多,只是我写的注释多。我们要确认的是得到的参数格式是“1CNY”或者“1USD”这样的。当然,如果你不是这个格式,也可以,分析数据的时候改动一下就可以了。就以我的格式为例,数据+单位的格式我们得到的是一整个字符串,就要拆分数据和单位,就可以通过单位判断是美元转人民币还是人民币转美元。观察可知,单位都是三个字符,所以:value[-3::1] 来取出字符。-3就是从倒数第三个开始取,两个冒号中间是空的,啥也没写,代表取到结束为止,最后那个1代表的是步长为1。1,2,3 步长为12,4,6步长为2这你懂步长的意思了吧再通过.upper()的方式将单位转为大写方便判断(考虑的是用户输入的可能是大写,有可能是小写)这些都是Python基础,就在这里简单提一下。问题0:设置请求方式如果想要接收POST请求,需要设置请求方法支持POST@app.route("/calc",methods=["POST","GET"])我这样设置的是POST和GET请求都支持。关于这个地方,你只需知道methods需要的值是一个列表就行了问题1:关于接收数据可能存在的问题情况:print(request.data) 存在数据,但是 value =request.values.get("value")取不到数据。错误:状态码500原因:无法识别前端传来的数据解决方案:前端传来数据时声明数据类型。例如obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 设置请求头这是我在写的过程中遇到的问题,要强调的是“前端传数据过来时,一定要在头部声明数据类型”Python Flask接受参数的方法有很多,你可以参考这篇文章:Flask 1.1.2:request中存储参数的属性(form、args、data、json、files、values)使用简介_mola tutu的博客-CSDN博客_request.values另外,要进行金额换算,换算什么的,加减乘除啊,都是数值在相互加减乘除,而我们拿到的是字符串所以要将字符串转型。如果你前端不去限制数值类型,传过来的不是个数字,字符串转为数值类型的时候就会发生错误,所以要使用异常处理try。问题2:返回结果返回的结果要符合JSON格式。也就是你要返回的是Python字典,而不是单纯的一个数字,一个字符串。return {"result": result, "type": type}启动if __name__ == '__main__':
app.run()完整代码# -*- coding: UTF-8 -*-
# 开发人员:萌狼蓝天
# 博客:Https://mllt.cc
# 笔记:Https://cnblogs.com/mllt
# 哔哩哔哩/微信公众号:萌狼蓝天
# 开发时间:2022/9/26
import json
from flask import Flask
from flask import request
from flask_cors import CORS
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
@app.route("/calc",methods=["POST","GET"])
def calc():
result=0
value =request.values.get("value")
print(value)
if value=="":
result=-1
print("【INFO】", "用户输入", value)
type = value[-3::1].upper()
print("【INFO】", "类型为", type)
try:
number = int(value[:-3])
print("【INFO】", "金额为", number)
except:
return -1
if type == "CNY":
# 表示输入的人民币,需要计算为美元
result=number * 0.1424
elif type == "USD":
# 表示输入的美元,需要计算为人民币
result=number / 0.1424
print("【INFO】", "结果为",result)
return {"result": result, "type": type}
@app.route("/",methods=["GET"])
def main():
return r"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form onclick="return false">
<h2>汇率计算</h2>
<label for="number">待计算金额</label>
<input type="number" id="number">
<label>
<select id="select_type">
<option>CNY</option>
<option>USD</option>
</select>
</label>
<input type="submit" value="计算" onclick="calc()">
<p id="result"></p>
<script>
function calc() {
//创建XMLHttpRequest对象
let obj
if (window.XMLHttpRequest) {
//IE7以上
obj = new XMLHttpRequest();
} else {
//IE5、IE6
obj = new ActiveXObject("Microsoft,XMLHTTP")
}
//规定请求类型,请求路径,是否异步
obj.open("POST", "/calc", true)
//发送请求
let s = document.getElementById("select_type")
let i = s.selectedIndex
let v_2 = s.options[i].value
let v_1 = document.getElementById("number").value
let v = v_1 + v_2
let value = "value=" + v
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 设置请求头
obj.send(value)
//请求完成后的处理
obj.onreadystatechange = function (data) {
console.log("data:",data)
if (obj.readyState === 4 && obj.status === 200) {
//responseText:获取字符串形式的响应数据;responseXML:获取XML形式的响应数据
txt = obj.responseText
console.log(txt)
//JSON.parse();JSON字符串转化为JS对象;JSON.stringify():JS转为JSON字符串
let r = JSON.parse(txt)
//调用对象内的属性回填数据
document.getElementById("result").innerText=r["result"]+(r["type"]==="CNY"?"USD":"CNY")
}else{
console.log("获取返回数据失败")
}
}
}
</script>
</form>
</body>
</html> """
if __name__ == '__main__':
app.run()HTML Code<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form onclick="return false">
<h2>汇率计算</h2>
<label for="number">待计算金额</label>
<input type="number" id="number">
<label>
<select id="select_type">
<option>CNY</option>
<option>USD</option>
</select>
</label>
<input type="submit" value="计算" onclick="calc()">
<p id="result"></p>
<script>
function calc() {
//创建XMLHttpRequest对象
let obj
if (window.XMLHttpRequest) {
//IE7以上
obj = new XMLHttpRequest();
} else {
//IE5、IE6
obj = new ActiveXObject("Microsoft,XMLHTTP")
}
//规定请求类型,请求路径,是否异步
obj.open("POST", "http://127.0.0.1:5000/calc", true)
//发送请求
let s = document.getElementById("select_type")
let i = s.selectedIndex
let v_2 = s.options[i].value
let v_1 = document.getElementById("number").value
let v = v_1 + v_2
let value = "value=" + v
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 设置请求头
obj.send(value)
//请求完成后的处理
obj.onreadystatechange = function (data) {
console.log("data:",data)
if (obj.readyState === 4 && obj.status === 200) {
//responseText:获取字符串形式的响应数据;responseXML:获取XML形式的响应数据
txt = obj.responseText
console.log(txt)
//JSON.parse();JSON字符串转化为JS对象;JSON.stringify():JS转为JSON字符串
let r = JSON.parse(txt)
//调用对象内的属性回填数据
document.getElementById("result").innerText=r["result"]+(r["type"]==="CNY"?"USD":"CNY")
}else{
console.log("获取返回数据失败")
}
}
}
</script>
</form>
</body>
</html>问题分析分析:获取下拉列表框的选中值let s = document.getElementById("select_type") //获取到下拉列表框元素对象
let i = s.selectedIndex //获取当先被选中值的索引
let v_2 = s.options[i].value //根据索引获取值
let v_1 = document.getElementById("number").value //获取文本框元素的值
let v = v_1 + v_2 //将两个值以字符串的形式拼接起来
let value = "value=" + v //写成后端可以识别的格式,多条数据使用&隔开分析:将计算后的数据显示出来document.getElementById("result").innerText=r["result"]+(r["type"]==="CNY"?"USD":"CNY")我们获取了数据之后,得到的是计算好的值,还有它计算出来 我们传给它的钱钱类型值可以直接用,但是钱钱类型你想一下,我们传给他的是人民币CNY,它分析之后,告诉我们是钱钱类型是CNY,而计算出来的钱钱类型是USD所以我们获得CNY,就要转为USD;获得USD,就转为CNY这里运用了三目运算符的写法r["type"]==="CNY"?"USD":"CNY"Some bugs因为只是个作业,代码写的比较水。有几个地方可以继续优化一下1.前端限制输入必须是数值,而不是字母汉字特殊字符等乱七八糟的2.后端字符串转为数值时,不应该是转为int型,万一人家输入的有小数你对吧?更新后的代码1.前端传入为空时处理2.数据类型使用Decimal3.修改了汇率错误的问题# -*- coding: UTF-8 -*-
# 开发人员:萌狼蓝天
# 博客:Https://mllt.cc
# 笔记:Https://cnblogs.com/mllt
# 哔哩哔哩/微信公众号:萌狼蓝天
# 开发时间:2022/9/26
from flask import Flask
from flask import request
from flask_cors import CORS
from decimal import Decimal
app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "*"}})
@app.route("/calc",methods=["POST","GET"])
def calc():
result=0
value =request.values.get("value")
print(value)
if value=="":
result=-1
print("【INFO】", "用户输入", value)
type = value[-3::1].upper()
print("【INFO】", "类型为", type)
try:
number = Decimal(value[:-3])
print("【INFO】", "金额为", number)
except:
return -1
if type == "CNY":
# 表示输入的人民币,需要计算为美元
result=number * Decimal("0.1424")
elif type == "USD":
# 表示输入的美元,需要计算为人民币
result=number * Decimal("7.0183")
print("【INFO】", "结果为",result)
return {"result": result, "type": type}
@app.route("/",methods=["GET"])
def main():
return r"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form onclick="return false">
<h2>汇率计算</h2>
<label for="number">待计算金额</label>
<input type="number" id="number">
<label>
<select id="select_type">
<option>CNY</option>
<option>USD</option>
</select>
</label>
<input type="submit" value="计算" onclick="calc()">
<p id="result"></p>
<script>
function calc() {
//创建XMLHttpRequest对象
let obj
if (window.XMLHttpRequest) {
//IE7以上
obj = new XMLHttpRequest();
} else {
//IE5、IE6
obj = new ActiveXObject("Microsoft,XMLHTTP")
}
//规定请求类型,请求路径,是否异步
obj.open("POST", "http://127.0.0.1:5000/calc", true)
//发送请求
let s = document.getElementById("select_type")
let i = s.selectedIndex
let v_2 = s.options[i].value
let v_1 = document.getElementById("number").value
if(v_1==="" || v_1===null){
v_1="0"
}
let v = v_1 + v_2
let value = "value=" + v
obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // 设置请求头
obj.send(value)
//请求完成后的处理
obj.onreadystatechange = function (data) {
console.log("data:",data)
if (obj.readyState === 4 && obj.status === 200) {
//responseText:获取字符串形式的响应数据;responseXML:获取XML形式的响应数据
txt = obj.responseText
console.log(txt)
//JSON.parse();JSON字符串转化为JS对象;JSON.stringify():JS转为JSON字符串
let r = JSON.parse(txt)
//调用对象内的属性回填数据
document.getElementById("result").innerText=r["result"]+(r["type"]==="CNY"?"USD":"CNY")
}else{
console.log("获取返回数据失败")
}
}
}
</script>
</form>
</body>
</html>
"""
if __name__ == '__main__':
app.run()
html+css+js+jQuery学习笔记(一)
Css中“.”可以选择包含两个样式的东西“,”可以都选上img可以把div撑开 只设置宽 或者高那么将按照比列缩放扩大Outline:none;//input text类型有外边框;Preferences->Key Bindings->user->编辑文档 //代码对齐
{ "keys": ["ctrl+alt+l"], "command": "reindent" },cursor:pointer 小手sub 上标背景图定位:左右反 上下正Display:none;放弃原来位置隐藏;visibility:visible/hidden;平时可视/平时隐藏play:none;不占位隐藏visibility:hidden;占位隐藏opacity 透明度filter:alpha(opacity=60); 浏览器自己的透明滤镜text-transform:uppercase;英文大写text-transform:lowercase;英文小写text-transform:capitalize;单次首字母大写text-transform:none;原样式prompt("");//alert(“”);confirm(“”)//弹出带选择选择框Border-collapse:collapse;//table表的双边框变成但边框**transition:all 5s ease 0s;//css样式转变时间//!!!震惊我一年!!transform:rotate(90deg);//顺时针旋转九十度Text-indent:-999em 或者px//段落首行缩进=== 全等于!== 不全等条件 ? val1 : val2Math.pow(5,7)Math.sqrt()Math.round()四舍五入的原理是在参数上加0.5然后进行下取整 有公式,如果想要在[a,b]闭区间取随机数,能取到a,也能取到b:Math.random()能够生成一个0~1的数字,不包括0,也不包括1。术语叫做(0,1)开区间。parseInt(Math.random() * (b - a + 1)) + a;///数组!!!!下标越界不报错 是unfinde***push 尾插***pop 尾删***unshift 头插***shift 头删***Concat()//连接 连接的时候还得重新赋值 arr=arr.concat(arr2)***Slice();//截取数组某一部分***arr.slice(start,end) 返回一个新的数组,包含从 start 到 end (不包括该元素)的元素。/arr.splice(3,2,"斑马","骆驼");一旦应用,arr立即改变。并不需要重新复制,换句话说,这个函数不返回新的数组。var arr = ["A","B","C","D","E","F","G"];
arr.splice(3,2,"X","Y","Z","思密达"); //从数组下标为3开始这项,连数2项,改为……
console.log(arr);// ***************插入一些项 ***************
var arr = ["A","B","C","D","E","F","G"];
arr.splice(2,0,"嘻嘻","哈哈"); //插入到下标为2的项前,不删除项目
console.log(arr);***reverse();//翻转数组***sort();数组排序***arr.sort(function(a,b){//如果a要放在b前面,那么返回负数
//如果a要放在b后面,那么返回正数
//如果a和b不区分大小,那么返回0
if(a < b){
return -1;
}else if(a > b){
return 1;
}else if(a == b){
return 0;
}});/////字符串///***var str = arr.join(分隔符);如果不写分隔符,那么等价于用逗号分开转为字符串***charAt() 返回在指定位置的字符。"abcdef".charAt(0); 和数组下标类似的。***Arr.length***indexOf() 检索字符串 //可以用于字符串"我爱你亲爱的祖国的人民币".indexOf("的"); //5***replace() 替换 funciton(match,....)中的match为 替换前的字符串"abcdefgaa".replace("a","0"); // "0bcdefgaa"把a替换为0 , 只替换1个。***split() 把字符串→数组, 从什么地方拆分, 就是参数"我爱你亲爱的祖国的人民币".split("的");***substr() 截取子串 “字符串”.substr(start,length)"abcdefghijklmn".substr(3,5); 从下标为3的地方开始,取5个字符***substring() 截取子串“字符串”.substring(start,end); 不包括end"abcdefghijklmn".substring(3,5);***toLowerCase()、toUpperCase();转换为大小写split转为数组;Join转为字符串字符串方法返回值有三类:返回数字类型:indexOf,lastIndexOf,search , charCodeAt返回数组的方法:split,match返回字符串的方法:charAt,substring,substr, slice, replace////正则表达式Exec ///testvar str = /abc/g;console.log(str.exec(demo));普通字符包括:字母(abcABC),数字(123),_等等特殊字符:() [] {} ^ $ * ? \ | + .单词分隔符我们用\b表示 [a-zA-Z_0-9]之外的字符非单词分隔符我们用\B表示****字符集[] 里面放的东西test对象的一个东西3.5预定义类. [^\n\r] 除了换行和回车之外的任意字符\d [0-9] 数字字符\D [^0-9] 非数字字符\s [ \t\n\x0B\f\r] 空白字符\S [^ \t\n\x0B\f\r] 非空白字符\w [a-zA-Z_0-9] 单词字符(所有的字母)\W [^a-zA-Z_0-9] 非单词字符3.6 量词? 软性量词 出现零次或一次* 软性量词 出现零次或多次(任意次)+ 软性量词 出现一次或多次(至道一次){n} 硬性量词 对应零次或者n次{n,m} 软性量词 至少出现n次但不超过m次(中间不能有空格){n,} 软性量词 至少出现n次(+的升级版)3.7 修饰符g 表示全局匹配i 忽略大小写m 多行匹配3.8其他[\u4e00-\u9fa5]表示中文集| 表示或者的意思alert(/a|b/.test('b')) =》 truealert(/a|b/.test('c')) =》 false3.9 分组分组1 解决多个字符串重复2 可以在外面获取格式 (任意个字符)获取在正则表达式内部获取:\数字在正则表达式外部获取:$数字注意数字是从1开始的。//
(function fun(){
alert("哈哈")
})();闭包function text() {
var arr = [];
for (var i = 0; i < 10; i++) {
(function (a) {
arr[a] = function () {
console.log(a);
} //保存的是立即执行函数的成果AO()
}(i))
}
return arr;
}
//不仅仅是class属性需要用className避讳一下,还有:class 要写成.classNamefor 要写成.htmlFor (label用的)rowspan 要写成rowSpancolspan 要写成colSpansetAttribute()、getAttribute()。getAttribute(); //得到属性
setAttribute(); //设置属性oImg.setAttribute("src","images/2.jpg");
等价于
oImg.src = “images/2.jpg”;setAttribute和点语法有一丢丢不一样:第一,所有自定义的属性,都不能通过点语法得到<div shaoshanhuan=”38”></div>alert(oBox.shaoshanhuan); //undefined,自定义的属性,不是w3c的属性,都不能用点语法
alert(oBox.getAttribute("shaoshanhuan")); //38Onclick 单击Onmouseover 鼠标进入Onmouseout 鼠标离开Ondblclivk 双击Onfouse 得到焦点Onblue 失去焦点Onmousedown 鼠标按下Onmouseup 鼠标按键抬起Windows.onload 页面中的代码完全加载完毕以后play:none;隐层play:block;显示innerHTML//内部文本document.getElementsByName(“”)//里面放的是表单中的namewindow.getComputedStyle(oDiv).getPropertyValue("width")getPropertyValue看上去就像打它,看着就不爽,所以可以简写:getComputedStyle(oDiv)["padding-left"]好用的东西,一定不兼容。所以IE6、7、8不兼容getComputedStyle.getPropertyValue()的写法,另外一套写法:附加在元素身上的currentStyle属性,它表现和style点语法一样,使用驼峰式访问。oDiv.currentStyle.width现在要注意,它必须使用驼峰:oDiv.currentStyle.paddingTopoDiv.currentStyle["paddingLeft"]总结:高级:高级:
window.getComputedStyle(oDiv).getPropertyValue("padding-left");
getComputedStyle(oDiv).getPropertyValue("padding-left");
getComputedStyle(oDiv)["padding-left"];
IE6、7、8:
oDiv.currentStyle.paddingLeft;
oDiv.currentStyle["paddingLeft"];兼容性问题if(window.getComputedStyle){
alert("我会getComputedStyle");
}else{
alert("我不会getComputedStyle,那四个啥?")}现在我们要在一个轮子,就是封装一个函数,这个函数接收两个参数,第一个是对象,第二个是属性名。fetchComputedStyle(obj,”padding-left”);
fetchComputedStyle(obj,”paddingLeft”);这个函数返回的是这个属性值的计算后的样式。更牛逼的是,我们无论用户输入的是驼峰还是非驼峰,都让这个函数鲁棒。div.currentStyle.opacity //可以得到css清单中的opactiy里面写的值。而不是filter的值。支持opacity的浏览器,总会将.6这种写法规范为0.6 。 而不支持opacity的浏览器则会返回原有的形式.6。这是一个小坑,进行比较的时候需要注意。IE6、7IE8IE9、IE9+、高级浏览器offsetParent如果自己没有定位,那么就是自己父亲中有width或者有height或者有定位的元素。如果自己有定位,那么就是和高级浏览器一致。和高级浏览器一致自己祖先元素中,离自己最近的已经定位的元素offsetLeft和高级浏览器一致多算一条border自己的border外到offsetParet对象的border内ele.offsetLeftele.offsetTopele.offsetWidthele.offsetHeightele.clientWidthele.clientHeight 一、clientWidth和clientHeigh 、 clientTop和clientLeft 1,clientWidth的实际宽度 clientWidth = width+左右padding//浏览器的宽度 2,clientHeigh的实际高度//浏览器的高度 clientHeigh = height + 上下padding 3,clientTop的实际宽度 clientTop = boder.top(上边框的宽度) 4,clientLeft的实际宽度 clientLeft = boder.left(左边框的宽度) 二、offsetWidth和offsetHight 、 offsetTop和offsetLeft 1,offsetWidth的实际宽度 offsetWidth = width + 左右padding + 左右boder 2,offsetHeith的实际高度 offsetHeith = height + 上下padding + 上下boder 3,offsetTop实际宽度 offsetTop:当前元素 上边框 外边缘 到 最近的已定位父级(offsetParent) 上边框 内边缘的 距离。如果父级都没有定位,则分别是到body 顶部 和左边的距离 4,offsetLeft实际宽度 offsetLeft:当前元素 左边框 外边缘 到 最近的已定位父级(offsetParent) 左边框 内边缘的距离。如果父级都没有定位,则分别是到body 顶部 和左边的距离timer = setInterval(function(){
},20)
clearInterval(timer);这个按钮持续点击,盒子运动越来越快。这是因为每次点击,盒子身上就有更多的定时器在作用。解决办法,就是四个字的口诀“设表先关”。startBtn.onclick = function(){
//设表先关
clearInterval(timer);
//设置定时器
timer = setInterval(function(){
nowleft += 2;
oDiv.style.left = nowleft + "px";
}, 20);
}所以解决办法,就是验收、拉回终点、停表:“拉终停表”var timer = setInterval(function(){
nowleft += 7;
if(nowleft > 600){
nowleft = 600;
clearInterval(timer);
}
oDiv.style.left = nowleft + "px";
console.log(nowleft);
},20);间隔时间是以毫秒为单位,1000毫秒就是1秒。“毫”就是千分之一,“厘”就是百分之一,“分”就是十分之一var obj = {
"name":"考拉",
"age" : 18
};
obj.sex = "刚变完性";for(var k in obj){
console.log(k + "的值是" + obj[k]); }Var t=new Date();Call apply////callback.call(elem);或者:callback.apply(elem);执行callback函数,并且让callback函数中的this关键字为elem。说白了apply、call功能是一样的,功能都是:让函数调用,并且给函数设置this是谁。function xianshixinxi(a,b,c){
console.log(this.name);
console.log(a + b + c);
}
xianshixinxi.call(obj,2,3,4);xianshixinxi.apply(obj,[2,3,4]);window.setTimeout(函数,时间);在指定时间之后,执行函数一次,仅仅执行1次。clearTimeout();function linear(t , b , c , d){
return c * t / d + b;
}
function easeIn(t,b,c,d){
return c * ( t /= d) * t + b;
}
function easeOut(t,b,c,d){
return -c *(t/=d)*(t-2) + b;
}他们的参数,都是t、b、c、d:第一个参数t表示当前帧编号第二个参数b表示起始位置第三个参数c表示变化量第四个参数d表示总帧数函数的返回值,就是t这一帧,元素应该在的位置。clearTimeout();
angularJS学习小结——filter
引言filter过滤器对于我们来说并不陌生,他和我们现实生活中的过滤器的意思差不多,它的作用就是接收一个输入的值,然后按照某个规则进行处理然后输出最后的结果,例如我们输入一个数字,然后我们需要得到货币形式的数据,这样我们就可以利用过滤器来实现,angularJS中的过滤器是非常简单的,分为内置和自定义两种,下面小编就简单的给大家介绍一些。内置过滤器ng内置了一些过滤器,它们是:currency(货币)、date(日期)、filter(子串匹配)、json(格式化json对象)、limitTo(限制个数)、lowercase(小写)、uppercase(大写)、number(数字)、orderBy(排序)。总共九种。除此之外还可以自定义过滤器,这个就强大了,可以满足任何要求的数据处理。下面来看一下他们的使用方法;1. currency (货币处理)使用currency可以将数字格式化为货币,默认是美元符号,你可以自己传入所需的符号,例如我传入人民币: {{num | currency : '¥'}} 2. date (日期格式化)原生的js对日期的格式化能力有限,ng提供的date过滤器基本可以满足一般的格式化要求。用法如下: {{date | date : 'yyyy-MM-dd hh:mm:ss EEEE'}}参数用来指定所要的格式,y M d h m s E 分别表示 年 月 日 时 分 秒 星期,你可以自由组合它们。也可以使用不同的个数来限制格式化的位数。另外参数也可以使用特定的描述性字符串,例如“shortTime”将会把时间格式为12:05 pm这样的。ng提供了八种描述性的字符串,个人觉得这些有点多余,我完全可以根据自己的意愿组合出想要的格式,不愿意去记这么多单词~3. filter(匹配子串)这个名叫filter的filter(不得不说这名字起的,真让人容易混淆——!)用来处理一个数组,然后可以过滤出含有某个子串的元素,作为一个子数组来返回。可以是字符串数组,也可以是对象数组。如果是对象数组,可以匹配属性的值。它接收一个参数,用来定义子串的匹配规则。下面举个例子说明一下参数的用法,我用现在特别火的几个孩子定义了一个数组:$scope.childrenArray = [
{name:'kimi',age:3},
{name:'cindy',age:4},
{name:'anglar',age:4},
{name:'shitou',age:6},
{name:'tiantian',age:5}
];
$scope.func = function(e){return e.age>4;}
{{ childrenArray | filter : 'a' }} //匹配属性值中含有a的
{{ childrenArray | filter : 4 }} //匹配属性值中含有4的
{{ childrenArray | filter : {name : 'i'} }} //参数是对象,匹配name属性中含有i的
{{childrenArray | filter : func }} //参数是函数,指定返回age>4的 4. json(格式化json对象)json过滤器可以把一个js对象格式化为json字符串,没有参数。这东西有什么用呢,我一般也不会在页面上输出一个json串啊,官网说它可以用来进行调试,嗯,是个不错的选择。或者,也可以用在js中使用,作用就和我们熟悉的JSON.stringify()一样。用法超级简单: {{ jsonTest | json}} 5. limitTo(限制数组长度或字符串长度)limitTo过滤器用来截取数组或字符串,接收一个参数用来指定截取的长度,如果参数是负值,则从数组尾部开始截取。个人觉得这个filter有点鸡肋,首先只能从数组或字符串的开头/尾部进行截取,其次,js原生的函数就可以代替它了,看看怎么用吧: {{ childrenArray | limitTo : 2 }} //将会显示数组中的前两项 6. lowercase(小写)把数据转化为全部小写。太简单了,不多解释。同样是很鸡肋的一个filter,没有参数,只能把整个字符串变为小写,不能指定字母。怎么用我都懒得写了。 7. uppercase(大写) 同上。 8. number(格式化数字)number过滤器可以为一个数字加上千位分割,像这样,123,456,789。同时接收一个参数,可以指定float类型保留几位小数:{{ num | number : 2 }}9. orderBy(排序)orderBy过滤器可以将一个数组中的元素进行排序,接收一个参数来指定排序规则,参数可以是一个字符串,表示以该属性名称进行排序。可以是一个函数,定义排序属性。还可以是一个数组,表示依次按数组中的属性值进行排序(若按第一项比较的值相等,再按第二项比较),还是拿上面的孩子数组举例:<div>{{ childrenArray | orderBy : 'age' }}</div> //按age属性值进行排序,若是-age,则倒序<div>{{ childrenArray | orderBy : orderFunc }}</div> //按照函数的返回值进行排序<div>{{ childrenArray | orderBy : ['age','name'] }}</div> //如果age相同,按照name进行排序内置的过滤器介绍完了,写的我都快睡着了。。。正如你所看到的,ng内置的过滤器也并不是万能的,事实上好多都比较鸡肋。更个性化的需求就需要我们来定义自己的过滤器了。自定义过滤器我们需要借助于module中的filter来定义一个函数,这个函数接收输入值,然后经过一系列的处理返回我们想要的结果,比如下面一个例子,实现返回数组中下标为奇数的值。app.filter('odditems',function(){
return function(inputArray){
var array = [];
for(var i=0;i<inputArray.length;i++){
if(i%2!==0){
array.push(inputArray[i]);
}
}
return array;
}
});格式就是这样,你的处理逻辑就写在内部的那个闭包函数中。你也可以让自己的过滤器接收参数,参数就定义在return的那个函数中,作为第二个参数,或者更多个参数也可以。过滤器的两种用法 1、在模板中使用filter我们可以直接在{{}}中使用filter,跟在表达式后面用 | 分割,语法如下:{{ expression | filter }}也可以多个filter连用,上一个filter的输出将作为下一个filter的输入(怪不得这货长的跟管道一个样。。){{ expression | filter1 | filter2 | ... }}filter可以接收参数,参数用 : 进行分割,如下:{{ expression | filter:argument1:argument2:... }}除了对{{}}中的数据进行格式化,我们还可以在指令中使用filter,例如先对数组array进行过滤处理,然后再循环输出:<span ng-repeat="a in array | filter ">2. 在controller和service中使用filter我们的js代码中也可以使用过滤器,方式就是我们熟悉的依赖注入,例如我要在controller中使用currency过滤器,只需将它注入到该controller中即可,代码如下:app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534);
}在模板中使用{{num}}就可以直接输出$123,534.00了!在服务中使用filter也是同样的道理。此时你可能会有疑惑,如果我要在controller中使用多个filter,难道要一个一个注入吗,这岂不太费劲了?小兄弟莫着急~ng提供了一个$filter服务可以来调用所需的filter,你只需注入一个$filter就够了,使用方法如下:app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
$scope.date = $filter('date')(new Date(),"yyyy-MM-dd hh:mm:ss EEEE");
}可以达到同样的效果。好处是你可以方便使用不同的filter了。小结以上是关于angularJS中过滤器的一些基本用法,都非常的简单,小编在这整理一下会印象深刻一些,filter的学习没有什么难的地方,到时候我们可以直接查询相关的文档就可以了。
大学生计算机基础题(十三)
嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲大学生计算机基础题,请一起学习吧。一、单选题1、Python中表达式4*0.5的值为( )数据类型。 A. int B. float C. bool D. complex参考答案B2、世界上第一台计算机产生于 A. 1942年 B. 1946年 C. 1958年 D. 1964年参考答案B3、我国第一台计算机产生于 A. 1942年 B. 1946年 C. 1958年 D. 1964年参考答案C4、第一代计算机使用的电子逻辑元件是 A. 晶体管 B. 集成电路 C. 电子管 D. 大规模集成电路参考答案C5、关于下面代码的叙述,正确的是哪一项?x=0while x<10: x=x+1 print(x) if x>3: break
A. 代码编译异常 B. 输出:0 1 2 C. 输出:1 2 3 D. 输出:1 2 3 4参考答案D6、汉字在计算机内部存储、处理、传输时,使用( )。 A. 机内码 B. 输入码 C. 字形码 D. 国标码参考答案A7、64×64点阵字库,需要( )Byte空间存放一个汉字的字形码。 A. 512 B. 1024 C. 64 D. 4096参考答案A8、下面不是视频文件格式的是:( ) A. MOV B. AVI C. JPEG D. DAT参考答案C9、假设有一个包含n个整数或者浮点数的列表listV,以下选项能输出listV中最大值的是( ) A. print(listV.max()) B. print(listV.pop(i)) C. print(max(listV)) D. print(listV.reverse(i))参考答案C10、计算机由于某种原因突然死机,重启后( )将全部丢失。 A. ROM和RAM中的信息 B. ROM中的信息 C. 硬盘中的信息 D. RAM中的信息参考答案D11、现代计算机中的总线不包括( )。 A. 地址总线 B. 数据总线 C. 控制总线 D. 快速总线参考答案D12、下面哪组设备包括输入设备、输出设备和存储设备( ) A. CRT、CPU、ROM B. 鼠标、绘图仪、光盘 C. 磁盘、鼠标、键盘 D. 磁带、打印机、激光印字机参考答案B13、以下程序的运行结果是?for s in "HelloWorld": if s=="W": breakprint(s,end="")A. HelloWorld B. W C. World D. Hello参考答案D14、有关windows7窗口的说法错误的是( ) A. 窗口标题栏中无最小化、关闭按钮 B. 窗口中有导航栏 C. 通过左侧导航栏,可以快速在不同盘间切换 D. 窗口中有状态栏参考答案A15、下面关于控制面板叙述错误的是()。 A. 控制面板是Windows对自身设置进行控制和管理的工具。 B. 控制面板既可以管理硬件,也可以管理软件。 C. 在“控制面板”窗口中,不能对系统的时间和日期进行修改。 D. 控制面板可以修改桌面的外观。参考答案C16、在使用计算机的过程中,如果遇到“死机”现象,可以使用( )组合键重新启动计算机。 A. Ctrl+Alt+Del B. Tab+Alt+Del C. Ctrl+Tab+Alt D. Shift+Del+Alt参考答案A17、在要求不高的网络中,传输介质一般采用( )。 A. 光纤 B. 同轴电缆或双绞线 C. 电话线 D. 普通电线参考答案B18、IEEE802协议基本覆盖OSI参考模型的( )。 A. 应用层与传输层 B. 应用层与网络层 C. 应用层与物理层 D. 物理层与数据链路层参考答案D19、以下选项,()在Python中是不合法的变量名。 A. _demo B. banana C. Num D. my-score参考答案D20、使用Python编写的程序文件的扩展名为()。 A. .docx B. .py C. .dat D. .msi参考答案B二、填空题1、Python语句a=[10,20,5],print(max(a))的输出结果是()。参考答案202、()栏位于窗口的底部,显示系统当前状态及有关信息。参考答案状态3、中文标点符号中的人民币符号“¥”对应的键盘上的键位是()。(写出相应的英文标点符号即可,不用带引号)参考答案$4、DNS域名后缀中的cn表示()。参考答案中国5、计算机病毒是一种人为制造的、具有破坏性的()。参考答案程序6、Python中,执行除法运算,但是返回的是余数而不是商的运算符是()。参考答案%7、在Python中,表达式9//2的值为()。参考答案48、微型机计算机对应的英文名称()。(用小写字母写)参考答案microcomputer9、第一代计算机使用的逻辑元器件主要是()。参考答案电子管10、程序设计的3种基本结构中,()结构按照语句的先后顺序执行程序。参考答案顺序11、十进制数转换成非十进制数,整数部分的转换是采用除以()取余数的方法。参考答案基数12、1个字节由( )个二进制位组成。 (用阿拉伯数表示)参考答案813、Python内置函数len()可以用来求字符串的()。参考答案长度14、按照总线上传输信息的不同,总线可以分为数据总线、()总线、控制总线。(写出汉字名称)参考答案地址15、在工作中,微型计算机的电源突然中断,计算机中()存储器中信息全部丢失。(写出字母缩写即可)参考答案RAM三、判断题1、计算思维是计算机的思维。参考答案错误2、Python中,变量内部允许有空格。参考答案错误3、Python中,常用于输出信息的语句函数是print()。参考答案正确4、微型计算机的体积虽小,但是性价比比较高。参考答案正确5、目前普遍使用的微型机的处理器字长都是128位。参考答案错误6、在Python中,既可以用单引号,也可以用双引号创建字符串。参考答案正确7、在Python中,表达式4/3的值为1。参考答案错误8、一个十六进制数可以直接转换为二进制数。参考答案正确9、小写字母的ASCII值比大写字母的ASCII值小。参考答案错误10、在Python选择和循环结构的判断条件中,等于被写成“==”。参考答案正确11、循环结构不能嵌套参考答案错误12、计算机系统加电时,应先给主机加电,后给外部设备加电。参考答案错误13、绘图仪可以用作计算机的输出设备。参考答案正确14、列表的元素用[]括起来。参考答案正确15、元组的元素用[]括起来。参考答案错误16、应用软件是指专门为某一应用目的而编制的软件。参考答案正确17、安装Windows 7 至少要求硬盘有16GB以上的可用空间。参考答案正确18、代码a=[4,5,6];print(a[1])的运行结果是5。参考答案正确19、FTP提供了因特网上任意两台计算机相互传输文件的机制,因此它是用户获得大量INTERNET资源的重要方法。参考答案正确20、在计算机网络中,一种传输介质不能传送多路信号。参考答案错误四、word操作题1、根据下列要求完成Word操作。(1) 将纸张大小设置为A4 (2) 将上边距设置为2厘米 (3) 将左边距设置为3厘米 (4) 将第1段复制到第3段的后面,成为一个新段落 (5) 将第2段首行缩进设置为2个字符。其他段落也首行设置2个字符。 (6) 将第2段段前间距设置为1行。 (7) 将页眉文字设置为:红楼梦简介 (8) 将第2段字体设置为隶书 (9) 将第2段字号大小设置为四号 (10) 在文档末尾插入图片,设置其高度5厘米,宽度72、根据下列要求Word完成操作。(1) 将上边距设置为3厘米 (2) 将第2段复制到第3段的后面,成为一个新段落 (3) 将第3段首行缩进设置为2个字符。其他段落也首行设置2个字符。 (4) 将第3段段前间距设置为1行。 (5) 将页眉文字设置为:计算思维 (6) 将第3段字体设置为楷体 (7) 将第3段文字加粗 (8) 将文档中所有的计算机替换为电脑 (9) 在文档末尾插入图片,设置其高度7厘米,宽度8 (10) 将第2段行间距设置为2倍行距。五、Excel操作题1、按下列要求完成Excel操作。(1) 将含有数据的工作表名称设置为学生入学成绩 (2) 合并单元格A17:F17 (3) 在合并后的单元格内输入文字:入学成绩 (4) 设置合并后单元格中文字水平对齐方式设置为居中,竖直对齐方式设置为居中 (5) 将工作表中所有数字设置格式:保留两位小数 (6) 为工作表中所有现有数字设置内边框和外表框 (7) 将文档最后一列,使用数学公式求平均 (8) 对工作表按照第七列进行排序六、Python编程题1、输入一个字符串,输出其中字母、数字、空格和其它字符各自的个数(分别占一行)。输入样例:ab#c 12!d3输出样例:4312
7-168 币值转换 (20 分)
7-168 币值转换 (20 分)输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。输入格式:输入在一行中给出一个不超过9位的非负整数。输出格式:在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。输入样例1:813227345输出样例1:iYbQdBcScWhQdBeSf输入样例2:6900输出样例2:gQjB#include<iostream>
//①从count开始后缀为0,不发声(但要警惕类似130/0000的,不要忘记补上“万”)
//②0只发零不带权值
//③中间连续的0只发一个音
//④不要忘记最小的个位数0
using namespace std;
int main (void){
int n;
cin>>n;
if(n==0){
cout<<'a';
return 0;
}
int s[9];
for(int i=0;i<9;i++)s[i]=-1;//数组统一赋初值
int flag=1;//标记末尾的0
int count=8;
//放入数组
for(int i=8;n;i--){
s[i]=n%10;
if(s[i]!=0&&flag==1){count=i;flag=0;}//从后往前第一次出现不是0的位
n=n/10;
}
int flag0=1;//检测是否有多个0
for(int i=0;i<=count;i++){
if(s[i]==-1)continue;
else if(s[i]==0&&i==4&&(s[1]>0||s[2]>0||s[3]>0)){cout<<'W';continue;}
//是0的情况,且是万位,而且不是类似100000001的情况,此时不发0只发W
switch(s[i]){
case 0:if(flag0)cout<<'a';break;
case 1:cout<<'b';break;
case 2:cout<<'c';break;
case 3:cout<<'d';break;
case 4:cout<<'e';break;
case 5:cout<<'f';break;
case 6:cout<<'g';break;
case 7:cout<<'h';break;
case 8:cout<<'i';break;
case 9:cout<<'j';break;
default:break;
}
if(s[i]!=0)//零处除了万其他时候权值不发音
switch(i){
case 0:cout<<'Y';break;
case 1:cout<<'Q';break;
case 2:cout<<'B';break;
case 3:cout<<'S';break;
case 4:cout<<'W';break;
case 5:cout<<'Q';break;
case 6:cout<<'B';break;
case 7:cout<<'S';break;
default:break;
}else if(s[i]==0)flag0=0;//如果这次是0,那么下次遇到零就不发音
}if(count>0&&count<4)cout<<'W';//最后给因为后缀是0而忽略万的数补上W
}
5、Java——循环案例代码详解(2)
案例一 输出100以内的所有素数,每行显示5个;并求和。 方法一:通过break结束不是素数的循环,来循环出所有素数,代码如下:public static void main(String[] args) {
int i, j;
int count = 0;
int sum = 0;
for (i = 2; i <= 100; i++) {
//for循环出小于i的数
for (j = 2; j < i; j++) {
if (i % j == 0)
//如果j能被i整除,则说明i不属于素数,break结束整个循环
break;
}
if (j >= i) {// 也可以写成j==i
System.out.print(i + " ");
sum += i;
count++;
if (count % 5 == 0) {
System.out.println();
}
}
}
System.out.println("100以内的所有素数之和为:" + sum);
} 方法二: 通过一个累加变量s,如果这个数除了1和它本身还有其它数能整除的话,s就会>2,只有当s=2,也就是只能被1和它本身整除的情况,才是素数。代码如下:public static void main(String[] args) {
// 23:输出100以内的所有素数,每行显示5个;并求和。
int s=0;
int court=0;
int sum=0;
for (int i = 2; i < 100; i++) {
s=0;
for (int j = 1; j <=i; j++) {
if(i%j==0){
s++;
}
}
if(s==2){
System.out.print(i+" ");
sum+=i;
court++;
if(court%5==0){
System.out.println();
}
}
}
System.out.println("\n100以内的所有素数之和:"+sum);
}案例二 A、B、C、D分别为0——9之间的整数,求出满足AB+CD=DA条件的数。 例如:90+09=99 方法一:解题思路,定义三个整数AB,CD和DA;其中十位的A,C,D存在为0零的情况,所以我定义了三个String类型的a0,b0,c0三个字符串数据,到时候做判断拼接一下即可,具体实现代码如下: public static void main(String[] args) {
//前缀0预定义
String a0,c0,d0;
int AB,CD,DA;
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int c = 0; c < 10; c++) {
for (int d = 0; d < 10; d++) {
AB=a*10+b;
CD=c*10+d;
DA=d*10+a;
if(AB+CD==DA){
if (a==0) {
a0="0";
}else{
a0="";
}
if (c==0) {
c0="0";
}else{
c0="";
}
if (d==0) {
d0="0";
}else{
d0="";
}
System.out.println(a0+AB+"+"+c0+CD+"="+d0+DA);
}
}
}
}
}
} 方法二:这个方法简单些,直接把满足条件的数字的个位和十位拆开,然后拼接实现。具体代码如下:public static void main(String[] args) {
//定义一个变量,用来统计满足条件的数的数量
int count = 0;
for (int a = 0; a < 10; a++) {
for (int b = 0; b < 10; b++) {
for (int c = 0; c < 10; c++) {
for (int d = 0; d < 10; d++) {
if (10 * a + b + 10 * c + d == 10 * d + a) {
System.out.println(a + "" + b + "+" + c + "" + d + "=" + d + a);
count++;
}
}
}
}
}
}案例三 随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么 实现代码如下:public static void main(String[] args) {
int ra = (int) (Math.random() * 10000);
System.out.println("随机产生的五位以内的数为:" + ra);
// 四位数
if (ra / 1000 > 0) {
System.out.println(ra + "共有四位,每位分别是:");
int g = ra % 10;
int s = ra / 10 % 10;
int b = ra / 100 % 10;
int q = ra / 1000;
System.out.print("个位:" + g + " 十位" + s + " 百位" + b + " 千位" + q);
}
// 三位数
else if (ra / 100 > 0) {
System.out.println(ra + "共有三位,每位分别是:");
int g = ra % 10;
int s = ra / 10 % 10;
int b = ra / 100;
System.out.print("个位:" + g + " 十位" + s + " 百位" + b);
}
// 二位数
else if (ra / 10 > 0) {
System.out.println(ra + "共有二位,每位分别是:");
int g = ra % 10;
int s = ra / 10;
System.out.print("个位:" + g + " 十位" + s);
}
// 一位数
else if (ra > 0) {
System.out.println(ra + "只有个位,个位数是:");
int g = ra % 10;
System.out.print(g);
}
}案例四 输出斐波那契数列数列的前20项 斐波那契数列特点: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”, 指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 规则:从第三个数开始,每一个数是前面两个数之和:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*) 方法一:用循环+数组的方式实现,代码如下public static void main(String[] args) {
System.out.println("输出斐波那契数列数列的前20项:");
//定义一个存放数列的数组
int[] fb=new int[21];
for (int i = 0; i < 20; i++) {
if(i==1||i==0){
fb[i]=i;
}
else{
fb[i]=fb[i-1]+fb[i-2];
}
System.out.println(fb[i]);
}
}
方法二,定义一个方法,用方法的方式实现,代码如下:
public static void main(String[] args) {
for (int counter = 0; counter <20; counter++) {
System.out.println(fibonacci(counter));
}
}
public static long fibonacci(long number) {
if ((number == 0) || (number == 1))
return number;
else
return fibonacci(number - 1) + fibonacci(number - 2);
}案例五 随机产生一个字符,判断:如果为大写字母则输出“大写字母”;如果为小写字母则输出“小写字母”;否则怎输出“其他字符”; 方法一:用char的方式直接判断,因为我们学过,char类型能直接当做int类型来用,实现代码如下:public static void main(String[] args) {
char zm=(char)(Math.random()*('z'-'A')+'A');
System.out.println(zm);
if(zm>='A'&&zm<='Z'){
System.out.println("大写字母");
}else if(zm>='a'&&zm<='z'){
System.out.println("小写字母");
}else{
System.out.println("其他字符");
}
}
方法二:将字母或者字符转化为整数类型的方式进行判断,代码如下:
/*
* a-z:97~122
* A~Z:65~90
*/
public static void main(String[] args) {
int num = (int) (Math.random() * 58 + 65);
if (num >= 65 && num <= 90) {
System.out.println("大写字母");
System.out.println((char) num);
} else if(num>=97&&num<=122) {
System.out.println("小写字母");
System.out.println((char) num);
}else{
System.out.println("其他字符");
System.out.println((char) num);
}
}案例六 用100元人民币兑换10元,5元,1元的纸币(每种都要有)共50张,计算有多少种兑换方案 注意:每一种都要有,说明至少一张1元,一张5元,一张10元,且他们总共的张数是50张 实现代码如下:public static void main(String[] args) {
int count = 0;
for(int i=1;i<=100;i++){
for (int j = 1; j <= 20; j++) {
for (int k = 1; k <= 10; k++) {
if(i+5*j+10*k==100&&i+j+k==50){
count++;
}
}
}
}
System.out.println("将100元兑换为1元、5元、10元的零钱的兑换方法有"+count+"种。");
}案例七 设计Java程序,假设有50瓶饮料,喝完3个空瓶可以换一瓶饮料,依次类推,请问总共喝了多少瓶饮料? 实现代码如下:public class Practice31 {
public static void main(String[] args) {
int drink = 50; // 饮料总数
int count = 0; // 兑换次数
while (true) {
drink -= 3; // 喝3瓶
drink++; // 兑换1瓶
count++; // 兑换次数+1
if (drink < 3) {
System.out.println("共喝了" + (50 + count) + "瓶");
break;
}
}
}
}