有购物小票内容如下: 牛奶:89.9元 火腿:15.9元 雪碧:39元 鲜花:112元 首先定义一个字符串保存购物小票的内容,然后通过常用的字符串方法和正则表达式获取每件商品名称及其对应的价格,按行打印出商品名称和价格,最后打印出总价,最终在控制台输出效果如下: 商品名称 价格(元) -------------------- 牛奶 89.9 火腿 15.9 雪碧 39 鲜花 112 -------------------- 总价 256.8 注:名称和价格之间可以用2个以上的制表符\t来实现对齐显示
时间: 2023-08-15 17:17:59 浏览: 97
好的,我已经理解了您的问题。以下是代码实现:
```python
import re
# 定义购物小票字符串
receipt = "牛奶:89.9元\n火腿:15.9元\n雪碧:39元\n鲜花:112元"
# 通过正则表达式获取商品名称和价格
pattern = r'(\S+):(\d+(?:\.\d+)?)元'
items = re.findall(pattern, receipt)
# 打印商品名称和价格
print("商品名称\t\t价格(元)")
print("-" * 20)
total_price = 0
for item in items:
name, price = item
print(f"{name}\t\t{price}")
total_price += float(price)
# 打印总价
print("-" * 20)
print(f"总价\t\t{total_price}")
```
运行以上代码,控制台将输出以下效果:
```
商品名称 价格(元)
--------------------
牛奶 89.9
火腿 15.9
雪碧 39
鲜花 112
--------------------
总价 256.8
```
希望这能帮助到您!
相关问题
有购物小票内容如下: 牛奶:89.9元 火腿:15.9元 雪碧:39元 鲜花:112元 首先定义一个字符串保存购物小票的内容,然后通过常用的字符串方法和正则表达式获取每件商品名称及其对应的价格,按行打印出商品名称和价格,最后打印出总价,最终在控制台输出效果如下: 商品名称 价格(元) -------------------- 牛奶 89.9 火腿 15.9 雪碧 39 鲜花 112 -------------------- 总价 256.8 注:名称和价格之间可以用2个以上的制表符\t来实现对齐显示
可以通过以下代码实现上述功能:
```python
import rereceipt = "牛奶:89.9元 火:15.9元 雪碧:39元 鲜:112元"
# 使用正则表达式取商品名称和价格
items = re.findall(r(\w+):(\d+(\.\d+)?)', receipt)
# 打印表格头部
("商品名称\t\t价格(元")
print("--------------------")
打印商品名称和价格total_price = 0
for item items:
name, price, _ = item print(f"{name}\t\t{}")
total_price += float(price)
# 打印表格底部和总价
print("--------------------")
print(f"总价\t\t\t{total_price}")
```
运行结果:
```
商品名称 价格(元)
--------------------
牛奶 89.9
火腿 15.9
雪碧 39
鲜花 112
--------------------
总价 256.8
```
2.理解代码,写出执行结果。 System. out. println("b". matches("[abc]")); System. out. println("b". matches("[^abc]")); System. out. println("A". matches("[a-zA-Z]")); System. out. println("A". matches("[a-z[A-Z]]")); System. out. println("R". matches("[A-Z&&[RFG]]")); System. out. println("\n\t". matches("\\s{2}")); System. out. println("". matches("\\S")); System. out. println("3". matches("\\d")); System. out. println("&". matches("\\D")); System. out. println("a_8". matches("\\w{3}")); System. out. println("\n". matches(".")); System. out. println("\\u0041\\\\". matches("A\")); System. out. println("aaaa". matches("a*")); System. out. println("aaaa". matches("a+")); System. out. println("aaaa". matches("a?")); System. out. println("". matches("a?")); System. out. println("aaaa". matches("a{4}")); System. out. println("abcabcabc". matches("(abc){2,}")); System. out. println("4563456257". matches("\\d{3,10}")); 3.理解代码,写出程序功能。 String s="abc 123 abc1234abcabc"; String s1="abc"; int count=0; int index=0; while((index=s. indexOf(s1, index))!=-1){ index+=s1. length; count++; } System. out. println(count); 4、写出使用StringBuffer判断是否为回文串的代码? 5、利用Pattern和Matcher,查找字符串s (“123abcsfs123a1213c34sf32324f243aa45c c99”)中所有有连续数字(出现2次及以上,例如:123)的起始位置和对应的数字字符串。 思考(选做)找到字符串中出现的两位数。 6、购物小票内容如下: 牛奶:89.9元香肠:12.9元啤酒:69元巧克力:132元 要求使用StringTokenizer类,输出购物小票中的价格数据,并计算出菜单的总价格。
2. 执行结果:
true
false
true
false
false
true
false
true
false
true
true
false
true
true
true
false
true
true
3. 程序功能:统计字符串s中子串s1出现的次数。
4. 使用StringBuffer判断是否为回文串的代码:
```
public static boolean isPalindrome(String s) {
StringBuffer sb = new StringBuffer(s);
sb.reverse();
String reversed = sb.toString();
return s.equals(reversed);
}
```
5. 利用Pattern和Matcher,查找字符串s中所有有连续数字(出现2次及以上,例如:123)的起始位置和对应的数字字符串:
```
String s = "123abcsfs123a1213c34sf32324f243aa45cc99";
Pattern pattern = Pattern.compile("\\d{2,}");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println("起始位置:" + matcher.start() + ",数字字符串:" + matcher.group());
}
```
6. 输出购物小票中的价格数据,并计算出菜单的总价格:
```
StringTokenizer st = new StringTokenizer("牛奶:89.9元 香肠:12.9元 啤酒:69元 巧克力:132元", " ");
double totalPrice = 0.0;
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.contains(":")) {
String[] arr = token.split(":");
double price = Double.parseDouble(arr[1].replace("元", ""));
System.out.println(arr[0] + "的价格是:" + price);
totalPrice += price;
}
}
System.out.println("总价格:" + totalPrice);
```
阅读全文