数字输入问题,无法输入0开头的数字
mfp吧
全部回复
仅看楼主
level 3
我学了一天编了一个简单的程序来解决实习中的重复计算,由于专业都是读整数,但要输出小数,输入时的习惯也是输入整数,就会出现0开头的数字。
我在一个单独的程序中输入0开头的四位整数是能识别的,但像下图那样只有一个0开头的数就会出现识别不了,需要再次输入。求解,代码在楼下。
2018年03月25日 05点03分 1
level 3
@execution_entry san5()
function san5()
variable j1=input("后尺起点")
variable j2=input("前尺起点")
variable k1=0.001*j1
variable k2=0.001*j2
print("------------------------------"+"\n")
variable p=0
do
variable g1=input("后尺上丝")
variable g2=input("后尺中丝")
variable g3=input("后尺下丝")
variable g4=input("前尺上丝")
variable g5=input("前尺中丝")
variable g6=input("前尺下丝")
variable g7=input("红面后尺中丝")
variable g8=input("红面前尺中丝")
variable a1=0.001*g1
variable a2=0.001*g2
variable a3=0.001*g3
variable a4=0.001*g4
variable a5=0.001*g5
variable a6=0.001*g6
variable a7=0.001*g7
variable a8=0.001*g8
variable k3=k2-k1
variable a9=a1-a3
variable a10=a4-a6
variable a11=100*a9
variable a12=100*a10
variable a13=a11-a12
variable a14=a2-a7+k1
variable a15=a5-a8+k2
variable a16=a2-a5
variable a17=a7-a8+k3
variable a18=a16-a17
variable a19=0.5000*(a16+a17)
print("------------------------------"+"\n")
print("------------------------------"+"\n")
print("后视距="+a11+"\n")
print("前视距="+a12+"\n")
print("前后视距差="+a13+"(须<=2m)"+"\n")
print("------------------------------"+"\n")
print("后尺黑红面读数差="+a14+"(须<=2mm)"+"\n")
print("前尺黑红面读数差="+a15+"(须<=2mm)"+"\n")
print("------------------------------"+"\n")
print("黑红面高差之差="+a18+"(须<=3mm)"+"\n")
print("黑面高差="+a16+"\n")
print("红面高差="+a17+"\n")
print("平均高差="+a19+"\n")
p=p+1
print("------------------------------"+"\n")
print("------------------------------"+"\n")
print("------------------------------"+"\n")
variable gh=input("如果重复测绘输入1否则随意输入一个数 "+"\n")
if gh==1
else
variable k4=k1
k1=k2
k2=k4
endif
print("------------------------------"+"\n")
print("------------------------------"+"\n")
until p>=100
endf
2018年03月25日 05点03分 2
请忽略我的循环,只是为了方便,重新启动比开始要简单
2018年03月25日 05点03分
回复 三水💧💧💧 :还有不知道为什么我的这个无法再次运行
2018年03月25日 06点03分
level 3
怎么改才能都识别出来呢
2018年03月25日 06点03分 3
以及重复运行
2018年03月25日 06点03分
level 7
输入字符串,然后转换成整数即可[哈哈]
2018年03月27日 12点03分 5
level 6
input把输入当做表达式处理,此如输入是2+3,得到的结果是5。而对表达式中数字的表示,0x开头表示16进制数,0b开头表示2进制数,0后直接跟数字表示8进制数,其他数字开头是10进制数。所以像028之类的是非法的,不能被识别。而其他可以识别的则是被错误地识别为8进制数了,此如0025实际上是被识别成21。解决方法:给input函数加上第二个参数"S",将输入当成字符串,然后将字符串转换成10进数字。
2018年03月29日 16点03分 6
[大拇指]
2018年04月29日 14点04分
1