目录
题目描述
- 每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。
- 每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。
- 每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。
Python
Key Points
1.字符串的使用
- 字符串既可以使用单引号
''
,也可以使用双引号""
来创建。 - 使用
+
运算符来拼接字符串,并返回字符串拼接后的结果。
first_name = "Tom"
last_name = "Jerry"
full_name = first_name + " " + "and" + " " + last_name
# full_name 现在是 Tom and Jerry
- 通过索引访问(字符串的索引也是从0开始),并且都能进行遍历和切片操作。
str1 = "Hello"
# 使用正数索引访问字符串中的字符
first_char = str1[0] # 获取第一个字符 "H
last_char = str1[-1] # 获取最后一个字符 'o'
- 字符串遍历也是使用
for
循环
str1 = "Hello"
# 使用 for 循环遍历字符串中的字符
for char in str1:
print(char, end = " ")
# 输出结果:H e l l o
- 字符串的操作方法
len():
获取字符串的长度。-
my_string = "Hello,World!" length = len(my_string) # 返回 12
split():
将字符串分割成子字符串并返回一个列表,默认情况下,使用空格作为分隔符。
txt = "welcome to the jungle"
x = txt.split() #返回['welcome', 'to', 'the', 'jungle']
join():
将列表中的字符串连接成一个新的字符串,你可以指定连接符号,比如下面的示例。
persons = ["tom", "jerry", "mike"]
text = " ".join(persons)
# 将列表中的字符串以空格连接在一起,相当于split的反向操作,"tom jerry mike"
replace()
: 用于替换字符串中的指定子字符串。
str1 = "Hello, World!"
str2 = str1.replace("World", "Python") # 替换 "World" 为 "Python"
2.格式化小数
number = 3.1415926
# {}是一个占位符,输出结果时会将format()参数里的内容替换在{}中,:.2f 表示保留两位小数
formatted_number = "{:.2f}".format(number)
print(formatted_number)
3.字符串格式化输出
- 使用
%
操作符进行格式化
name = "张三"
age = 20
formatted_string = "姓名:%s, 年龄:%d " % (name, age)
print(formatted_string)
使用%
会将后面的变量name, age
一一对应插入到对应的占位符上,其中%s
表示字符串,%d
表示整数, %f
表示浮点数
- 字符串
format()
方法
name = "张三"
age = 20
formatted_string = "姓名:{}, 年龄:{}".format(name, age)
print(formatted_string)
format()
方法允许使用占位符{}
来插入值,并使用format()
方法的参数来提供要插入的值,和上面的操作符很类似。
f-字符串
name = "张三"
age = 20
formatted_string = f"姓名: {name},年龄:{age}"
print(formatted_string)
JAVA
Key Points
1.字符串的使用
- 声明和初始化
在 Java 中,你可以使用双引号直接创建字符串字面值( 字符串文字)来初始化字符串变量。
String name = "Hello, Java";
还可以使用new
的方式来创建一个字符串对象。
String message = new String("Hello");
- 字符串操作
Java 支持使用 +
运算符来连接字符串,返回字符串连接之后的结果
string s1 = "hello";
string s2 = "world";
string s3 = s1 + " " + s2; // 对字符串进行连接,拼接之后的字符串是"hello world", 中间加了空格
- 字符串长度
使用 length()
方法来获取字符串的长度
int len = s1.length(); // 字符串的长度即字符串中字符的个数,"hello"的长度为5
- 字符串比较
使用 equals()
方法来比较两个字符串的内容是否相等
String myStr1 = "Hello";
String myStr2 = "Hello";
String myStr3 = "Another String";
System.out.println(myStr1.equals(myStr2)); // Returns true because they are equal
System.out.println(myStr1.equals(myStr3)); // false
- 字符串索引
字符串中的字符可以通过索引访问,索引从 0 开始。
char c1 = s1.charAt(0);
- 字符串切割和拆分:
可以使用 split()
方法将一个字符串根据指定的分隔符拆分成字符串数组。
String[] parts = s3.split(" ") // 会将字符串根据空格拆分为多个部分
- 字符串格式化:
Java 提供了多种方式来格式化字符串,例如,使用 String.format()
方法或 printf()
方法。
String myStr = "Hello %s! One kilobyte is %,d bytes.";
String result = String.format(myStr, "World", 1024);
// Hello World! One kilobyte is 1,024 bytes.
此外,你还可以使用format()方法,它和printf()方法是等价的,都只需要一个格式化字符串,后面跟着参数,其中每个参数都对应一个格式说明符。
System.out.printf(format, args);
其中format
是一个字符串,用于指定输出的格式,args
是一个参数列表,包含了要插入到格式字符串中的值。常见的格式符号有%d(用于输出整数)
, %f(用于输出浮点数)
,%s(用于输出字符串)
, %n(用于输出换行符)
比如想要输出一个整数,format
部分要使用%d
, args
就是插入到格式符号部分的数值。
int num = 42;
System.out.printf("%d", num);
想要在Java中输出保留两位小数的数字,可以使用%.2f
这种格式
double number = 3.14159265359;
// 使用printf进行格式化输出,只保留两位小数
printf("%.2f\n", number);
- 字符串查找和替换:
可以使用 indexOf()
方法来查找字符串中某个子串的位置,还可以使用 replace()
方法来替换字符串中的部分内容。
String myStr = "Hello planet earth, you are a great planet.";
System.out.println(myStr.indexOf("planet"));
// 6
String myStr = "Hello";
System.out.println(myStr.replace('l', 'p'));
// Heppo
2.扩展:Switch-Case
其实除了if-else
之外,还有一种语句可以根据表达式的值执行不同的代码块。switch
语句将表达式的值与一系列可能的值进行比较,并根据匹配的情况执行相应的代码块,它的基本结构如下:
switch (expression) {
case value1:
// 与 value1 匹配时执行的代码
break;
case value2:
// 与 value2 匹配时执行的代码
break;
// 可以有多个 case 分支
default:
// 如果没有匹配的 case 分支,执行 default 分支
}
switch-case
是将switch
里面的表达式与case
一一作比对,如果符合时,则执行对应的代码,break
语句用于终止 switch
语句的执行。如果没有 break
,程序将会继续执行后续的 case
分支,直到遇到 break
或结束 。而default
用于处理没有匹配的情况,如果没有匹配的 case
分支,将执行 default
分支,相当于if-else
语句中的else
。
case
中不能使用变量,而不是一个确定的值