Python笔记-Day6——2023.11.26-某某号码生成器(Part2)

今日进度:程序关闭sys.exit();重启程序subprocess.call() & sys.argv[0];不用np.multiply()的写法;range()函数

本次笔记是对Day5笔记里的号码生成器的补充和优化。

关闭程序sys.exit():

  • 可以用这个函数退出程序;
  • 使用前要import sys。
之前:
id = input("Please input the first 17 number:")
if len(id) != 17:
    print('Wrong number!') #问题在于if之后的语句仍会执行
else:
    print(id)
   
现在:
import sys
id = input("Please input the first 17 number: ")
if len(id) != 17:
    sys.exit('Wrong number!') #此后程序便会退出
else:
    print(id)

但如果不想让程序就此退出,想重新开始(或懒得手动开始)的话,就需要用到程序重启。

重启程序subprocess.call() & sys.argv[0]

  • 运行subprocess.call()需要import subprocess;
  • sys.argv[0]为文件路径,即调用代码本身;
  • subprocess.call()的使用格式,先这么记吧,以后看明白了再补充;
  • subprocess.call() 为python3.5以前版本使用(本篇为3.10.13),3.5之后官方推荐使用subprocess.run()。
import sys
import subprocess

id = input("Please input the first 17 number: ")

if len(id) != 17:
    chioce = input('Wrong number! Do you want to input again? (y/n):')
    if chioce == 'y':
        subprocess.call(['python', sys.argv[0]])
else:
    print(id)
  • 另外,可以用lower()函数对于用户输入的答案进行优化,防止用户输入了大写的“Y”程序就无法识别的情况:
之前:
if chioce == 'y':
现在:
if chioce.lower() == 'y':

不用np.multiply()的写法:

  • 想要实现两个列表里的对应位置的数据的相乘并累加,可以不用numpy.multiply(),一个简单的list1[i]*list2[i]即可(是的可以直接这么乘);
  • 累加可以用for循环与range()函数;
id = input('Please input the first 17 number: ')
list_pri = list(id) #这里之前都不变
weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #将各个系数合并乘一个list

sigma = 0
for i in range(17): #range(17)里面包含的整数索引是0-16
    sigma +=  weight[i] * list1[i]
print(sigma)

result1 = sigma % 11
print(result1)

range()函数:

  • range(end) 或 range(start, end, step)
  • 只填一个数时,为指定end;填两个数时,为指定start与end,step默认为1;填三个数时,才是都指定;
  • 左闭右开;
for i in range(17):
	print(i) # 输出为0-16,一共17个数

for i in range(1, 5):
    print(i) #输出为1,2,3,4,索引1-4的数,左闭右开不包括索引为5的数

for i in range(1, 12, 3):
    print(i) #输出为1,4,7,10,在索引为1-11的数据之中,每3个数取一个,step = 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值