1 正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA 是 66,因为 A 中有 2 个 6。
现给定 A、DA、B、DB,请编写程序计算 PA+PB。
【程序分析】
输入在一行中依次给出 A、DA、B、DB,中间以空格分隔,其中 0
例如:3862767 6 13530293 3
PA=66, PB=333, PA+PB=333+66=399
ist=[x for x in input( "请输入A DA B DB:").split()]
A=list[0]
DA=list[1]
B=list[2]
DB=list[3]
n,m=0,0
for x in A:
if DA==x:
n+=1
for r in B:
if DB==r:
m+=1
PA = n * DA
PB = m * DB
if n!=0 and m!=0:
print("PA={0}, PB={1}, PA+PB={2}".format(int(PA),int(PB),int(PA)+int(PB)))
elif n==0 and m!=0:
print("PA={0}, PB={1}, PA+PB={2}".format(int(PA),int(PB),int(PB)))
elif n!=0 and m==0:
print("PA={0}, PB={1}, PA+PB={2}".format(int(PA),int(PB),int(PA)))
elif n==0 and m==0:
print("PA={0}, PB={1}, PA+PB={2}".format(int(PA),int(PB),0))
2 通过键盘输入系列整数值,输入 0 则表示输入结束,将这些值(不含 0)建立为一个列表,并按从大到小的顺序输出该列表各元素。
a=[]
x=int(input("请输入一个整数,输入 0 则表示输入结束:"))
while x!=0:
a.append(x)
x=int(input("请输入一个整数,输入 0 则表示输入结束:"))
print(a)
a.sort()
a.reverse()
print(a)
3编写命令行参数解析程序,解析命令行参数所输入边长的值,计算并输出正方形的周长和面积。
例如, 在命令行程序输入:pythonarg_parse.py --length 5
输出: 边长为5正方形周长为20,面积为25
【程序分析】
1、 首先导入argparse 模板
2、 创建ArgumentParser对象
3、 调用创建的对象的方法add_argument(),并增加要解析的命令行参数信息
4、调用创建对象方法parse_argvs()解析命令行参数,生成对应的列表
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--length', default = 10, type =int, help ='边长')
args = parser.parse_args()
zhouchang = args.length * 4
area = args.length * args.length
print('边长=',zhouchang)
print('边长={0}周长={1},面积={2}'.format(args.lengthzhouchang,area))
4 编写读取并输出文本文件程序,由命令行第一个参数确认所需输出的文本文件名。
例如,本章实验指导书实验预备知识例三。
【程序分析】
1、与例三不同的是,需要由从命令行第一个参数确认所输出的文本文件
2、输出的文本文件,可以是自己编写的python程序
import sys
filename = sys.argv[1]
f = open(filename,'r',encoding = 'utf-8')
line_no=0
while True:
line_no+=1
line = f.readline()
if line:
print(line_no,":",line)
else:
break
f.close()
5 编写标准输出重定向的程序,从命令行第一个参数中获取n的值,然后将0~n、0~n的2倍值、2的0~n次幂的列表打印输出到out.log文件中。
【程序分析】
1、首先导入sys模块
2、 指定一个变量接收从命令行输入的第一个参数n值
3、计数赋初值
4、指定标准输出重定向到out.log文件中
5、输出0~n、0~n的2倍值、2的0~n次幂的列表
6、通过程序命令type out.log显示out.log文件中的信息
import sys
n = int(sys.argv[1])
power = 1
twice = 0
i = 0
f = open('out.log','w')
sys.stdout = f
while i<= n:
print(str(i),' ',str(twice),' ',str(power))
power = 2*power
i =i+1
twice = 2*i
sys.stdout = sys.__stdout__
print('done!')



