Considering migrating to Python from Visual Basic 6 for engineering applications
wrong.address.1 at gmail.com
wrong.address.1 at gmail.com
Fri Feb 19 06:11:04 EST 2016
On Friday, 19 February 2016 03:06:58 UTC+2, Steven D'Aprano wrote:
> On Fri, 19 Feb 2016 02:35 am, wrong.address.1 at gmail.com wrote:
>
> > I am almost eager to do this but want to be sure that I know the pitfalls
> > in using Python for my purposes. Thanks for your encouraging response.
>
> Honestly "wrong.address.1", the ONLY pitfall you need to be aware of is to
> beware of trying to write VB code using Python's interpreter. Python has
> it's own way of doing things, and if you insist on doing them "just like
> VB" you will end up with horrible, slow, inefficient, unusable code.
This I am aware of. And it is not a problem.
> That's
> not to say that VB is worse, or Python is worse, just that they are
> different. You don't use a hammer the same was a screwdriver.
>
> Python is a 20+ year old language used by millions of professionals all over
> the world for everything from quick scripting, scientific computing, web
> applications, long-running server applications, and everything in between.
> The answer to every one of your questions "Can Python do X?" will be one
> of:
>
> (1) Yes it can.
>
> (2) No, but instead it will do Y which gives you the same result.
>
>
> I'll be frank, to come here and ask a bunch of questions like:
>
> "Is it necessary to read one character at a time...?"
>
> is a little bit rude. I don't want to discourage you from asking questions,
> but think about *how* you ask them. What you're doing is a little bit like
> going to a car dealer, looking at the cars, then asking a bunch of
> questions:
No, I first saw this trouble in VB.net. Later I found there was an input command which allowed me to read numbers in varying formats more or less like in Fortran or Basic. I really hope Python has decent ways of reading numeric data which may not follow regular formats.
>
> "So... does this car have a reverse gear or can it only go forward? Do the
> doors open for entry, or do I have to squeeze through the windows? Can I
> use the radio while driving, or is there only enough power for one at a
> time?"
>
> In most programming communities, if you start asking questions like that,
> you can expect to be ignored or abused. Good thing we're a friendly
> bunch :-)
I hope it was not rude. At least I did not mean to be.
>
>
> Instead, a good question is:
>
> "How do I read a bunch of numbers from a text file?"
>
>
> I'll show you, not only how to read a bunch of numbers, but how to write
> them first.
>
> Of course there are a million different ways you can do this, and for
> serious use you will probably want to use something like a CSV (Comma
> Separated Values) file like Excel produces, but for a quick idea of how
> Python works, let's write some numbers to a file, one per line. Comments
> start with # and have no effect. Remember that indentation is meaningful:
> you must use the same number of spaces as shown in my code.
>
> Copy and paste this code into the Python interpreter:
>
>
>
> # ===== cut =====
>
> # Define some numbers.
> numbers = [1, 45, 38, 99, 1002, 83025, 234, 55, 273, 2]
> # Open a file for writing.
> with open("myfile.txt", "w") as f:
> # Write each number to the file, one per line.
> for number in numbers:
> print("Writing %d to the file." % number)
> f.write(str(number) + "\n")
>
> # ===== cut =====
>
>
>
> And that's done. Five lines of code, ignoring comments. Now let's read them
> back and see if they're the same:
>
>
> # ===== cut =====
>
> # Prepare a list to hold the numbers.
> data = []
> # Open a file for reading.
> with open("myfile.txt", "r") as f:
> # Read each line.
> for line in f:
> value = line.strip() # Get rid of trailing newline.
> print("Read %s from the file." % value)
> data.append(int(value))
>
I have not yet learnt any Python so I do not understand almost anything. Besides, I will have to read data given to me by people, which may not come in nice formats like CSV, or pre-written by Python.
> # Confirm the numbers read in are the same as those written out.
> if data != numbers:
> print("mismatch in values")
>
> # Print the sorted values.
> print(sorted(data))
>
> # ===== cut =====
>
>
>
> Does this help?
>
Yes. Thanks for your response. I am clear about that I will have to think in a different way and not try to convert VB to Python line by line.
>
>
> --
> Steven
More information about the Python-list
mailing list