如何将列表中的个别数字乘以3或1,具体取决于位置

时间:2016-02-03 09:40:05

标签: python-3.x

在我的代码中,我已将用户的输入转换为列表,并且我希望根据数字的位置将用户的输入乘以3或1.例如,如果用户输入" 8748935",数字8,4,9和5将乘以3,因为它们的位置是奇数,7,8和3乘以1.在将所有7个数字相乘后,我想添加它们并输出结果。 我目前的代码:

NumGiven=''
while not NumGiven.isnumeric():
    NumGiven=(input('Please enter a 7 or 8 digit number:'))
while len(NumGiven)<7 or len(NumGiven)>8:
    NumGiven=(input('Please enter a 7 or 8 digit number:'))
if len(NumGiven)==8:
    list=[int(i) for i in NumGiven]
    total=(sum([int(i) for i in NumGiven]))
    ans = total / 10.0
    if total % 10 == 0:
        print("Your GTIN8 code is correct.")
    else:
        print("Your GTIN8 code is incorrect")
if len(NumGiven)==7:
    list=[int(x) for x in str(NumGiven)]

3 个答案:

答案 0 :(得分:0)

因为您将输入作为列表; [8,7,4,8,9,3,5]你可以迭代它们并适用算法

if len(NumGiven)==8:
  sum = 0
  list=[int(i) for i in NumGiven]
  for x in list:
    if list.index(x)%2 == 0:
      sum += int(x)*3 //will be applied to even indexed elements
    else: 
      sum += int(x) //will be applied to odd indexed elements
  print sum

其中i%2检查索引是偶数还是奇数(Python和我不同意你对8,4,9和5的意见是奇数索引,因为列表从索引0开始,这使得索引为数字0,2,4和6)

答案 1 :(得分:0)

我有一个很好的方式(我希望)

$("table select").on("change", function(){
var x=$(this).find(":selected").val();
var y=$(this).closest("td").siblings().find(":selected").val();
$(this).closest("td").siblings().find("input").val(x*y);
});

如果您希望数字长度为7,请取消注释我所说的位,它会正常工作。

答案 2 :(得分:-1)

我老师帮帮我,

if len(NumGiven)==7:
    Num0=int(NumGiven[0])*3
    Num1=int(NumGiven[1])*1
    Num2=int(NumGiven[2])*3
    Num3=int(NumGiven[3])*1
    Num4=int(NumGiven[4])*3
    Num5=int(NumGiven[5])*1
    Num6=int(NumGiven[6])*3
    print(Num0,Num1,Num2,Num3,Num4,Num5,Num6)
    total=(Num0+Num1+Num2+Num3+Num4+Num5+Num6)
    print(total)