学习Python并需要帮助在不中断其余代码的情况下移动符号
我正在学习Python,需要一些帮助来将我的符号移到左边的几个空格上。我已完成作业,不需要家庭作业帮助。我只是想让我这边看起来更好。在我在下面的链接中添加的图片中,您可以看到“#”太靠右了。我想把它放在偶数旁边。我试着在打印语句中留出更多的空格,但所做的只是移动整个表。我怎么才能让那个“#”正好挨着我的偶数呢 这是我的密码学习Python并需要帮助在不中断其余代码的情况下移动符号,python,formatting,Python,Formatting,我正在学习Python,需要一些帮助来将我的符号移到左边的几个空格上。我已完成作业,不需要家庭作业帮助。我只是想让我这边看起来更好。在我在下面的链接中添加的图片中,您可以看到“#”太靠右了。我想把它放在偶数旁边。我试着在打印语句中留出更多的空格,但所做的只是移动整个表。我怎么才能让那个“#”正好挨着我的偶数呢 这是我的密码 #ask for user input on size of Multiplication Table. size = int(input("What size M
#ask for user input on size of Multiplication Table.
size = int(input("What size Multiplication Table would you like? (2-10):"))
while (size <2) or (size >10):
print("Invalid entery! Enter a Number Between 2 and 10")
size = int(input("What size Multiplication Table would you like? (2-10):"))
print()
print()
#dispaly header
print(" --- Multiplication Table(",size,"x",size,") ---")
print(" ",end="")
size += 1
for h in range(1,11):
if h == 10:
print(" ",h, end=" ")
else:
print(" ",h, end=" ")
print()
for h in range(1,100):
print('-',end='')
print()
#display Multiplication Table
#outer loop
for a in range(1,size):
if a ==10:
print('',a,'|',end='')
else:
print('',a,' |',end='')
#inner loop
for b in range(1,size):
result = a * b
if result >=100:
print(' ',result, end=' ')
elif result >=10:
print(' ',result, end=' ')
else:
print(' ', result, end=' ')
# for putting '#' at the end of even numbers
if result %2==0:
print('#', end='')
elif result == 100:
print('', end='')
else:
print(' ', end='')
print()
#要求用户输入乘法表的大小。
size=int(输入(“您想要什么大小的乘法表?(2-10):”)
而(10号):
打印(“无效输入!输入一个介于2和10之间的数字”)
size=int(输入(“您想要什么大小的乘法表?(2-10):”)
打印()
打印()
#显示标题
打印(“---乘法表(”,大小,“x”,大小“)--”)
打印(“,end=”“)
大小+=1
对于范围(1,11)内的h:
如果h==10:
打印(“,h,end=”“)
其他:
打印(“,h,end=”“)
打印()
对于范围(1100)内的h:
打印('-',结束='')
打印()
#显示乘法表
#外环
对于范围内的(1,尺寸):
如果a==10:
打印(“”,a,“”,end=“”)
其他:
打印(“”,a,“”,end=“”)
#内环
对于范围内的b(1,尺寸):
结果=a*b
如果结果>=100:
打印(“”,结果,结束=“”)
elif结果>=10:
打印(“”,结果,结束=“”)
其他:
打印(“”,结果,结束=“”)
#在偶数的末尾加上“#”
如果结果%2==0:
打印(“#”,结束=”)
elif结果==100:
打印(“”,结束=“”)
其他:
打印(“”,结束=“”)
打印()
我对您的内部循环进行了最小的修改,以产生所需的效果:
for b in range(1,size):
result = a * b
# for putting '#' at the end of even numbers
if result %2==0:
end_str='#'
elif result == 100:
end_str=''
else:
end_str=' '
if result >=100:
print(' ',result, end=end_str+' ')
elif result >=10:
print(' ',result, end=end_str+' ')
else:
print(' ', result, end=end_str+' ')
输出,经过此修改:
1 2 3 4 5 6 7 8 9 10
---------------------------------------------------------------------------------------------------
1 | 1 2# 3 4# 5 6# 7 8# 9 10#
2 | 2# 4# 6# 8# 10# 12# 14# 16# 18# 20#
3 | 3 6# 9 12# 15 18# 21 24# 27 30#
4 | 4# 8# 12# 16# 20# 24# 28# 32# 36# 40#
5 | 5 10# 15 20# 25 30# 35 40# 45 50#
6 | 6# 12# 18# 24# 30# 36# 42# 48# 54# 60#
7 | 7 14# 21 28# 35 42# 49 56# 63 70#
8 | 8# 16# 24# 32# 40# 48# 56# 64# 72# 80#
9 | 9 18# 27 36# 45 54# 63 72# 81 90#
10 | 10# 20# 30# 40# 50# 60# 70# 80# 90# 100#
试试这个:
for b in range(1,size):
result = a * b
flag = " " if result % 2 else "#"
#put the number and the flag together
temp = f"{result}{flag}"
#and pad the number + flag to a constant length
print(f' {temp:6.6}', end="")
请参阅我在“关于f字符串格式如何工作的更清晰分类”问题下的评论
输出:
请参阅我关于f字符串格式工作原理的评论。找不到关于如何指定格式的真正清晰的参考
f“{:}”
因此无法链接一个,但它也可以执行诸如填充零和格式浮动之类的操作。提示:print(f):{str(result):>3.3}:”
右对齐3。这将在某种程度上简化格式化逻辑。分解f“{result}”
打印结果<代码>:3.3始终占用3个空格(截断和填充)<代码>:>3:3'将填充放在前面。但是你不能在整数上使用字符串格式限定符,这就是为什么首先需要str(result)`的原因。非常感谢你的帮助,这正是我想要的。很有趣。非常感谢。
--- Multiplication Table( 4 x 4 ) ---
1 2 3 4 5 6 7 8 9 10
---------------------------------------------------------------------------------------------------
1 | 1 2# 3 4#
2 | 2# 4# 6# 8#
3 | 3 6# 9 12#
4 | 4# 8# 12# 16#