Python笔记-Day5——2023.11.23-某某号码生成器(Part1)

今日进度:

  1. np.multiply()函数;
  2. 如何让input的数据成为列表;
  3. 如何将列表里的str转化为int;
  4. 如何将列表里的数字相加;
  5. zip()函数

自己编写的程序:某某号码生成器(Part1)

import numpy as np

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

if len(id) != 17:
    print('Wrong number!')
else:
    print(id)

list_pri = list(id) #让输入的数据成为列表,生成的数据在列表里是字符串
list1 = [7, 9, 10, 5, 8, 4, 2] 
list2 = [1, 6, 3]

list_id = [int(i) for i in list_pri] #将列表里的字符串类型转化为int


#前7位数:
step1 = np.multiply(list_id[0:7], list1) # list_id[i] * 对应系数;list的切片是冒号
#结果也是个列表  [7 18  0  5  0  20  2]
sigma1 = 0
for num in step1: #使用for循环遍历列表,将每个元素与sigma相加后重新赋值给sigma
    sigma1 += num


#8-10位数:
step2 = np.multiply(list_id[7:10], list2) 

sigma2 = 0
for num in step2: 
    sigma2 += num

#11-17位数:
step3 = np.multiply(list_id[10:], list1) 

sigma3 = 0
for num in step3: #使用for循环遍历列表,将每个元素与sigma相加后重新赋值给sigma
    sigma3 += num

total = sigma1 +sigma2 + sigma3
result = total % 11 # %用来计算余数

if result == 10:
    print('Your last number is 2')
elif result == 9:
    print('Your last number is 3')
elif result == 8:
    print('Your last number is 4')
elif result == 7:
    print('Your last number is 5')
elif result == 6:
    print('Your last number is 6')
elif result == 5:
    print('Your last number is 7')
elif result == 4:
    print('Your last number is 8')
elif result == 3:
    print('Your last number is 9')
elif result == 2:
    print('Your last number is X')
elif result == 1:
    print('Your last number is 0')
elif result == 0:
    print('Your last number is 1')


np.multiply()函数: 

  • 两个数组的对应位置的数字相乘
  • 只能用于相同的dtype(数据类型)相乘,否则会报错:
list1 = [7, 9, 10, 5, 8, 4, 2],
list_id = ['1', '2', '0', '1', '0', '5', '1'],
test = np.multiply(list_id[0:7], list1)

'''
会报错:numpy.core._exceptions._UFuncNoLoopError: ufunc 'multiply' did not contain a loop with signature matching types (dtype('<U1'), dtype('int32')) -> None
其中dtype('<U1')指str类型
'''

如何让input的数据成为列表:

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

在输入的数据上套一个list().

如何将列表里的str转化为int:

方法一: list_id = [int(i) for i in list_pri] 

方法二:使用map()函数:
list_id = list(map(int, list_pri)) 

如何将列表里的数字相加:

使用for循环遍历列表(指step1),将每个元素与sigma相加后重新赋值给sigma:

sigma1 = 0
for num in step1: 
    sigma1 += num
print(sigma1)

zip()函数的使用:

zip():将两个列表组合成元组

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
print(list(zip(list1, list2)))

#[(1, 5), (2, 6), (3, 7), (4, 8)]

因此不能用zip()来使得两个列表里的数据相乘,因为zip()输出的结果是列表:

如果遇到zip()转换的结果是:<zip object at 0x000002BB86247EC0>

则是因为Python3与Python2的版本差异,通过list(zip(……)),即可转换为列表

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值