Program ini seharusnya menggunakan dua nama, dan jika panjangnya sama, harus memeriksa apakah kata-katanya sama. Jika itu kata yang sama itu akan mencetak "Nama-nama itu sama" . Jika mereka memiliki panjang yang sama tetapi dengan huruf yang berbeda itu akan mencetak "Nama-nama berbeda tetapi panjangnya sama" . Bagian saya mengalami masalah adalah di 4 baris bawah.
#!/usr/bin/env python
# Enter your code for "What's In (The Length Of) A Name?" here.
name1 = input("Enter name 1: ")
name2 = input("Enter name 2: ")
len(name1)
len(name2)
if len(name1) == len(name2):
if name1 == name2:
print ("The names are the same")
else:
print ("The names are different, but are the same length")
if len(name1) > len(name2):
print ("'{0}' is longer than '{1}'"% name1, name2)
elif len(name1) < len(name2):
print ("'{0}'is longer than '{1}'"% name2, name1)
Ketika saya menjalankan kode ini akan ditampilkan:
Traceback (most recent call last):
File "program.py", line 13, in <module>
print ("'{0}' is longer than '{1}'"% name1, name2)
TypeError: not all arguments converted during string formatting
Setiap saran sangat dihargai.
sumber
f"'It will cost ${your_variable} dollars."
Kesalahan ada di pemformatan string Anda.
Cara yang benar untuk menggunakan pemformatan string tradisional menggunakan operator '%' adalah dengan menggunakan string format printf-style (dokumentasi Python untuk ini di sini: http://docs.python.org/2/library/string.html#format- string-syntax ):
Namun, operator '%' mungkin akan usang di masa mendatang . Cara PEP 3101 baru dalam melakukan sesuatu adalah seperti ini:
sumber
{}
. Dan tiba-tiba 3,5 membawa PEP 461:%
format untuk byte . Ini membuat saya berpikir%
sisa - sisa untuk waktu yang lama datang.%
lebih ringkas. Senang tinggal bersama kami."'%s' is longer than '%s'" % (name1, name2)
lebih ringkas daripadaf"'{name1}' is longer than '{name2}'"
Bagi saya, kesalahan ini disebabkan ketika saya mencoba untuk memasukkan tuple ke metode format string.
Saya menemukan solusi dari pertanyaan / jawaban ini
Menyalin dan menempelkan jawaban yang benar dari tautan (BUKAN PEKERJAAN SAYA) :
sumber
print("this is a tuple: %s" % str(thetuple))
atauprint("this is a tuple: %s" % repr(thetuple))
Dalam kasus saya, itu karena saya hanya perlu satu
%s
, saya kehilangan input nilai.sumber
Selain dua jawaban lainnya, saya pikir lekukan juga salah dalam dua kondisi terakhir. Syaratnya adalah bahwa satu nama lebih panjang dari yang lain dan mereka harus mulai dengan 'elif' dan tanpa lekukan. Jika Anda menempatkannya dalam kondisi pertama (dengan memberinya empat lekukan dari margin), itu berakhir menjadi kontradiktif karena panjang nama tidak dapat sama dan berbeda pada saat yang sama.
sumber
Ada kombinasi masalah yang ditunjukkan dalam beberapa jawaban lainnya.
Saya telah memberikan contoh .format dan juga tuple lewat ke specifier argumen dari% s. Dalam kedua kasus lekukan telah diperbaiki sehingga lebih besar / kurang dari cek di luar dari saat panjang cocok. Juga mengubah pernyataan if ke elif sehingga mereka hanya berjalan jika pernyataan level sebelumnya yang sama adalah False.
Pemformatan String dengan .format
Memformat String dengan% s dan tupel
sumber
Dalam python 3.7 dan di atasnya ada cara baru dan mudah. di sini adalah sintaks:
Keluaran:
sumber
Bagi saya, ketika saya menyimpan banyak nilai dalam satu panggilan cetak, solusinya adalah membuat variabel terpisah untuk menyimpan data sebagai tuple dan kemudian memanggil fungsi cetak.
sumber
Saya menemukan kesalahan juga,
Tetapi list args bekerja dengan baik.
Saya menggunakan mysqlclient python lib. Lib sepertinya tidak menerima tuple args. Untuk lulus daftar, args seperti
['arg1', 'arg2']
akan bekerja.sumber
django query sql mentah dalam tampilan
sumber