在此用来复习老师布置的PTA题目,以此记录。
一、PTA题目集
1、统计单词的个数
输入格式:
在一行中输入字符
输出格式:
在一行中输出单词的数量
输入样例:
Let's go to room 209
输出样例:
count = 5
代码样例
nub=input().split() #将输入的语句按空格分隔开
count=0;
for i in nub:
count=count+1
print("count = {}".format(count))
总结
(1)split
通过指定分隔符对字符串进行切片,并返回分割后的字符串列表;默认以空格分割,string.split('.')以.分割,string.split(',')以,分割;
(2)for循环
按照in后面每一段以空格隔开之后的语句进行
(3)format语句
通常与print语句一起进行,{}在print语句的“”双引号或''单引号中中;
表示这个位置预定,要写代码中变量的值,双引号的后面接 . 点,用format表示要进行放进去的变量;
精度表示:
如果精度有规定,就在{}里面写,例如{:.2f},保留两位小数
指定位置书写:
list1 = ['1','2']
list2 = ['3','4']
print(' {0[1]}{1[1]} {0[0]} to {1[0]}'.format(list1,list2))
#format括号里面也是按照类似数组的形式进行
#{0}表示format里面的第一个值,{0[1]}表示第一个位置中列表第一个值
#显示:2413
百分比格式:
'{:.2%}'.format(0.1234)
'12.34%'
直接写:
print(f"名字是:{name},整数是:{n}") #用print语句输出时,直接在{}中写变量的值
2、多说几遍我爱你
母亲节到啦,张大宝想对妈妈说好多遍“妈妈我爱你我爱你我爱你”,可是二宝不愿意了,要求大宝也对她说好多遍我爱你,你能帮大宝编写这样的程序么?。
输入格式:
在一行内输入:一个名字name和一个整数n,中间以空格隔开。
输出格式:
在一行内输出:name,n遍我爱你
输入样例:
在这里给出一组输入。例如:
妈妈 5
输出样例:
在这里给出相应的输出。例如:
妈妈我爱你我爱你我爱你我爱你我爱你
代码1
s1,s2=input().split()
s2=int(s2) #强制转换噢噢噢噢一定不能错噢噢噢噢 不是s2=(int)s2
# print(s1)
# for i in range(s2):
# print('我爱你')
print(s1+"我爱你"*s2)
#直接写,print里面可以进行符号运算
代码2
s1,s2=input().split()
s2=int(s2)#强制转换噢噢噢噢一定不能错噢噢噢噢
print(s1,end="") #print后面默认是加一个换行符,不要换行符时用end参数指定结束符
for i in range(s2):
print('我爱你',end="")
总结
(1)for语句用法
在python中,它允许你遍历任何序列(如列表、元组或字符串)或其他可迭代对象(如字典的键、集合、文件对象等)
for 变量 in 可迭代对象:
# 循环体
# 执行语句
这里,变量在每次循环迭代时会被赋予可迭代对象中的下一个元素的值,直到遍历完所有元素。
遍历列表
举个例子,比如:
fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
print(fruit)
输出结果是:
apple
banana
cherry
遍历字符串
s = "hello"
for t in s:
print(t)
输出结果:
h
e
l
l
o
遍历字典的键
person = {'name': 'John', 'age': 30, 'city': 'New York'}
for key in person:
print(key)
输出结果:
name
age
city
遍历字典的键和值
for key, value in person.items():
print(key, value)
输出结果:
name John
age 30
city New York
使用range()函数
range()
函数生成一个数字序列,常用于for
循环中
for i in range(5): # 默认从0开始,到5结束(不包括5),步长为1
print(i)
输出结果:
0
1
2
3
4
指定起始值、结束值和步长:
for i in range(1, 6, 2): # 从1开始,到6结束(不包括6),步长为2
print(i)
输出结果:
1
3
5
嵌套for循环
for
循环可以嵌套使用,即在一个for
循环的循环体内部再使用一个或多个for
循环。
for i in range(3):
for j in range(3):
print(f"({i}, {j})")
注意:
for语句in后面的语句如果不添加range:表示在in后面的语句中一个个打印出来,此时print括号里面只能是in之前的变量
for语句in后面的语句添加range时:表示一个次数n,print条件里面可以打任意语句,这个次数会被循环打印n遍
(2)print用法
第一种用法:直接输出
在python中,print每个语句后面默认加一个换行符;
print("Hello, Python!")
屏幕上显示:
Hello, Python!
第二种:打印多个值
你可以一次性打印多个值,这些值之间默认用空格分隔
print("Hello", "Python", "!")
屏幕上显示:
Hello Python !
当然,还可以使用 sep
参数来指定多个值之间的分隔符
print("Hello", "Python", "!", sep="-")
屏幕上显示:
Hello-Python-!
第三种:格式化输出
格式化输出时,有%
操作符(旧式)和 .format()
和 f-string(Python 3.6+)
使用 %
操作符:
name="Bob"
age=17
print("My name is %s and I am %d years old."%(name,age))
屏幕显示:
My name is Bob and I am 17 years old.
使用 .format()
方法:
name = "Bob"
age = 25
print("My name is {} and I am {} years old.".format(name, age))
屏幕显示:
My name is Bob and I am 17 years old.
使用 f-string(Python 3.6+):
name = "Bob"
age = 17
print(f"My name is {name} and I am {age} years old.")
屏幕显示:
My name is Bob and I am 17 years old.
第四种:不换行打印
默认情况下,print()
函数会在输出结束后添加一个换行符。如果不想换行,可以使用 end
参数来指定结束符,比如设置为空字符串 ""
print("Hello,", end="")
print("Python!")
屏幕显示:
Hello,Python!
3、求圆周长和面积
已知一个圆的半径,计算该圆的周长和面积,结果保留2位小数。半径用实数表示,由键盘输入。设圆周率等于3.14159。
输入格式:
输入在一行中给出1个实数r,表示圆的半径。
输出格式:
在一行中输出圆的周长和面积,结果保留2位小数。数据之间留一个空格。
输入样例:
3
输出样例:
18.85 28.27
代码1
r=float(input())
pi=3.14159
zhou=2*pi*r
mian=pi*r*r
#以下print显示选择其中一个即可
print("{0:.2f} {1:.2f}".format(zhou,mian))
#或者
print("{:.2f} {:.2f}".format(zhou,mian))
#中间可以加空格也可以加字符串等等,只是代表{}里面的数值按某种格式显示
代码2
r=float(input())
pi=3.14159
zhou=2*pi*r
mian=pi*r*r
print(f"{zhou:.2f} {mian:.2f}")
#中间可以加空格也可以加字符串等等,只是代表{}里面的数值按某种格式显示
屏幕显示:
2
12.57 12.57
总结
print打印时,不论是以f格式还是format格式,“”双引号里面都可以写字符及其他类型的内容,只是说用{}括起来的里面以某种格式限制而已
4、重要的事情说N遍
对重要的事情,阿福老师会反复说N多遍。
提示:用字符串 * 和 +
输入格式:
输入包含2行,第一行是阿福要重复说多遍的一句话,也就是阿福想强调的重要事情;第2行为一个整数N(0<N<10)
输出格式:
将阿福要强调的重要事情,反复输出N遍,具体格式参见样例。
输入样例:
Go
3
输出样例:
Go!Go!Go!
代码:
s=input()
n=int(input())
print((s+'!')*n)
屏幕显示:
Go!Go!Go!
总结:
print里面可以用双括号
5、统计输入字符串中的单词个数及单词的平均长度
编写一个程序,接受用户输入的一行英文句子(假设该句子仅由英文单词及空格构成,不包括逗号等符号),统计并输出该行句子包含的单词个数及单词的平均长度。
输入格式:
单词1 单词2 .... 单词n
输出格式:
单词个数,单词平均长度(保留两位小数)
输入样例:
aaa bbb ccccccccccc
输出样例:
3,5.67
代码
s=input().split()
count=len(s)
sum=0
for i in s:
sum=sum+len(i)
avg=float(sum/count)
print(f"{len(s)},{avg:.2f}")
屏幕显示:
3,5.67
总结
len的用法:用来获得容器中元素的数量
这里的“容器”可以是字符串(string)、列表(list)、元组(tuple)、字典(dictionary)、集合(set)、范围对象(range)等任何可迭代对象。len()
函数返回的是一个整数,表示容器中元素的数量
# 字符串
s = "hello"
print(len(s)) # 输出: 5
# 列表
l = [1, 2, 3, 4, 5]
print(len(l)) # 输出: 5
# 元组
t = (1, 2, 3)
print(len(t)) # 输出: 3
# 字典
d = {'a': 1, 'b': 2, 'c': 3}
print(len(d)) # 输出: 3
# 集合
set_example = {1, 2, 3, 4}
print(len(set_example)) # 输出: 4
# 范围对象
r = range(10)
print(len(r)) # 输出: 10
6、橡皮泥
将两块球形橡皮泥揉在一起,捏成一个正方体。请编程,完成下述功能:
- 从键盘读入第1个球形橡皮泥的直径,该直径为浮点数;
- 从键盘读入第2个球形橡皮泥的直径,该直径仍为浮点数;
- 求正方体的边长,并保留两位小数输出;
输入格式:
第一个球的直径
第二个球的直径
输出格式:
请参考输出样例。
输入样例:
3.2
5.553
输出样例:
正方体边长为:4.74.
提示:圆球的体积 V = 4/3 * π r3
代码
import math
a1=float(input())
a2=float(input())
# pi=3.14159
v1=(4/3)*math.pi*((a1/2)**3)
v2=(4/3)*math.pi*((a2/2)**3)
V=v1+v2
l=pow(V,1/3)
print(f"正方体边长为:{l:.2f}.")
屏幕显示:
正方体边长为:4.74.
总结
pow的用法:在Python中,pow()
函数用于计算一个数的幂,即一个数的指数次幂。
# 计算2的3次方
result = pow(2, 3)
print(result) # 输出: 8
这个函数可以接受两个或三个参数,其基本语法如下:
pow(x, y[, z])
-
x
:基数(底数)。 -
y
:指数。 -
z
(可选):模数。如果提供了这个参数,函数会计算(x**y) % z
,这在某些算法中非常有用,比如计算大数的幂模运算时,可以避免直接计算大数幂可能导致的溢出问题。
使用模数举例
# 计算(2**10) % 3
result = pow(2, 10, 3)
print(result) # 输出: 1
7、计算 21+22+23+...+m
输入一个正整数m(30<=m<=100),计算表达式 21+22+23+...+m 的值。
输入格式:
在一行输入一个正整数m
输出格式:
在一行中按照格式“sum = S”输出对应的和S
输入样例:
在这里给出一组输入。例如:
90
输出样例:
在这里给出相应的输出。例如:
sum = 3885
代码
n=int(input())
sum=0
for i in range(21,n+1):
sum=sum+i
print(f"sum = {sum}")
打印换成这两种也可以:
print("sum = {}".format(sum))
print("sum = %d" %(sum))
屏幕显示:
sum = 3885
总结
- for语句中是把in后面的值赋值到前面的i中
- print中除了f之外的其他两种打印方法