ARONGLIN 发表于 2020-5-15 18:36:48

请问这个怎么循环添加商品,然后再结算?

#设置满减活动,打折活动的选项

while 1:
    while True:
      commodity = int(input("请输入商品货号:"))
      price = float(input("请输入商品单价:"))
      if(price < 0):
            print("输入不合法!")
      amount = int(input("请输入商品数量:"))
      total_price = price * amount
      print("原价:",total_price)

      print("1.一件8.8折,俩件7.8折")
      print("2.满500减100,满800减200,满1000减300")

      sale = int(input("请输入折扣活动:"))
      i = 0
   
#结算收银
   
      #打折活动   
      if sale == 1:
            if amount >= 1:
                total_price1 = total_price * 0.88

            if amount >= 2:
                total_price1 = total_price * 0.78

            print("折后价:",total_price1)

      #满减活动
      if sale == 2:

            if (total_price >= 500) :
                i += 100
                total_price1 = total_price - i
               

            if (total_price >= 800) :
                i += 100
                total_price1 = total_price - i

            if (total_price >= 1000) :
                i += 100
                total_price1 = total_price - i

            print("折后价:",total_price1)
            
               
            
      else :
            total_price1 = total_price
            print(total_price1)


      payment = int(input("请输入付款金额:"))
      margin = payment - total_price1


      if (margin >= 0):
            print("找零:",str(margin))
      else:
            print("余额不足!")

      mylog = open('recode.log', mode = 'a',encoding='utf-8')
      for i in range(1):
            print(total_price, file=mylog)
      mylog.close()
      break

liuzhengyuan 发表于 2020-5-15 18:38:56

while True:

永恒的蓝色梦想 发表于 2020-5-15 18:44:32

死循环套死循环,人类迷惑行为

qiuyouzhi 发表于 2020-5-15 18:52:56

为啥要写俩while循环呢?
直接一个while True,然后再设置条件退出不就好了??

_2_ 发表于 2020-5-15 19:14:33

永恒的蓝色梦想 发表于 2020-5-15 18:44
死循环套死循环,人类迷惑行为

……额{:10_269:}

Twilight6 发表于 2020-5-16 02:29:01

半夜睡不着,代码全部帮你敲好了,大改了一下

while True:
    while True:
      commodity = input("请输入商品货号(输入Esc退出程序):")
      if commodity == 'Esc':
            break
      price = input("请输入商品单价:")
      if not price.isdigit() or not commodity.isdigit() or float(price) <= 0 :# 判断输入是否为数字 和 是否大于零
            print("输入不合法!请重新输入!")
            continue
      break
    if commodity == 'Esc':
      break
    while True:
      amount = input("请输入商品数量:")
      if not amount.isdigit() and int(amount) < 0:# 判断输入是否为数字 和 是否大于零
            print("输入不合法!请重新输入!")
      else:
            amount = int(amount)
            total_price = float(price) * amount
            temp = str(int(total_price))
            break

    print("总价:%.2f"%total_price)
    print("现在本店有两种活动,输入1,2进行选择~")
    print("1.十件8.8折,十五件7.8折")
    print("2.满500减100,满800减200,满1000减300")

    while True:
      sale = input("请输入折扣活动:")
      ifsale != '2' and sale != '1':
            print("输入不合法!请重新输入1 或 2 !")
            continue
      break

    # 打折活动
    if sale == '1':
      if amount >= 15:
            total_price = total_price * 0.78

      elif amount >= 10:
            total_price = total_price * 0.88

      print("活动1折后价:%.2f"%total_price)

    # 满减活动
    elif sale == '2':

      if total_price >= 1000:
            total_price -= 300
      elif total_price >= 800:
            total_price -= 200
      elif total_price >= 500:
            total_price -= 100
      print(total_price)

      print("活动2折后价:%.2f"%total_price)
    elif int(total_price) == int(temp):
      print('不满足活动条件,未参与活动!')
      sale = 0
    while True:
      try:
            payment = int(input("请输入付款金额:"))
            break
      except ValueError:
            print('输入不合法!请重新输入!')

    margin = payment - total_price

    if margin >= 0:
      print("找零:", margin)
    else:
      print(f"还差{-margin}元,已记账")
    goods = '|商品货号:{:^3}   |商品单价:{:^3}   |商品数量:{:^3}    |原价:{:^5}    |参与活动:{:^2}    |活动后价格:{:^5}   |实付款:{:^5}    |找零或欠账:{:^5}\n'\
      .format(commodity,price,amount,temp,sale,total_price,payment,margin)
    with open('Goods.txt','a',encoding='utf-8') as f:
      f.write(goods)
如果帮助到你了 给个最佳吧~{:10_287:}

ARONGLIN 发表于 2020-5-16 10:46:16

qiuyouzhi 发表于 2020-5-15 18:52
为啥要写俩while循环呢?
直接一个while True,然后再设置条件退出不就好了??

网上百度的{:9_220:}

Twilight6 发表于 2020-5-16 10:48:02

ARONGLIN 发表于 2020-5-16 10:46
网上百度的

你输入多次商品后,可以在这个这个脚本文件下找到txt文件的,打开里面有你输入的内容

ARONGLIN 发表于 2020-5-16 10:51:39

Twilight6 发表于 2020-5-16 02:29
半夜睡不着,代码全部帮你敲好了,大改了一下

如果帮助到你了 给个最佳吧~

请输入商品货号(输入Esc退出程序):1633
请输入商品单价:168
请输入商品数量:3
总价:504.00
现在本店有两种活动,输入1,2进行选择~
1.1件8.8折,2件7.8折
2.满500减100,满800减200,满1000减300
请输入折扣活动:1
活动1折后价:393.12
请输入付款金额:400
找零: 6.8799999999999955
请输入商品货号(输入Esc退出程序):Esc
>>>


请输入商品货号(输入Esc退出程序):1633
请输入商品单价:262
请输入商品数量:3
总价:786.00
现在本店有两种活动,输入1,2进行选择~
1.1件8.8折,2件7.8折
2.满500减100,满800减200,满1000减300
请输入折扣活动:1
活动1折后价:613.08
请输入付款金额:650
找零: 36.91999999999996
请输入商品货号(输入Esc退出程序):
请输入商品单价:
输入不合法!请重新输入!
请输入商品货号(输入Esc退出程序):
请输入商品单价:1636
输入不合法!请重新输入!
请输入商品货号(输入Esc退出程序):

是不是搞错了老哥,这个是运行结果

Twilight6 发表于 2020-5-16 10:52:24

ARONGLIN 发表于 2020-5-16 10:51
是不是搞错了老哥,这个是运行结果

文本 在你的这个代码文件夹下!!!!

ARONGLIN 发表于 2020-5-16 11:19:25

qiuyouzhi 发表于 2020-5-15 18:52
为啥要写俩while循环呢?
直接一个while True,然后再设置条件退出不就好了??

一个while,设置退出不能跳出来,我想的流程是:连续添加商品,然后在选折扣,最后再结账。
现在连续添加商品这里不能循环就很难受

ARONGLIN 发表于 2020-5-16 11:21:19

Twilight6 发表于 2020-5-16 10:48
你输入多次商品后,可以在这个这个脚本文件下找到txt文件的,打开里面有你输入的内容

哦哦看到了

ARONGLIN 发表于 2020-5-16 11:26:35

Twilight6 发表于 2020-5-16 10:48
你输入多次商品后,可以在这个这个脚本文件下找到txt文件的,打开里面有你输入的内容

谢谢啦{:9_223:}
页: [1]
查看完整版本: 请问这个怎么循环添加商品,然后再结算?