使用异常并将数据写入python 3中的文件

时间:2014-03-29 20:27:03

标签: python exception python-3.x syntax

这就是我需要做的事情:

如果用户选择菜单上没有的任何项目,您的程序必须引发异常 呈现。除了引发异常外,还要编写代码来处理此异常。

要求用户提供要转换的值。您的程序必须引发异常,并在输入时处理异常 发生错误

执行转换并写入原始值,即原始单位 转换后的值,并将转换后的单位转换为名为的输出文件 conversions.txt。

重复步骤a和b 10次(循环)。

继承我的代码:

#imports

import os

# global variables
mile_choice = 1
gallon_choice = 2
pound_choice = 3
inch_choice = 4
fah_choice = 5
quit_choice = 6

mainfile = open('conversions.txt', 'w')

# intro and global name variable

name = input ('what is your name? ')
print()
print('hello',name,', today we will be doing\
some standard to metric conversions.')

#define main function
def main():

    choice = 0

    while choice != quit_choice:

             display_menu()

             print()
             choice = int(input('Please enter a number 1 - 6 : '))\

             if choice == mile_choice:
                    print()
                    miletokm()

             elif choice == gallon_choice:
                    print()
                    galtolit()

             elif choice == pound_choice:
                    print()
                    poundstokg()

             elif choice == inch_choice:
                    print()
                    inchtocm()

             elif choice == fah_choice:
                    print()
                    fahtocel()

             elif choice == quit_choice:
                    print()
                    print('Exiting the program.')




#define functions
def display_menu():
    print()
    print('          Menu          ')
    print()
    print('Press 1 for Miles to Kilometers')
    print()
    print('Press 2 for Gallons to Liters')
    print()
    print('Press 3 for Pounds to Kilograms')
    print()
    print('Press 4 for Inches to Centimeters')
    print()
    print('Press 5 for Fahrenhiet to Celisus')
    print()
    print('To exit please enter 6 ')



def miletokm():
     invalid_attempts = 0

 #while loop for invalid input limited to 3

    while invalid_attempts < 3 and invalid_attempts >= 0:
        print()
        mile = float(input('how many miles would you\
 like to convert to kilometers? '))
        mainfile.write(str(mile) + '\n')

 # if statement to determine weather to proceed with conversation
 # valid input = conversion
 # invalid input =  return with + 1 to invalid_attempt count

    if mile >= 0 :

        print()
        mile_conv = mile * 1.6
        print('that would be:', format(mile_conv, '.2f'), 'kilometers.')
        print()
        mainfile.write(str(mile_conv) + '\n')
        return mile


    else:

        print()
        print ('invalid input')
        print()
        invalid_attempts += 1

我遗漏了另一个转换def。帮助缩短它。

我首先遇到异常部分的问题,并且最常见。 我尝试了各种各样的东西,但我无法弄清楚如何正确地编写代码 我知道如何为在菜单范围之外输入的数字定义值错误 我不明白如何编写单位以及输入到文件中的数据。 我现在拥有的方式是,它不会向mainfile写入任何信息。

我也觉得我的代码很草率。我不知道,因为我的教授拒绝帮助我。

我知道很多事情已经完成,但我真的无处可去。我不明白我应该如何构建代码以及如何有效地完成我需要完成的工作。 我所阅读的内容涵盖了这一点的基础,但除了非常简单的简单例子之外,我没有其他例子可以看待。

3 个答案:

答案 0 :(得分:0)

您可以尝试类似......(来自http://docs.python.org/2/tutorial/errors.html#exceptions

>>> while True:
...     try:
...         x = int(raw_input("Please enter a number: "))
...         break
...     except ValueError:
...         print "Oops!  That was no valid number.  Try again..."
...

答案 1 :(得分:0)

你走在正确的轨道上。您需要做的第一件事就是更好地处理用户为您提供的choice值。检查如果他们为您提供9'foo'会发生什么。

接下来,您应该对转换单位的函数中收到的每个值执行相同的操作。为此,当@bitfish向您展示时使用try/except(除了您使用input而不是raw_input)。

答案 2 :(得分:0)

  1. 关闭您打开的文件(mainfile.close()
  2. 在此elif choice == quit_choice:内执行此while choice != quit_choice毫无意义
  3. 使用'\n'跳过行(print('\n')print()两次相同
  4. 有很多方法可以解决这样的问题,白色你会获得的经验你会发现更优雅的,但这个已经没问题。