如何从列表中获取参数以替代代码中的phone变量?
phone Length with a Parameter from a List First, let's fix a small syntax issue in your original code: the expression (' ' * length - len(str(phone))) won't work because you can't subtract a number from a string directly. You need to calculate the space count first, then multiply by spaces: ' ' * (length - len(str(phone))).
Now, to adapt this to use a parameter from a list instead of phone, here's how to approach it:
Step 1: Define Your Fixed Values & Parameter List
Start by setting up your required constants and the list of reference parameters you want to use for spacing:
boardX = 14 length = 3 # Example list of parameters (can be any values relevant to your use case) reference_params = [12, 5, 18, 3]
Step 2: Calculate Spacing from the Selected Parameter
Pick which parameter's character length you want to base the spacing on (adjust the index to target any item in the list):
# Select the target parameter from the list (here we use the first item) selected_param = reference_params[0] # Calculate the spacer: length minus the parameter's string length, converted to spaces spacer = ' ' * (length - len(str(selected_param)))
Step 3: Build the Final String
Generate the numbered section and combine it with the leading spaces to get your final a10 string:
# Create the numbered part using the calculated spacer to separate digits number_section = spacer.join([str(x) for x in range(1, boardX + 1)]) # Add the required leading spaces to complete the string a10 = ' ' * (2 + length) + number_section
Example Outputs
Using your given values (boardX=14, length=3):
- If we select
reference_params[0] = 12(string length = 2):- Spacer becomes
' '(3 - 2 = 1 space) - Final
a10value:1 2 3 4 5 6 7 8 9 10 11 12 13 14
- Spacer becomes
- If we select
reference_params[1] = 5(string length = 1):- Spacer becomes
' '(3 - 1 = 2 spaces) - Final
a10value:1 2 3 4 5 6 7 8 9 10 11 12 13 14
- Spacer becomes
Bonus: Custom Spacing Between Each Number Pair
If you want unique spacing for every gap between numbers (make sure your parameter list length matches boardX - 1), use this approach:
# List of parameters matching the number of separators (13 for boardX=14) spacer_params = [8, 15, 3, 7, 12, 9, 14, 2, 6, 11, 4, 10, 5] # Generate a unique spacer for each gap spacers = [' ' * (length - len(str(p))) for p in spacer_params] # Build the numbered section with custom spacers number_section = '' for i in range(1, boardX + 1): number_section += str(i) if i < boardX: number_section += spacers[i-1] # Add leading spaces to get the final string a10 = ' ' * (2 + length) + number_section
内容的提问来源于stack exchange,提问作者piotreczek1

