以下是我不知道编码错误的两个问题:
在物理学中,对于长度为L且初始角度为A的摆锤,其在时间T的水平位移X(T)由公式
给出X(T)= L×cos(A×cos(T×√9.8/ L)) - L×cos(A)
编写一个带两行输入的程序;第一行是L,第二行是A.输出应该是十行,给出X(0),X(1),X(2),...,X(9)的值。例如,如果第一行输入为53.1而第二行输入为0.8,则第一行输出为0.0,第二行输出为53.1 * cos(0.8 * cos(1 *√9.8/ 53.1) ) - 53.1 * cos(0.8)~2.66989。
这就是我所拥有的,虽然评分者表明我做的一些数学错误:
import math
L = float(input())
A = float(input())
for i in range (0, 10):
x = L * math.cos(A * math.cos(i * math.sqrt(9.8/L))-L * math.cos(A))
print(x)
对于此程序,第一行输入是整数宽度。然后,有一些文字; “END”行表示文本的结尾。对于每行文本,您需要通过向左和向右添加句点来打印出它的居中版本,以便每行文本的总长度为宽度。 (所有输入行的长度最多为宽度。)居中意味着如果可能,添加到左侧并添加到右侧的句点数应相等;如果需要,我们允许左侧比右侧多一个时段。例如,输入
这是我所拥有的,虽然它也不正确:
width = int(input())
hi=input()
while hi != "END":
WordInput=input()
x=len(WordInput)
y=width-x
half=y%2
if half == 0:
a = int(y/2)
print("." * a)
elif half == 1:
b = int(y/2) + 1
c = int(y/2)
print("." * b,WordInput,"." * c)
答案 0 :(得分:0)
如果您的输入有文本提示,它可以帮助您调试,如width = int(input("enter width: "))
,这将使您更好地了解输入将存储在代码中的哪个位置。
我没有看到#1的问题,但是自从我接受了物理学以来已经有一段时间了。如果您的评分者说数学是错误的,请仔细检查您正在使用的等式,并在代码中添加适当的括号,以确保正确的操作顺序完成。
#2有几个问题。首先,您的程序请求输入错误的次数。你的循环取决于你只分配一次的变量hi
;一旦你的代码进入循环,任何东西都不会改变为" END"并且循环永远不会退出。不仅如此,你输入的第一个单词(在hi
提示符下)不会被你的循环中的代码所考虑,所以除了" END"简直被忽略了。你会想要更像这样的东西:
WordInput=input()
while WordInput != "END":
# Do your processing and printing code here
(...)
# Then get some new input at the end of the loop
WordInput=input()
循环重启时,将评估WordInput
的新值。
其次,查看您的if
声明。你正确地确定长度是偶数(一半== 0),但是在偶数情况下你不会告诉代码实际打印输入单词,只是句点!在实践中,避免使用多个类似的打印语句来设置if / else这样的块是很好的;如果你想返回并更改其格式,你必须记住手动更改其他格式。随着您的代码变得越来越复杂,这将成为一个真正的痛苦,因此通常最好尽可能地压缩您的打印语句。如果不改变你的结构太多,我会怎么做:
if half == 0:
a = int(y/2)
elif half == 1:
a = int(y/2) + 1
b = int(y/2)
print("." * a,WordInput,"." * b)
这样,在任何一种情况下都会分配b
,无论如何都会执行相同的print语句。
第三,任何以代码打印和居中的单词都用空格填充。这是因为当您提供print()
个多个参数时,默认情况下它们由空格连接。要覆盖它,您可以将separator参数更改为空字符串(或您需要的任何其他内容);
>>>print("." * 4, "Hey", "." * 4)
.... Hey ....
>>>print("." * 4, "Hey", "." * 4, sep="")
....Hey....
答案 1 :(得分:0)
For 1.括号错了!
import math
L = float(input())
A = float(input())
for i in range (0, 10):
x = L * math.cos(A * math.cos(i * math.sqrt(9.8/L)))-L * math.cos(A)
print(x)