这里记录的是python的解法,并选几个当时比较棘手的记录下来。
使用 python 的习惯是输入
之后使用回车再输入
,这里的要求是一行,使用空格隔开
。
input()
输入的是字符串,我们可以借助.split()
方法将字符串分割转换为为列表,再用map()
函数进行类型转换并依次赋值
。
a,b = map(int,input().split())
print(a+b)
KR:python 空格间隔的输入。
使用 python 的格式化输出
,占位符
设置好 8 个宽度,一般语言都 默认右对齐
(左对齐加个短横:-%d
),按照思路代码如下:
'''方案一:'''
a,b,c = map(int,input().split())
print("%8d %8d %8d"%(a,b,c))
'''方案二:'''
a,b,c = map(int,input().split())
print("{:8d} {:8d} {:8d}".format(a,b,c))
Python 从2.6版本开始新增格式化字符串的函数 str.format()
KR:python 的格式化输出。
如果是把结果挨个打印输出,这显然是没有必要做笔记的。我们往往采用的是循环结构
。
需要对每一行输出结果分析计算一下,也就是计算等差数列
。使用 python 的print()
结尾默认换行,因此需要传参end=""
更改一下。
此外,python 还可以通过字符串的乘法以输出更多的字符。
代码如下:
'''方案一:'''
base,height= 5,3 #可根据情况灵活更改
a = input()
for i in range(height):
for m in range(height-1-i): # 每行空格数 == 循环次数
print(" ",end = "")
for n in range(2*i+1): # 每行字符数 == 循环次数
print(a,end = "")
print() #一层(行)结束,换行
'''方案二'''
base,height= 5,3 #可根据情况灵活更改
a = input()
for i in range(height):
print(" "*(height-i-1),end="") # 每行空格数
print(a*(2*i+1),end="") # 每行字符数
print()
注意“计算机”的习惯:
1.范围从0开始
2.区间左闭右开。
python 输出百分号采用%%
占位符,此外,百分数部分时小数的100倍。
num_cfm = int(input())
deaths = int(input())
print("%.3f%%"%(deaths/num_cfm*100))
python 使用函数进行转换。
print("%d"%ord(input().strip())) #字符转数字
print(chr(int(input())).strip()) #数字转字符
使用
strip()
是为了去出前后存在的空格,(可能因为python的变量存储方式比较特殊,从而导致编译结果不一致)
题中的分配方法一直重复,因此考虑使用循环结构
。
为了方便对大量数据的操作,考虑使用序列结构
(这里使用列表),而在使用数组或列表时,需要考虑越界的情况。
变量更新使用赋值运算符
时,要时刻注意变量的变化,以调整代码的先后顺序。
# 以列表的的形式存储输入值
info = list(map(int,input().split()))
sum = 0
#分配过程
for i in range(len(info)):
sum += info[i] % 3
info[i] = info[i]//3
info[i-len(info)+1] += info[i]
info[i-1] += info[i]
for i in info:
print(i,end=" ")
print()
print(sum)
KR:列表(数组)越界问题
下文待续。。。