Pythonの初心者は、砂時計パターンを印刷するときにNameError
遭遇します:問題分析とコードの改善
この記事ではNameError: name 'sym' is not defined
。元のコードは、 print_hourglass
関数を使用して、ユーザー指定の文字で構成される砂時計パターンを印刷する予定ですが、エラーは不適切な入力処理によって引き起こされます。
問題のルートは、元のコードの入力処理にあります:行番号と文字の両方を読み込もうとしますが、ユーザーの入力形式が正しくない場合(たとえば、1つの番号を入力するか、 ValueError
数値文字を入力します)、 map(int, input().split())
さらに重要なことは、 ValueError
がない場合でも、ユーザーが2番目の入力(文字)を提供しない場合、 sym
変数は未定義になり、 NameError
になります。
改良されたコードは、より堅牢な入力処理と可変定義でこの問題を解決します。
def is_integer_string(s): "" "入力文字列が整数であるかどうかを確認します" " 試す: int(s) trueを返します ValueRerrを除く: falseを返します def print_hourglass(n、sym): "" "砂時計パターンを印刷" "" i = 1 while n> = i * i: print( '' *(i -1)sym *(i * 2 -1))#correction formula print( '' *(i -1)sym *((i 1) * 2 -1))#correction formula i = 2 私は> 0の間: print( '' *(i -1)sym *(i * 2 -1))#式i- = 2を変更する 試す: n_str = input( "砂時計の行数を入力してください(奇数):") is_integer_string(n_str): n = int(n_str) n%2 == 0の場合: 印刷(「奇数を入力してください」) それ以外: sym = input( "砂時計を形成する文字を入力してください:") print_hourglass(n、sym) それ以外: print( "Invalid input、integerを入力してください")) eとしての例外を除く: 印刷(f "エラーが発生した:{e}")
改善:
- より明確な入力プロンプト:コードは入力プロンプトを追加して、ユーザーが行と文字の数を入力するようにガイドします。
-
入力を個別に読み取る:コードは、行と文字の数を個別に読み取り、
map
関数の潜在的な問題を回避します。 -
整数チェック:
is_integer_string
関数が簡素化され、try-except
ブロックを使用して、入力がより簡潔に整数であるかどうかを確認します。 - 奇数チェック:砂時計パターンの正しい表示を確保するために、入力ラインの数が奇数かどうかを確認しました。
-
エラー処理:
try-except
ブロックを使用して、可能なすべての例外と印刷に優しいエラーメッセージをキャッチします。 - 式修正:元のコードに砂時計パターンを印刷するための式にはわずかな欠陥があり、砂時計パターンを正しく印刷できるように修正されています。
これらの改善により、コードはより堅牢で、さまざまなユーザー入力を効果的に処理し、 NameError
エラーを回避し、正しい砂時計パターンを印刷できます。
以上がPythonで砂時計パターンを印刷するときにnameerrorエラーを解くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

pythonusesahybridmodelofcompilation andtertation:1)thepythoninterpretercompilessourcodeodeplatform-indopent bytecode.2)thepythonvirtualmachine(pvm)thenexecuteTesthisbytecode、balancingeaseoputhswithporformance。

pythonisbothintersedand compiled.1)it'scompiledtobytecode forportabalityacrossplatforms.2)bytecodeisthenは解釈され、開発を許可します。

loopsareideal whenyouwhenyouknumberofiterationsinadvance、foreleloopsarebetterforsituationsは、loopsaremoreedilaConditionismetを使用します

henthenumber ofiterationsisknown advanceの場合、dopendonacondition.1)forloopsareideal foriterating over for -for -for -saredaverseversives likelistorarrays.2)whileopsaresupasiable forsaresutable forscenarioswheretheloopcontinupcontinuspificcond

pythonisnotpurelyLepted; itusesahybridapproachofbytecodecodecodecodecodecodedruntimerttation.1)pythoncompilessourcodeintobytecode、whodythepythonvirtualmachine(pvm).2)

ToconcatenateListsinpythothesheElements、使用:1)Operatortokeepduplicates、2)asettoremoveduplicates、or3)listcomplunting for controloverduplicates、各メトドハスディフェルフェルフェントパフォーマンスアンドソーダーインプリテーション。

pythonisantertedlanguage、useaseofuseandflexibility-butfactingporformantationationsincriticalapplications.1)解釈されたlikepythonexecuteline-by-lineを解釈します

Useforloopswhenthenumberofiterationsisknowninadvance、andwhiloopswheniterationsdependonacondition.1)forloopsareidealforsecenceslikelistoranges.2)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
