爱意随风起9306 发表于 2023-2-14 18:22:16

大佬,帮忙看看代码

题目要求:
1.输入的数据比较大小,并求出一个最大整数(四舍五入)
2.整数是几,代表口诀的第几列(不算第一列)。
如果最大整数是4,如下输出

输入
         
三个浮点数,并排空格隔开三个浮点数,并排空格隔开

输出
         
输出
9∗9乘法口诀表。输出9∗9乘法口诀表。
注意:第一列是输入是一个空格

样例
输入:
2.1 3.1 4.1
输出:

1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16

代码:
f=map(float,input().split())
z =max(f)
b=int(z)
for i in range(1,b+1):
    for j in range(1,i+1):
         print('%d*%d=%d\t' %(i,j,i*j),end='')
    print()

myd0313 发表于 2023-2-14 19:06:46

本帖最后由 myd0313 于 2023-2-14 19:08 编辑

既然你都说了是四舍五入,那么你照做了吗?

问题在这里:

b=int(z)
int 并不是四舍五入,而是取整,取整就是舍掉小数,因此就不能”五入”了

想要正确的四舍五入,应该用 round 函数:
b=int(round(z,0))
后面的0表示保留0位小数,也就是真正的四舍五入

实在不行就自己写一个四舍五入的代码:
f=map(float,input().split())
z =max(f)
b=z
if b-int(b)>=0.5:
    b=int(z)+1
else:
    b=int(z)
for i in range(1,b+1):
    for j in range(1,i+1):
         print('%d*%d=%d\t' %(i,j,i*j),end='')
    print()

小数部分>0.5就入,否则就舍

爱意随风起9306 发表于 2023-2-14 20:16:37

myd0313 发表于 2023-2-14 19:06
既然你都说了是四舍五入,那么你照做了吗?

问题在这里:


这个我知道,我想知道的是那个输出的第一列是空格的问题

myd0313 发表于 2023-2-14 20:53:49

爱意随风起9306 发表于 2023-2-14 20:16
这个我知道,我想知道的是那个输出的第一列是空格的问题

明白了,加一个空格就好:
f=map(float,input().split())
z =max(f)
b=z
if b-int(b)>=0.5:
    b=int(z)+1
else:
    b=int(z)
for i in range(1,b+1):
    for j in range(1,i+1):
         print(' %d*%d=%d\t' %(i,j,i*j),end='')
    print()

爱意随风起9306 发表于 2023-2-14 21:10:34

myd0313 发表于 2023-2-14 20:53
明白了,加一个空格就好:

你这个是竖下来,我要的是横向的空格

chinajz 发表于 2023-2-15 07:03:33

round函数是4舍6入,奇进偶舍,按题目+0.5取整比较合理,或者用比较函数。
f=map(float,input().split())
z =max(f)+0.5
b=int(z)
for i in range(1,b+1):
    for j in range(1,i+1):
         print('%d*%d=%d\t' %(i,j,i*j),end='')
    print()

chinajz 发表于 2023-2-15 07:06:44

Type "help", "copyright", "credits" or "license()" for more information.
print(round(5.5))
6
print(round(4.5))
4

myd0313 发表于 2023-2-15 07:21:32

爱意随风起9306 发表于 2023-2-14 21:10
你这个是竖下来,我要的是横向的空格

解释一下什么是横向的空格

爱意随风起9306 发表于 2023-2-15 12:25:13

myd0313 发表于 2023-2-15 07:21
解释一下什么是横向的空格

已经解决了,就是先输出一个空格,然后在下一行再输出那个乘法表
页: [1]
查看完整版本: 大佬,帮忙看看代码