6-1 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10 分)

(34) 2024-04-07 16:01:02

文章目录

      • **6-1 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10 分)**
      • **6-2 jmu-python-函数-找钱 (10 分)**
      • **6-3 jmu-java&python-统计字符个数 (10 分)**
      • **6-4 缩写词 (10 分)**

6-1 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10 分)

读取若干个点,每个点放入元组。并将所有点的点信息、点的类型、点与原点的距离打印出来。

函数接口定义:

readPoint() #从一行以,分隔的数中读取坐标,放入元组并返回
distance(point) #计算point与原点的距离并返回,要math库中的函数

裁判测试程序样例:

/* 请在这里填写答案 */
n = int(input())
for i in range(n):
    p = readPoint()
    print('Point = {}, type = {}, distance = {:.3f}'.format(p,type(p),distance(p)))

输入格式:

输入n,代表底下要输入n行点坐标。坐标全部为整数。
点坐标x,y,z以,分隔。坐标全部为整数。

**注意:**坐标以,分隔,相应位置可能无字符或者包含多个空格字符,读入时按照0进行处理。

输出格式:

见输出样例

输入样例:

5
1,1,1
,,
2,,1
3,1,3
5,,

输出样例:

Point = (1, 1, 1), type = <class 'tuple'>, distance = 1.732
Point = (0, 0, 0), type = <class 'tuple'>, distance = 0.000
Point = (2, 0, 1), type = <class 'tuple'>, distance = 2.236
Point = (3, 1, 3), type = <class 'tuple'>, distance = 4.359
Point = (5, 0, 0), type = <class 'tuple'>, distance = 5.000

答案

def readPoint(): #从一行以,分隔的数中读取坐标,放入元组并返回
    tuples = []
    coordinates = input().split(',') 
    for i in coordinates:
# 若逗号间无数字则判定为0
        if i == '':
            tuples.append(0)
        else:
            tuples.append(int(i))
    return tuple(tuples)
    
def distance(point): #计算point与原点的距离并返回,要math库中的函数
# 用直角三角方程计算距离
    Sum = 0
    for i in point:
        Sum += i ** 2
    return Sum ** 0.5


6-2 jmu-python-函数-找钱 (10 分)

买单时,营业员要给用户找钱。营业员手里有10元、5元、1元(假设1元为最小单位)几种面额的钞票,其希望以
尽可能少(张数)的钞票将钱换给用户。比如,需要找给用户17元,那么其需要给用户1张10元,1张5元,2张1元。
而不是给用户17张1元或者3张5元与2张1元。

函数接口定义

giveChange(money) #money为要找的钱。经过计算,应按格式"要找的钱 = x*10 + y*5 + z*1"输出。

裁判测试程序样例

/* 请在这里填写答案 */
n =  int(input())
for i in range(n):
    giveChange(int(input()))

输入样例

5
109
17
10
3
0

输出样例

109 = 10*10 + 1*5 + 4*1
17 = 1*10 + 1*5 + 2*1
10 = 1*10 + 0*5 + 0*1
3 = 0*10 + 0*5 + 3*1
0 = 0*10 + 0*5 + 0*1

答案

def giveChange(money): #money为要找的钱。经过计算,应按格式"要找的钱 = x*10 + y*5 + z*1"输出。
    # Eg:15/10 = 1.5 int型省略了小数不需要用Math
    ten = int(money/10)
    # Eg:17%10 = 7 7/5=1.4 int型省略了小数
    five = int((money%10)/5)
    # Eg:17%10 = 7 7%5 = 2 int型省略了小数
    one = (money%10)%5
    print(f"{ 
     money} = { 
     ten}*10 + { 
     five}*5 + { 
     one}*1")

6-3 jmu-java&python-统计字符个数 (10 分)

编写程序统计1行字符串中:

  1. 不同字符的个数。
  2. 每种字符出现的次数。

函数接口定义

Freq(line) 

**函数功能:**该函数统计不同字符出现的次数,并最后按照字符升序进行输出。输出格式见输出样例。
**参数说明:**line为需要统计的字符串。

裁判测试程序样例

/* 请在这里填写答案 */
line = input()
Freq(line)

输入样例

abc 123 adex!!!

输出样例

11
  = 2
! = 3
1 = 1
2 = 1
3 = 1
a = 2
b = 1
c = 1
d = 1
e = 1
x = 1

答案

def Freq(line):
    result={ 
   }
    for i in line:
        if i in result:
            result[i]+=1
        else:
            result[i]=1
    result=list(result.items())
    print(len(result))
# 这里还是用sort好一点,程序判断的sorted好像导致超时,也有可能是下面的循环导致的超时,其实运行时间并没有太大变化
    result.sort(key=lambda item:item[0])
    for i in range(len(result)):
        words,num = result[i]
        print(f"{ 
     words} = { 
     num}")

6-4 缩写词 (10 分)

缩写词是由一个短语中每个单词的第一个字母组成,均为大写。例如,CPU是短语“central processing unit”的缩写。

函数接口定义:

acronym(phrase);
phrase是短语参数,返回短语的缩写词

裁判测试程序样例:

/* 请在这里填写答案 */

phrase=input()
print(acronym(phrase))

输入样例:

central  processing  unit

输出样例:

CPU

答案

# 思路:输入语句分出单词,创建一个字符串存储单词首字母,然后用upper()转为大写

def acronym(phrase):    #phrase是短语参数,返回短语的缩写词
    lists=''
    newPhrase=phrase.split()
    for i in newPhrase:
        lists += i[0]
    lists = lists.upper()
    return lists

南陵水面漫悠悠,风紧云轻欲变秋。

THE END

发表回复