如何将不同的整数组合成一个整数

时间:2015-10-08 08:54:13

标签: python python-3.x

如何将不同的整数组合成一个以显示结果,例如来自

的1234567
print("Enter the first digit")

Digits1 = int(input())

print("Enter the second digit")

Digits2 = int(input())

print("Enter the third digit")

Digits3 = int(input())

print("Enter the fourth digit")

Digits4 = int(input())

print("Enter the fifth digit")

Digits5 = int(input())

print("Enter the sixth digit")

Digits6 = int(input())

print("Enter the final digit")

Digits7 = int(input())

print("The 7 digit code is {0}{1}{2}{3}{4}{5}{6}".format (Digits1,Digits2,Digits3,Digits4,Digits5,Digits6,Digits7))

我不希望所有数字都按照我在打印中的方式放在一起,我希望所有数字都在一个变量中的一行中。

9 个答案:

答案 0 :(得分:1)

使用列表

digit_list = []
print("Enter the first digit")
digit_list_append(str(input()))  # If you gonna join them, keep them as strings
...
# And join them
"".join(digit_list)

如果需要,可以将input部分放在一个循环中,逐个获取n个数字并将其添加到列表中

digit_list = []
for _dig in range(1, 8):  # Loop 7 times
    print("Enter {n}th digit:".format(n=_dig))
    digit_list_append(str(input()))
print "".join(digit_list)

答案 1 :(得分:1)

int(''.join(str(el)
            for el in [Digits1, Digits2, Digits3, Digits4, Digits5, Digits6, Digits7]))

答案 2 :(得分:1)

您可以将它们全部存储在为每个数字连接的字符串中。所以永远不要将输入转换为int。

set datefirst 1 /* monday */

declare @v_date_start datetime
declare @v_date_stop datetime

set @v_date_start = '2015-05-01'
set @v_date_stop = '2020-10-01' 

;with date_cte 
as
(
    select  @v_date_start [date]
    union all
    select  dateadd(day, 1, cte.date) [date]        
    from    date_cte [cte]
    where   dateadd(day, 1, cte.date) <= @v_date_stop 

)

select  cte.date
    ,   datename(dw, cte.date) [day_name]
from    date_cte [cte]
where   datepart(dw, cte.date) in (6,7)
option  (maxrecursion 0)

答案 3 :(得分:1)

基本上是基础10问题:

number = math.pow(10,6) * Digits7 + math.pow(10,5) * Digits6 + math.pow(10,4) * Digits5 + math.pow(10,3) * Digits4 + math.pow(10,2) * Digits3 + math.pow(10,1) * Digits2 + math.pow(10,0) * Digits1

答案 4 :(得分:0)

这将主要起作用,但会错过一个前导零,并且至少是可配置的:

total=0
count=7
while count > 0:
    print("Enter digit")
    digit = int(input())
    total = total * 10 + digit
    count = count - 1
print("The total is {0}".format(total))

答案 5 :(得分:0)

如果您更喜欢整数运算而不是字符串运算,那么positional notation呢?

composed_number = digit_4 * pow(10, 4) \
    + digit_3 * pow(10, 3)  \
    + digit_2 * pow(10, 2)  \
    + digit_1 * pow(10, 1)  \
    + digit_0 * pow(10, 0) \

print(composed_number) # 43210

答案 6 :(得分:0)

首先,我会使用一个列表来存储数字,你可以这样填充数字:

number_of_digits = 7
digits = []  # this is an empty list

for i in range(number_of_digits):
    print("Enter digit {0}".format(i))
    digits.append(int(input()))

完成后,您可以使用str.join函数和一些列表理解将它们连接在一起:

code = "".join(str(x) for x in digits)
print("The {0} digit code is {1}".format(number_of_digits, code))

答案 7 :(得分:0)

试试这段代码

digists = []
print('enter the digist, input ! to stop.')
num = input()
while num != '!':
    digists.append(num)
    num = input()
i,num = 0,0
for d in reversed(digists):
    num = num + 10**i*int(d)
    i += 1
print(num)

答案 8 :(得分:0)

有几种方法可以解决这个问题,例如:

  • 一次输入所有7位数字:

    number = int(input('Enter 7 digit number: '))
    
  • 或者将数字放在列表中:

    digits = [int(input('Enter the {ordinal} digit: '.format(ordinal=ordinal))
              for ordinal in "first second third fourth fifth sixth final".split()]
    

    并使用小数位运算将列表转换为数字 (123 = 1*100 + 2*10 + 3 = (1*10 + 2)*10 + 3):

    from functools import reduce
    
    number = reduce(lambda x,y: x*10 + y, digits)
    

    或使用str获得相同的结果:

    number = int(''.join(map(str, digits)))
    

    注意:如果您必须保留现在输入数字的方式,那么您可以将digits列表定义为:

    digits = [Digits1, Digits2, Digits3, Digits4, Digits5, Digits6, Digits7]