字符串课后作业
python 字符串题

以下是一个Python 字符串的题目:
题目:将一个字符串中的所有字符按照其出现次数进行排序,并返回排序后的字符串。
示例:
输入: "abcaabb"
输出: "abc"
实现思路:
1.遍历字符串,统计每个字符的出现次数。
2.将字符和出现次数作为键值对存储在字典中。
3.按照字符的出现次数对字典进行排序。
4.根据排序后的字典顺序重新构建字符串。
下面是Python 代码实现:
python复制代码
def sort_string(s):
# 统计每个字符的出现次数并存储在字典中
char_count = {}
for char in s:
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
# 按照字符的出现次数对字典进行排序
sorted_chars = sorted(char_count.items(), key=lambda x: x[1])
# 根据排序后的字典顺序重新构建字符串
sorted_string = ""
for char, count in sorted_chars:
sorted_string += char * count
return sorted_string
示例输出:
python复制代码
print(sort_string("abcaabb")) # 输出 "abc"。
Python字符串练习题

Python字符串练习题1.输⼊⼀个⽉份数字,返回对应⽉份名称,此问题的IPO模式是:输⼊:输⼊⼀个表⽰⽉份的数字(1-12)处理:利⽤字符串基本操作实现该功能输出:输出对应的⽉份名称代码:#实例.pymonth="⼀⽉份⼆⽉份三⽉份四⽉份五⽉份六⽉份七⽉份⼋⽉份九⽉份⼗⽉份⼗⼀⽉⼗⼆⽉"for i in range(12): #插⼊循环,可循环12次n=eval(input("请输⼊你要转换的⽉份(1-12):")) pos=(n-1)*3 print("{}⽉份是{}".format(n,month[pos:pos+3]))运⾏结果:2.天天向上续。
尽管每天坚持,但⼈的发展能⼒并不是⽆限的,它符合特定模型。
假设能⼒增长符合如带有平台期的模型:以7天为周期,连续学习三天能⼒值不变,从第4天开始⾄第7天每天能⼒增长为前⼀天的1%。
如果七天中有⼀天间断学习,则周期从头计算。
请编写程序回答,如果初始能⼒值为1,连续学习365天后能⼒值是多少?代码:#3.2.pyx=1y=0.01a='asistent'b='giveup'temp=1state='asistent'for i in range(365):if state == a and (temp in [1,2,3]):x=xtemp = (temp + 1)%7elif state == a and (temp in [0,4,5,6]):x=x*(1+y)temp = (temp + 1)%7elif state == unstudy:temp = 0print("365天后的能⼒值为:{:.2f}".format(x))执⾏结果:3.回⽂数判断。
设n是⼀任意⾃然数,如果n的各位数字反向排列所得⾃然数与n相等,则n被称为回⽂数。
字符串答案

