cari
Rumahpembangunan bahagian belakangTutorial PythonBagaimana menyelesaikan ralat nameerror apabila mencetak corak jam di Python?

Bagaimana menyelesaikan ralat nameerror apabila mencetak corak jam di Python?

Python Beginner Encounters NameError When Printing Hourglass Corak: Analisis Masalah dan Penambahbaikan Kod

Artikel ini menyediakan penyelesaian terperinci kepada NameError: name 'sym' is not defined ralat yang ditemui oleh pemula Python apabila corak corak jam. Kod asal berhasrat untuk menggunakan fungsi print_hourglass untuk mencetak corak jamglass yang terdiri daripada aksara yang ditentukan pengguna, tetapi ralat disebabkan oleh pemprosesan input yang tidak wajar.

Akar masalah terletak pada pemprosesan input kod asal: ia cuba membaca kedua-dua nombor baris dan aksara, tetapi jika format input pengguna tidak betul (contohnya, masukkan satu nombor atau masukkan aksara bukan numerik), map(int, input().split()) fungsi menimbulkan pengecualian ValueError . Lebih penting lagi, walaupun tidak ada ValueError , pembolehubah sym tidak akan ditentukan jika pengguna tidak memberikan input kedua (aksara), yang mengakibatkan NameError .

Kod yang lebih baik menyelesaikan masalah ini dengan pemprosesan input yang lebih mantap dan definisi berubah -ubah:

 def is_integer_string (s):
    "" "Periksa sama ada rentetan input adalah integer" ""
    Cuba:
        int (s)
        kembali benar
    Kecuali ValueError:
        kembali palsu

def print_hourglass (n, sym):
    "" "Corak cetakan jam" "" "
    i = 1
    sementara n> = i * i:
        cetak ('' * (i - 1) sym * (i * 2 -1)) # Formula pembetulan cetak ('' * (i - 1) sym * ((i 1) * 2 -1)) # Formula pembetulan i = 2
    Semasa saya> 0:
        cetak ('' * (i -1) sym * (i * 2 -1)) # Ubah suai formula i -= 2

Cuba:
    n_str = input ("Sila masukkan bilangan baris jam (ganjil):")
    jika is_integer_string (n_str):
        n = int (n_str)
        jika n % 2 == 0:
            Cetak ("Sila masukkan nombor ganjil")
        lain:
            Sym = Input ("Sila masukkan watak yang membentuk jamglass:")
            cetak_hourglass (n, sim)
    lain:
        Cetak ("Input tidak sah, sila masukkan integer")
Kecuali pengecualian sebagai e:
    cetak (f "ralat berlaku: {e}")

Penambahbaikan:

  1. Input yang lebih jelas : Kod menambah input arahan untuk membimbing pengguna untuk memasukkan bilangan baris dan aksara.
  2. Baca input secara berasingan : Kod membaca bilangan baris dan aksara secara berasingan, mengelakkan masalah yang berpotensi dengan fungsi map .
  3. Pemeriksaan Integer : Fungsi is_integer_string memudahkan, menggunakan blok try-except untuk memeriksa sama ada input adalah integer lebih ringkas.
  4. Cek Nombor Ganjil : Menambah cek pada sama ada bilangan garisan input adalah ganjil untuk memastikan paparan corak jam yang betul.
  5. Pengendalian ralat : Gunakan blok try-except untuk menangkap semua pengecualian yang mungkin dan mencetak mesej ralat mesra.
  6. Pembetulan Formula : Formula untuk mencetak corak jam dalam kod asal mempunyai sedikit kecacatan dan telah diperbetulkan untuk membolehkannya mencetak corak jamglass dengan betul.

Dengan penambahbaikan ini, kod ini lebih mantap, dapat mengendalikan pelbagai input pengguna dengan berkesan, elakkan kesilapan NameError , dan mencetak corak jam yang betul.

Atas ialah kandungan terperinci Bagaimana menyelesaikan ralat nameerror apabila mencetak corak jam di Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Python: menyelam mendalam ke dalam kompilasi dan tafsiranPython: menyelam mendalam ke dalam kompilasi dan tafsiranMay 12, 2025 am 12:14 AM

Pythonusesahybridmodelofcompilationandinterpretation: 1) thepythoninterpretercompilessourcodcecodeintoplatform-independentbytecode.2) thepythonvirtualmachine (PVM) thenexecutesthisbytecode, BalantingeaseOfusoWithperformance.

Adakah Python diterjemahkan atau bahasa yang disusun, dan mengapa ia penting?Adakah Python diterjemahkan atau bahasa yang disusun, dan mengapa ia penting?May 12, 2025 am 12:09 AM

Pythonisbothinterpretedandandcompiled.1) it'scompiledtobytecodeforporabilityAcrossplatforms.2) theBytecodeistheninterpreted, membolehkanfordynamictypingandrapiddevelopment, walaupunItmayBeslowerLowerWanLelyCiledlanguages.

Untuk gelung vs semasa gelung di python: perbezaan utama dijelaskanUntuk gelung vs semasa gelung di python: perbezaan utama dijelaskanMay 12, 2025 am 12:08 AM

ForloopsareidealwhenyonesshenumberofiterationsationseSinadvance, whilewhileloopsarebetterforsituationshipheryouneedtoloopuntilaconditionismet.forloopsaremoreeficientablyandable, yang sesuai, manakala whileloopsoffermorecontrolandareusefereficeficeficeficeficient,

Untuk dan semasa gelung: panduan praktikalUntuk dan semasa gelung: panduan praktikalMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance, whilewhileloopsareusedwhenTheiterationsdependonacondition.1) forloopsareidealforiteratingoversequencesLikeListsorArrays.2)

Python: Adakah ia benar -benar ditafsirkan? Membebaskan mitosPython: Adakah ia benar -benar ditafsirkan? Membebaskan mitosMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterinterpreted; itusesahybridapproachofbytecodecompilationandruntimeinterpretation.1) pythoncompilessourcecodeintobytecode, whoomeSthenexecutedbythepythonvirtualmachine (pvm)

Senarai concatenate python dengan elemen yang samaSenarai concatenate python dengan elemen yang samaMay 11, 2025 am 12:08 AM

ToConcatenatelistsinpythonwiththesameelements, gunakan: 1) operatortokokduplicates, 2) asettoremoveduplicates, OR3) listomprehensionfensionfensionfensionfensiontroloverduplicates, setiapmethodhasdifferentperformanceAdordlications.

Ditafsirkan vs bahasa yang disusun: Tempat PythonDitafsirkan vs bahasa yang disusun: Tempat PythonMay 11, 2025 am 12:07 AM

Pythonisaninterpretedlanguage, menawarkanfuseofuseandflexibilitybutfacingperpormancelimitationsincriticalapplications.1) interpretlanguagesepythonexecuteline-by-line, membolehkanMmediateDebackandrapidprototyping.2)

Untuk dan semasa gelung: Bilakah anda menggunakan setiap python?Untuk dan semasa gelung: Bilakah anda menggunakan setiap python?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofiterationsisknowninadvance,andwhileloopswheniterationsdependonacondition.1)Forloopsareidealforsequenceslikelistsorranges.2)Whileloopssuitscenarioswheretheloopcontinuesuntilaspecificconditionismet,usefulforuserinputsoralgorit

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Nordhold: Sistem Fusion, dijelaskan
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna