Tôi có một chuỗi làm đầu vào cho mã tôi đang viết và để một ví dụ về chuỗi là:
"12 inches makes 1 foot"
Mục tiêu của tôi là để mã của tôi chạy qua chuỗi này và chỉ cần rút các số nguyên và thêm chúng. Vì vậy, đầu ra cho chuỗi trên sẽ là 13. Tôi đang sử dụng thử và ngoại trừ ở đây vì một chuỗi đầu vào mẫu khác có thể giống như "Pi là 3,14".
msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
Tôi đã làm những gì ở trên và tôi không nhận được nó để thêm giá trị của A [nếu đó là INT] vào "thesum". Làm thế nào tôi có thể làm cho nó hoạt động? Ngoài ra, tôi muốn có nó trong thử, ngoại trừ định dạng để tôi có thể gọi valueError
Hỏi ngày 28 tháng 4 năm 2016 lúc 1:03Apr 28, 2016 at 1:03
Không cần phải kiểm tra bình đẳng với một chuỗi. Trong thực tế, chỉ cần thử '4' == 4
trong một thông dịch viên. Câu trả lời là False
vì chuỗi và số nguyên không bao giờ tương đương. Chỉ cần đặt thesum += int[a]
vào vòng lặp thay vì câu lệnh
msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
0 của bạn. Nếu bạn không muốn ________ 11 -________ 12, hãy sử dụng msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
3 thay vì msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
4 và lấy ra msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
5 hoàn toàn:for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
Một cách tốt sẽ là sự kết hợp của một số bản dựng:
string = "12 inches makes 1 foot"
total = sum[map[int, filter[str.isdigit, string.split[]]]]
msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
6 chỉ tìm thấy các ký tự là chữ số. Sau đó, chúng tôi chuyển đổi từng thành một số nguyên với msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
7 và tìm tổng số với msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
8.Đã trả lời ngày 28 tháng 4 năm 2016 lúc 1:10Apr 28, 2016 at 1:10
Zondozondozondo
19.3k7 Huy hiệu vàng43 Huy hiệu bạc83 Huy hiệu Đồng7 gold badges43 silver badges83 bronze badges
4
msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
if a == int[a]:
a= int[a]
thesum += a
print [thesum]
except ValueError as e:
print["Value Error: no int present"]
9 là for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
0 và for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
1 là ________ 22 [nếu có thể], vì vậy for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
3 sẽ không bao giờ bằng nhau.Chỉ cần thêm giá trị của
for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
1, nếu chuyển đổi không thành công, nó sẽ tăng for a in s:
if a.isdigit[]:
thesum += int[a]
print[thesum]
5.Các mã sau đây sẽ hoạt động.
msg= "12 inches makes 1 foot"
thesum = 0
s= msg.split[]
for a in s:
try:
thesum += int[a]
except ValueError as e:
print a
print thesum
Đã trả lời ngày 28 tháng 4 năm 2016 lúc 2:19Apr 28, 2016 at 2:19
HootinghootingHooting
1.61111 Huy hiệu bạc20 Huy hiệu Đồng11 silver badges20 bronze badges
Tôi thích "Re" và hiểu để giúp đọc dễ dàng hơn:
import re
print[sum[int[a] for a in re.findall[r'\d+', '12 inches make 1 foot']]]
Sau đó, bạn có thể mở rộng biểu thức thông thường cho phao, v.v.
Đã trả lời ngày 28 tháng 4 năm 2016 lúc 1:22Apr 28, 2016 at 1:22
Swstepheswstepheswstephe
1.76210 Huy hiệu bạc17 Huy hiệu đồng10 silver badges17 bronze badges
1
Hầu hết các phương pháp trước đó đều giảm giá đầu vào thứ hai là "PI là 3,14". Mặc dù câu hỏi đã được đặt ra với sự khẳng định đã nêu về số nguyên phân tích cú pháp. Nó đòi hỏi phải xử lý các con số như float để xử lý thành công đầu vào thứ hai.
import unittest
import re
def isDigit[s]:
return re.match[r'[\d.]+', s]
def stringParse[input]:
input = [i.strip[] for i in input.split[]]
input = filter[lambda x: isDigit[x], input]
input = map[lambda x: float[x], input]
return sum[input]
class TestIntegerMethods[unittest.TestCase]:
def test_inches[self]:
self.assertEqual[stringParse["12 inches makes 1 foot"], 13.0]
def test_pi[self]:
self.assertTrue[stringParse['pi is 3.14'], 3.14]
if __name__ == '__main__':
unittest.main[]
Một vấn đề khác về vấn đề
Đã trả lời ngày 28 tháng 4 năm 2016 lúc 2:41Apr 28, 2016 at 2:41
1