2. 改错题:错误:if(('A'<=tt[i]||(tt[i]<= 'Z')正确:if((tt[i]>= 'A')&&(tt[i]<= 'Z'))【解析】从ASCII码表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32。
将字符串中的大写字母改为小写字母的方法是,从字符串第1个字符开始,根据ASCII码值判断该字母是不是大写字母,若是,则ASCII码值加32即可;重复执行以上过程直至字符串尾。
本题可利用条件选择语句和循环语句来实现。
3. 编程题void fun(char *ss){int i; for(i=0;ss[i]!='\0';i++) /*将ss所指2. 改错题(1)错误:void fun(char s[],int n)正确:void fun(char *s,int n)(2)错误:s=p;正确:p=s;(3)错误:i++;正确:i++;p++;(4)错误:a[i]=0;正确:a[i]= '\0';【解析】在本题中,s是数组名,代表数组首地址,在编译时对s数组分配了一段内存单元,因此在程序运行期间s是一个常量,不能再被赋值。
因此s=p是错误的,如果把"char s[];"改成"char *s;",则程序正确。
此时s是指向字符数组的指针变量,p=s是合法的,它将字符串的首地址赋给指针变量p,然后在printf函数语句中输出字符串s。
因此,应当弄清楚字符数组与字符指针变量用法的区别。
3. 编程题char *fun(char *s, char *t){int i,j;for(i=0;s[i]!= '\0';i++); /*求字符串的长度*/for(j=0;t[j]!= '\0';j++); if(i>=j) /*比较两个字符串的长度*/return s;2. 改错题(1)错误:if(*r==*p) {r++;p++}正确:if(*r==*p) {r++;p++ ; }(2)错误:if(r=='\0')正确:if( *r=='\0')【解析】从字符串s中找出子串t的方法是:从第一个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符和t串的字符不对应相同,则继续对下一个字符进行处理。
java字符串处理选择题附加答案解析

Java 字符串选择题附加答案解析1. 下列关于Java字符串的描述中,错误的是:A. 字符串是不可变的。
B. 字符串可以通过字符数组来初始化。
C. 字符串可以用’+’操作符连接。
D. 字符串可以被修改。
答案: D。
解析:Java字符串是不可变的,一旦创建就不能修改。
2. 给定以下Java代码片段:javaString str = "Hello, World!";变量’str’的值是:A. nullB. "Hello, World!"C. "Hello"D. "World!"答案: B。
解析:’str’被初始化为字符串字面量"Hello, World!"。
3. 给定以下Java代码片段:javaString str = "Hello";表达式’str.length()’的值是:A. 4B. 5C. 6D. 7答案: B。
解析:’str.length()’返回字符串’str’的长度,这里是5。
4. 给定以下Java代码片段:javaString str1 = "Hello";String str2 = "World";String result = str1 + ", " + str2 + "!";变量’result’的值是:A. "Hello World"B. "Hello, World"C. "Hello, World!"D. "HelloWorld!"答案: C。
解析:字符串’result’连接了’str1’、", "、’str2’和"!",其值为"Hello, World!"。
字符串习题!9

1、笨小猴(08年提高组第1题)(word.pas/c/cpp)【问题描述】笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。
但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn 是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小猴就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
【输入】输入文件word.in只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
【输出】输出文件word.out共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0。
【输入输出样例1】单词error中出现最多的字母r出现了3次,出现次数最少的字母出现了1次,3-1=2,2是质数。
【输入输出样例2】单词olympic中出现最多的字母i出现了2次,出现次数最少的字母出现了1次,2-1=1,1不是质数。
2.ISBN号码(08年普及组第1题)(isbn.pas/c/cpp)【问题描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。
ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。
识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。
小甲鱼Python第014讲字符串:各种奇葩的内置方法课后测试题及参考答案

⼩甲鱼Python第014讲字符串:各种奇葩的内置⽅法课后测试题及参考答案测试题:0. 还记得如何定义⼀个跨越多⾏的字符串吗(请⾄少写出两种实现的⽅法)?1#⽅法⼀:使⽤三个单引号2 str = '''wqeyiwyyeri,wrqre3qereqerqr4rqrqereq5qerqrqre6'''7print(str)89#⽅法⼆:在⼩括号中使⽤单引号或者双引号,后⾯⽤换⾏符“\n”10 str1 = (11'riuqiurieu\n'12'fhdjhfjdshk,\n'13"hfjkhsdjhfjskh\n"14 )15print(str1)1. 三引号字符串通常我们⽤于做什么使⽤? 三引号字符串在不赋值的情况下,通常当作跨⾏注释使⽤,例如:1'''这个在打印的时候看不到,主要可以⽤在代码编写过程的注释的作⽤。
2这样说,应该差不多。
3嗯哼~4'''5print(1) 我们只需要使⽤原始字符串操作符(R或r)即可:1#‘r’表⽰按照原始字符串进⾏查找即可。
2 file1 = open(r'C:\windows\temp\readme.txt', 'r')3. 有字符串:str1 = '<a href="/dvd" target="_blank">鱼C资源打包</a>',请问如何提取出⼦字符串:'' 使⽤分⽚的⽅法:1 str1 = '<a href="/dvd" target="_blank">'2#str1[16]=w,str1[28]=m3 str2 = str1[16:29]4print(str2)4. 如果使⽤负数作为索引值进⾏分⽚操作,按照第三题的要求你能够正确⽬测出结果吗?ok! try it .1 str1 = '<a href="/dvd" target="_blank">'2 str2 = str1[16:29]3 lenght = len(str1)4print(lenght)5 str3 = str1[16-51:29-51]6print(str2)7print(str3)5. 还是第三题那个字符串,请问下边语句会显⽰什么内容?1. >>> str1[20:-36]复制代码 会显⽰:空6. 据说只有智商⾼于150的鱼油才能解开这个字符串(还原为有意义的字符串): str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'我可能是个“傻⼦”猜测肯定是哪个 i love 动动⼿:0. 请写⼀个密码安全性检查的代码:check.py# 密码安全性检查代码## 低级密码要求:# 1. 密码由单纯的数字或字母组成# 2. 密码长度⼩于等于8位## 中级密码要求:# 1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)任意两种组合# 2. 密码长度不能低于8位## ⾼级密码要求:# 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合# 2. 密码只能由字母开头# 3. 密码长度不能低于16位程序演⽰: 到⽬前为⽌,得到的最OK的代码,可能有点繁琐,也不知道应该怎样简化和完善,有看到的朋友可以给出⾃⼰的意见和想法哟~ 1#密码安全性检查 check.py2 password = input("请输⼊需要检查的密码组合:")3 lenght = len(password)4 symbols = r'''~!@#$%^&*_=-/,.?<>;:[]{}|\()'''5 alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'6 numbers = "0123456789"7 temp1 = '''⾼级密码要求:8 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合9 2. 密码只能由字母开头10 3. 密码长度不能低于16位11'''12 temp2 = '''\t您的密码安全级别评定为:'''13 temp3 ="请继续保持"14 require = '''\t低级密码要求:由单纯的数字或字母组成,长度⼩于等于8位;15中级密码要求:由数字、字母或特殊字符任意两种组合,密码长度不能低于8位16⾼级密码要求:由数字、字母及特殊字符三种组合,密码只能由字母开头,密码长度不能低于16位17'''18 i=019#检查password中组成元素:20while 1:21for each in password:22if each in symbols:23 i +=124break25for each in password:26if each in alphabet:27 i +=128break29for each in password:30if each in numbers:31 i +=132break3334def low_password( ):35 result = temp2 +"低"36print(result)37print(temp1)38def mid_password( ):39 result = temp2 +"中"40print(result)41print(temp1)42def high_password( ):43 result = temp2 +"⾼"44print(result)45print(temp3)46while (password.isspace() or lenght == 0):47 password =input( "\t密码输⼊错误,原因:空格或未输⼊。
7-4课后练习参考答案

实验7-4指针与字符数组【实验目的】1.掌握字符指针和字符型变量之间的关系2.掌握字符指针与字符串的关系3.掌握字符指针与字符数组之间的关系【课后练习】一、选择题1.下面不正确的字符串赋值或初始化语句是。
A.char * str; str = ”string”;B.char str[7]={…s‟, …t‟, …r‟, …i‟, …n‟, …g‟};C.char str[10]; str=”string”;D.char str1[]=”string”, str2[20]; strcpy(str2, str1);2.已知char b[5], *p=b; 则正确的赋值语句是。
A.b=”abcd”; B.*b=”abcd”; C.p=”abcd”; D.*p=”abcd”;3.若已有声明char s[20]=”programming”, *ps=s; 则不能引用字母‟o‟的表达式的是。
A.ps+2 B. s[2] C. ps[2] D. ps+=2; *ps4.已知:char c[8]=”beijing”, *s=c; int i; 则下面的输出语句中错误的是。
A.printf(“%s\n”, s); B. printf(“%s\n”, *s);C. for(i=0; i<7; i++)D. for(i=0; i<7; i++)printf(“%c”, c[i]); printf(“%c”, s[i]);5.已知char s[10], *p=s; 则在下列语句中,错误的语句是。
A.p=s+5; B. s=p+s; C. s[2]=p[4]; D. *p=s[0]; 6.下面判断正确的是。
A.char * a=”china”; 等价于char *a; *a=”china”;B.char str[10]={“china”};等价于char str[10]; str[]={“china”};C.char *s =”china”; 等价于char *s; s=”china”;D.char c[4]=”abc”, d[4]=”abc”; 等价于char c[4]=d[4]=”abc”;7.下面能够正确进行字符串赋值操作的是:。
1.7编程基础之字符串(30题)

01:统计数字字符个数∙∙提交∙统计∙提问总时间限制:1000ms内存限制:65536kB描述输入一行字符,统计出其中数字字符的个数。
输入一行字符串,总长度不超过255。
输出输出为1行,输出字符串里面数字字符的个数。
来源习题(7-1) 医学部2010 期末试题樊波02:找第一个只出现一次的字符∙∙提交∙统计∙提问总时间限制:1000ms内存限制:65536kB描述给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。
如果没有,输出no。
输入一个字符串,长度小于100000。
输出输出第一个仅出现一次的字符,若没有则输出no。
03:基因相关性∙∙提交∙统计∙提问总时间限制:1000ms内存限制:65536kB描述为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。
首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。
接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出若两条DNA序列相关,则输出“yes”,否则输出“no”。
04:石头剪子布描述石头剪子布,是一种猜拳游戏。
起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。
简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比拼运气,多回合玩法比拼心理博弈,使得石头剪子布这个古老的游戏同时用于“意外”与“技术”两种特性,深受世界人民喜爱。
游戏规则:石头打剪刀,布包石头,剪刀剪布。
现在,需要你写一个程序来判断石头剪子布游戏的结果。
输入输入包括N+1行:第一行是一个整数N,表示一共进行了N次游戏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、简答题
1、根据你的理解,简要说明使用双等号(==)和equals()方法判断两个字符串是否相等有什么区别
2、输入五种水果的英文名字(例如葡萄grape、橘子orange、香蕉banana、苹果apple、桃peach),编写一个程序,输出这些水果的名称(按照在字典里的先后顺序输出),运行结果如图所示
String s1 = new String(“-”);
String s2 = “abc”;
Double a = 8.98;
If(s2.equals(“Abc”)){
S1 = s1 + “.e1”;
}else{
S1 = s1 + “.e2”;
}
If(s2.lenght() == 2){
S1 = s1 + “.e3”
使用Arrays类的Sort方法对字符串数组中的元素进行排序
3、中国人的姓都是单个字,请随机输入一个人的Βιβλιοθήκη 名,然后输出姓和名,运行结果如图所示
使用String类的方法提取字符
4、编写一个字符浏览器,输入字符串以及需要查看的字符或字符串,浏览器自动定位所有出现该字符或字符串的位置,运行结果如图所示
查找匹配的字符和查找匹配的字符串所使用的方法不同
StringBuffer myFavor = “足球”; //3
showFavor(StringBuffer myFavor); //4
}
}
a)无
b)第1行
c)第3行和第4行
d)第2行和第3行
4、阅读下面代码段,输出结果中包含()字符串
Public class Demo{
Public static void main(String[] args){
2、运行下面的程序段,输出结果是(A)。
Strings1 = new String(“abc”);
StringBuffer s2 = new StringBuffer(“abc”);
S2.append(s1);
S1.concat(“abc”);
System.out.println(s1);
a)Abc
5、对录入的信息进行有效性验证。
录入会员生日时,形式必须是‘月、日‘,例如’09/12’,录入的密码位数必须在6位到10位之间。允许用户重复录入,直到输入正确为止,如图所示
检查生日有效性方法
If(date.indexOf(‘/’)!=2){
//提示生日形式输入错误
}else{
//输出录入的会员生日
}
字符串课后练习
一、选择题
1、运行下列程序段,S2的结果是(C)。
String s1 = new String(“abc”);
String s2 = “ef”;
S2 = s1.toUpperCase().concat(s2);
S2 = s2.substring(2,4);
a)Cef
b)cef
c)Ce
d)BCe
b)Abcabc
c)编译错误
d)Abcabcabc
3、阅读下面代码段,错误代码段是()。
Public class Demo{
Public void showFavor(StringBuffer thing){ //1
System.out.println(thing); //2
}
Public static void main(String[] args){
}
If(a <= 8){
S1 = s1 + “e4”;
}
System.out.println(s1);
}
}
a)-.e4
b)-.e1.e3
c)-.e2.e3
d)-.e1
5、下列关于字符串的叙述中错误的是()。(选两项)
a)字符串是对象
b)String对象储存字符串的效率比StringBrffer高
c)可以使用StringBtffer sb = “这里是字符串“声明并初始化StringBuffer对象sb
检查录入的密码的方法
If(password.length() < 6 || password.length() > 10){
//提示密码不符合要求
}else{
//显示该会员的密码
}