Python 核心编程 习题2-11

在求和之后,不能进行求平均。不知道循环坏在哪了。

menu = int(raw_input('1: sum, 2: average,X: quit'))
while menu != 'X':
    a = []
    i = 0
    if menu == 1:
        for i in range(0, 5):
            a += [raw_input('type a number')]
        b = 0
        for n in a:
            b += float(n)

        print b
    elif menu == 2:
        for i in range(0, 5):
            a += [raw_input('type a number')]
        b = 0
        for n in a:
            b += float(n)

        print b / 5.0
    else:
        "please type correct number"
    menu = (raw_input('1: sum, 2: average,X: quit'))
阅读 2.6k
3 个回答

这样写~

while 1:
    menu = raw_input('1: sum, 2: average,X: quit')
    if menu == 'X':break
    try:menu = int(menu)
    except:continue
    
    a = []
    i = 0
    if menu == 1:
        for i in range(0, 5):
            a += [raw_input('type a number')]
        b = 0
        for n in a:
            b += float(n)

        print b
    elif menu == 2:
        for i in range(0, 5):
            a += [raw_input('type a number')]
        b = 0
        for n in a:
            b += float(n)

        print b / 5.0
    else:
        "please type correct number"

你最后一行代码输出是字符串,你的while判定内部是数值判定,当然有问题,最后一行要加int转换

會想這樣寫:

while True:
    menu = raw_input('(1)sum (2)average (X)quit : ')
    if menu not in ['1', '2', 'X']:
        print 'incorrect option'
        continue
    if menu == 'X':
        print 'byebye'
        break
    try:
        numbers = [float(n) for n in raw_input('type several numbers: ').strip().split()]
        s = sum(numbers)
    except:
        print 'incorrect numbers'
        continue
    if menu == '1':
        print 'sum of {}: {}'.format(numbers, s)
    elif menu == '2':
        avg = s/len(numbers)
        print 'average of {}: {}'.format(numbers, avg)
  • 盡可能處理所有可能的非預期狀況, 包括非預期動作和不正確的輸入等

    • 題主代碼中 "please type correct number" 訊息沒有被打印出來

    • 對於用來運算 sum 和 avg 的資料, 沒有考慮到輸入非數字

  • 獲取輸入的代碼可以只寫一次

  • 不限制輸入的數量, 可以計算任意數量數字的 和 與 均值

  • 使用 sum 來計算總合


我回答過的問題: Python-QA

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题