2017-08-31 5 views
0

文字列を整数で入力すると、ユーザからの入力を受け取り、すべての整数が削除されるようなプログラムを書いています。&文字のみを表示します。私は小文字(97 <= x >= 122)またはスペース(x == 32)をチェックしたときにPython - 私の条件はASCII文字セットでは機能しません

letters = input("Enter Some Word Here: ") 
ans = "" 
for letter in letters: 
x = ord(letter) 
print(x) 
if 65 <= x >= 90 or 97 <= x >= 122 or x == 32: 
    ans += letter 
print(ans) 

if condition文は動作しますが、それは大文字(65 <= x >= 90)では動作しません。

+0

条件は '(65 <= x <= 90)'ではない '(65 <= x > = 90)' –

+0

あなたの間違いを除いて、私はこれは 'print(letter.isalpha()やletter == ''の場合の手紙文字)' –

+1

@DanielH 'x'が' 122'より大きい場合は 'True'と評価されます。基本的に '97 <= x and x > = 122'を意味します。これは' 122 <= x'に相当します。 –

答えて

3

すると、x6590株式会社との間にあるかどうかを確認したい場合、あなたは65 <= x <= 90を書く必要があり、あなたがord('A')代わりの65ord('Z')の代わり90を書いた場合も、それはあなたのコードをより明確にすることがあります。

2

文字を確認する正しい方法は、x.isalpha()です。これは、序数の値にマジックナンバーを使用するよりもはっきりしており、英語以外の言語のコードを実行したい場合、またはwords with accented charactersを使いたい場合でも機能します。

これで失敗します。 、'A''Z''a''z'、直接' 'を比較する;。あなたは<=>=で文字を比較することができ

あなたが望むことは'A'Z」に以下letterxにある以下の」あります''であり、これは'A' <= letter <= 'Z'、正規の数学のように。あなたが持っているもの、65 <= x >= 90は、xを65以上かつ90以上にすることを意味します。これはちょうど90以上のものと同じです。

+1

私はこれ以上upvoteできればいいと思う。以下も参照してください:[すべてのソフトウェア開発者が絶対に最低限、絶対にUnicodeと文字セットについて熟知している必要があります(言い訳はありません)](https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every - ソフトウェア開発者 - 絶対に積極的に - ユニコードとキャラクタセットについて - 言い訳なし/) –

+0

ユニコードに関する資料をくれてありがとう –

関連する問題