0

コマンドを使用してプログラムを終了すると、プログラムは終了せず、代わりに「いいえ」と言ったときに別のプログラムを開くと想定します。私のコードは次のとおりです。

import getpass
print 'Hello', getpass.getuser(), ', welcome!'
do = raw_input ('What program would you like to open? ')
if do.lower() == 'browser' or 'internet' or 'Chrome' or 'Google chrome':
    import webbrowser
    webbrowser.open ('www.google.com')
    oth = raw_input ('Are there any others? ')
    if oth.lower() == 'yes' or 'ye' or 'yeah':
        oth2 = raw_input ('Please name the program you would like to open! ')
else:
    import sys
    sys.exit()
4

2 に答える 2

4

見る:

if do.lower() == 'browser' or 'internet' or 'Chrome' or 'Google chrome':

ここには、常にTrueと評価されるいくつかのステートメントがあります。「インターネット」または「クローム」または「グーグルクローム」のそれぞれは、空でない文字列です。値が何であるかは関係ありませんdo.lower()。これは、Pythonがその行をifsomethingまたはTrueと同等であると見なすことを意味します。

代わりに、in演算子を使用して、doがいくつかのオプションの1つであるかどうかをテストします。

if do.lower() in ('browser', 'internet', 'chrome', 'google chrome'):

テストするリストのすべてのオプションを小文字にしたことに注意してください。結局のところ、入力も小文字にするので、「Chrome」と一致することはありません。それは「クローム」か何か他のものになります。

同じことがあなたのラインにも当てはまりますif oth.lower() == 'yes' or 'ye' or 'yeah':

于 2012-07-12T14:57:08.073 に答える
0
if oth.lower() == 'yes' or 'ye' or 'yeah':

あなたの問題は上記の行にあります。

Python では、文字列の真偽値は、文字列が空かどうかによって異なります。例えばbool('')ですFalsebool('ye')ですTrue

おそらく次のようなものが必要です。

if oth.lower() in ('yes','ye','yeah'):

したがって、ブラウザ チェックでも同じ問題が発生します。

于 2012-07-12T14:55:23.217 に答える