[英]How to concatenate a string and an integer to get a three digit number
我正在參加初學者課程,我制作了這段代碼,但它不起作用
random_number = str(random.randrange (1, 1000))
random_number_length = (len (random_number))
zero_number = ("0" * 3 - (random_number_length))
final_number = (random_number_length + random_number)
print (final_number)
最終輸出需要類似於:
004
代替:
4
即使生成的數字是 89 或 7,我也需要得到一個三位數的數字。
當我嘗試這樣做時,出現錯誤:
zero_number = ("0" * 3 - (random_number_length))
TypeError: unsupported operand type(s) for -: 'str' and 'int'
我猜它與字符串和整數有關。
Python 字符串有一個 zfill 方法,您可以使用該方法用前導零填充字符串。
>>> '1'.zfill(3)
'001'
>>> '89'.zfill(3)
'089'
>>> '189'.zfill(3)
'189'
由於不允許使用 zfill:
>>> def f(n):
... s = str(n)
... return '0' * (3 - len(s)) + s
...
>>>
>>> for x in [1, 11, 111]: print(f(x))
...
001
011
111
作為zfill
的替代方案,您可以使用rjust
:
>>> '1'.rjust(3, '0')
'001'
>>> '89'.rjust(3, '0')
'089'
>>> '189'.rjust(3, '0')
'189'
或格式:
>>> "{:0>3}".format('1')
'001'
>>> "{:0>3}".format('89')
'089'
>>> "{:0>3}".format('189')
'189'
>>> '%03d' % 1
'001'
由於您出於教育原因這樣做,因此答案是運算符(例如 *、+、- 等)具有優先權。
你在寫:
zero_number = ("0" * 3 - (random_number_length))
首先使用運算符*
,然后使用運算符-
。
這是真正發生的事情:
# assuming number is 89, so random_number_length is 2
zero_number = ("0" * 3 - (random_number_length))
zero_number = ("0" * 3 - (2))
zero_number = ("000" - (2))
zero_number = ("000" - 2)
# error - you can't subtract a number (an integer) from a string.
您需要強制減法發生在字符串乘法之前。
zero_number = "0" * (3 - random_number_length)
這是最終的代碼,格式正確(我刪除了不必要的括號和不必要的空格)
import random
random_number = str(random.randrange(1, 1000))
random_number_length = len(random_number)
zero_number = "0" * (3 - random_number_length)
final_number = zero_number + random_number
print(final_number)
您還在隨機數中添加了錯誤的內容 - 您應該在(您的)第 4 行中添加“zero_number”變量,該變量是您在上一行(您的第 3 行)中創建的
以上答案更有用(您不必重新發明輪子),但要使用您自己的代碼:
import random
# Get the random number
random_number = str(random.randrange (1, 1000))
# Check number of digits in the number
random_number_length = len (random_number)
# Use the number of digits to get the number of zeros
zero_number = "0" * (3 - (random_number_length))
# Concatenate zero_number with random_number
final_number = zero_number + random_number
print (final_number)
# 006
盡量少用括號:這些有時會令人困惑。 但你的主要問題:
zero_number = ("0" * 3 - (random_number_length))
乘法先於減法,所以它是:
"0" * 3
=> 是一個字符串"000" - random_number_length
=> 字符串 - int = ? 您不能連接兩種不同的類型(這里是int
和string
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.