python 入门编程求解

马梦娇 2020-04-16 07:49:57
题目:编写程序实现如下功能:从键盘输入多个数,直到直接输入回车退出。这些数字存入在一个列表中,计算并输出该列表的长度,最大值,最小值,和值,平均值,标准差,中位数。
(要求考虑用户输入了非数字的情况,也要求考虑用户一个数字也没有输入直接回车,即输入了一个空列表的情况,要求对这些异常情况进行处理)



以上是我自己写的代码与运行结果,我的问题就是为什么我不输入数字返回结果不是我实现设定好的提示语句而是直接报错,大家帮我看看我的问题在哪里,以及需要怎么改进才能把这道题完整地运行出来。我目前的代码还不满足题目中要求的输入空列表等异常情况。
...全文
415 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
crifan 2020-04-21
  • 打赏
  • 举报
回复
简答:那主要是因为,你把input的字符串,直接用eval去执行,所以 字符串d 变成变量d,由于没定义,所以报错了。
直接贴出(我花了大量精力)帮你改写后的,相关部分的,代码:

inputValueList = []
summary = 0

while True:
inputStr = input('请输入数值:')
if not inputStr:
# 输入的是空字符串
break

try:
curInputValue = int(inputStr)
print("inputStr=%s -> curInputValue=%s" % (inputStr, curInputValue))
except ValueError as intErr:
print("Convert %s to int error: %s" % (inputStr, intErr))

# 如果是int整数就没必要再去检测是否是浮点数了
if curInputValue is not None:
try:
curInputValue = float(inputStr)
isFloat = True
print("inputStr=%s -> curInputValue=%s" % (inputStr, curInputValue))
except ValueError as floatErr:
print("Convert %s to float error: %s" % (inputStr, floatErr))

if curInputValue is not None:
summary += curInputValue
inputValueList.append(curInputValue)
print("summary=%s, inputValueList=%s" % (summary, inputValueList))
else:
print("您输入的不是数字,请重新输入!")


详解:
见专门为你的写的帖子:
【问答】python入门编程求解
和:
【已解决】Python中如何判断input输入的是整型或浮点数的数字

weixin_45903952 2020-04-17
  • 打赏
  • 举报
回复
eval 先于提示出错,还没运行到提示的语句
shaelyn爱学习 2020-04-17
  • 打赏
  • 举报
回复
亲可以试下用try .....except Exception 。可以把用户输入不合法的抛出就行
shaelyn爱学习 2020-04-17
  • 打赏
  • 举报
回复
亲你好,可以试下用try ,except Exception 抛出异常,把不要的类型抛出就行。
paullbm 2020-04-16
  • 打赏
  • 举报
回复
eval慎用!

import math

y = []
s = 0
k = 0
while 1:
    n = input('请输入数值:')
    if n == '':
        break
    try:
        num = float(n)
        k += 1
        y.append(num)
    except:
        print('您输入的不是数字,请重新输入!')

print(y)
print(f'列表的长度:{len(y)}')
print(f'列表中的最大值:{max(y)}')
print(f'列表中的最小值:{min(y)}')
print(f'列表的和:{sum(y)}')
print(f'列表的平均值:{sum(y) / k}')
h = 0
for i in y:
    h += pow(i - sum(y) / k, 2)
print(f'列表的标准差:{math.sqrt(h / (k - 1))}')
sorted(y)
index = int(k / 2)
if k % 2 == 0:
    print(f'中位数为:{y[index]}和{y[index+1]}')
else:
    print(f'中位数为:{y[index]}')
不太快乐水 2020-04-16
  • 打赏
  • 举报
回复
把第二个if 改成 elif 应该吧...
【完整课程列表】 完整图文版教程 优质的Python基础入门教程 02、程序的灵魂-算法 (共11页).pptx 完整图文版教程 优质的Python基础入门教程 03、Python布尔类型复习4 (共9页).pptx 完整图文版教程 优质的Python基础入门教程 03、Python基本语法1 (共32页).pptx 完整图文版教程 优质的Python基础入门教程 03、Python基本语法2 (共17页).pptx 完整图文版教程 优质的Python基础入门教程 03、Python基本语法3 (共22页).pptx 完整图文版教程 优质的Python基础入门教程 04、Python控制语句-条件语句 (共39页).pptx 完整图文版教程 优质的Python基础入门教程 05、Python控制语句-循环语句1 (共27页).pptx 完整图文版教程 优质的Python基础入门教程 05、Python控制语句-循环语句2 (共21页).pptx 完整图文版教程 优质的Python基础入门教程 06、Python内置数据结构1 (共29页).pptx 完整图文版教程 优质的Python基础入门教程 06、Python内置数据结构2 (共50页).pptx 完整图文版教程 优质的Python基础入门教程 07、Python文件操作 (共19页).pptx 完整图文版教程 优质的Python基础入门教程 08、Python内置数据结构练习 (共18页).pptx 完整图文版教程 优质的Python基础入门教程 09、Python函数 (共96页).pptx 完整图文版教程 优质的Python基础入门教程 10、Python函数练习 (共64页).pptx 完整图文版教程 优质的Python基础入门教程 11、Python函数总结 (共36页).pptx 完整图文版教程 优质的Python基础入门教程 12、Python模块 (共55页).pptx 完整图文版教程 优质的Python基础入门教程 14、Python面向对象编程 (共64页).pptx 完整图文版教程 优质的Python基础入门教程 15、Python异常处理 (共30页).pptx

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