鱼C论坛

 找回密码
 立即注册
楼主: ooxx7788

[技术交流] python:每日一题 33

[复制链接]
发表于 2018-4-17 20:17:31 | 显示全部楼层
本帖最后由 天天学习$ 于 2018-4-17 20:21 编辑

def tickets(people):
    i = 0
    for temp in people:
        if (temp - 25) == 0 or (temp - 25) <= (i * 25) :
            pass
            
        else:
            return 'no'
            break
        i += 1
    return 'yes'
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-26 21:23:09 | 显示全部楼层
貌似可行

  1. def Booking(x):
  2.     y ={100:0,50:0,25:0}
  3.     for each in x:
  4.         if each == 100:
  5.             y[100] += 1
  6.             if y[50] >= 1 and y[25] >= 1:
  7.                 y[50] -= 1
  8.                 y[25] -= 1
  9.             elif y[25] >= 3:
  10.                 y[25] -= 3
  11.             else:
  12.                 break  
  13.         elif each == 50:
  14.             y[50] += 1
  15.             if y[25] >= 1:
  16.                 y[25] -= 1
  17.             else:
  18.                 break
  19.         elif each == 25:
  20.             y[25] += 1
  21.         else:
  22.             return '输入有误!'
  23.     else:
  24.         return 'yes'
  25.     return 'no'

  26. x = list(map(int,input('请输入排队购票金额:').split()))
  27. result = Booking(x)
  28. print(result)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-16 23:24:51 | 显示全部楼层
a = [25,50,25,50,50,25,100]
n25 = 0
n50 = 0
n100 = 0
for i in range(0,6):
if a[i] == 25:
  n25 = n25 + 1
  if i == 6:
    print("yes")
if a[i] == 50:
     n50 = n50+1
     if n25 > 0:
         n25 = n25-1
     else:
         print("no")
if a[i] == 100:
     if n50>0:
        n50 = n50 -1
     if n25>2:
         n25 = n25 -3
     else:
         print('no')
自己这个程序有问题,感觉自己写的好累,还是要多加油
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-1 14:33:38 | 显示全部楼层
学习一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 16:45:52 | 显示全部楼层
看看楼主的方法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-23 16:46:53 | 显示全部楼层
  1. def tickets(people):
  2.     ticketmoney ={'25':0,'50':0,'100':0}
  3.     x=0
  4.     for i in range(len(people)):
  5.         x+=1
  6.         if people[0] != 25:
  7.             return 'No'
  8.             break
  9.         ticketmoney[str(people[i])]+=1
  10.         if people[i]==50:
  11.             if ticketmoney['25']>=1:
  12.                 ticketmoney['25']-=1
  13.             else:
  14.                 return 'No'
  15.                 break
  16.         if people[i]==100:
  17.             if ticketmoney['50']==0 and ticketmoney['25']>=3:
  18.                 ticketmoney['25']-=3
  19.             elif ticketmoney['25']>1 and ticketmoney['50']>=1 :
  20.                 ticketmoney['25']-=1
  21.                 ticketmoney['50']-=1
  22.             else:
  23.                 return 'No'
  24.                 break
  25.         if x==len(people):
  26.             return 'Yes'
  27. people =[25, 25,50]
  28. print(tickets(people))
  29. 结果“Yes”
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-2 21:09:12 | 显示全部楼层
本帖最后由 jiaozhu80 于 2018-9-3 12:08 编辑

def ticket(people):
    price_dict={25:0,50:0}
    result=[]
    for i in range(len(people)):
        if people[i]==25:
            result.append("yes")
            price_dict[25]+=1
        elif people[i]==50:
            if price_dict[25]>1 or price_dict[25]==1:
                result.append("yes")
                price_dict[25]-=1
                price_dict[50]+=1
            else:
                result.append("no")
        elif people[i]==100:
            if (price_dict[25]*price_dict[50]>=1)  or (price_dict[25]==3):
                result.append("yes")
                if price_dict[50]>=1:
                    price_dict[25]-=1
                    price_dict[50]-=1
                else:
                    price_dict[25]-=3
            else:
                result.append("no")
    print(price_dict[25],price_dict[50],result)


    if "no" not in result:
        return "yes"
    else:
        return "no"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-2 21:12:53 | 显示全部楼层
您好:请问if __name__=="__main__":表示什么意思?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 22:55:17 | 显示全部楼层
I love Fishc
  1. def tickets(people):

  2.     count=0
  3.     for i in people:
  4.         sum=count*25
  5.         if  i-sum>25 or  (i-sum)%25!=0:
  6.             print(i,sum)
  7.             return 'no'
  8.         count += 1

  9.     else:
  10.         print(i, sum)
  11.         return 'yes'

  12. print(tickets([25,50,100]))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-25 23:00:15 | 显示全部楼层

还是有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-27 13:41:11 | 显示全部楼层
感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-11 16:29:54 | 显示全部楼层
  1. def tickets(people):
  2.     total = {25:0,50:0,100:0}

  3.     for i in range(len(people)):
  4.         if i == 0 and people[0] != 25:
  5.             return 'no'
  6.         elif people[i] == 50 and total[25] == 0:
  7.             return 'no'
  8.         elif people[i] == 25:
  9.             total[25] += 1
  10.         elif people[i] == 50 and total[25] >= 1:
  11.             total[25] -= 1
  12.             total[50] += 1
  13.         elif people[i] == 100:
  14.             if total[50] == 0 and total[25] < 3:
  15.                 return 'no'
  16.             elif total[50] > 0 and total[25] == 0:
  17.                 return 'no'
  18.             elif total[50] == 0 and total[25] >= 3:
  19.                 total[100] += 1
  20.                 total[25] -= 3
  21.             elif total[50] > 0 and total[25] > 0:
  22.                 total[100] += 1
  23.                 total[50] -= 1
  24.                 total[25] -= 1
  25.     else:
  26.         return 'yes'
复制代码

新手小白把可能的情况都列出来了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-27 10:14:44 | 显示全部楼层
谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-27 10:23:08 | 显示全部楼层
无处不编程
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-30 21:53:02 | 显示全部楼层
给我鱼币!
  1. def faulty_odometer(i):
  2.     c = 0
  3.     j = 1
  4.     while j <= i:
  5.         if '4' in str(j):
  6.             jump = 10 ** (len(str(j)) - str(j).index('4') - 1)
  7.             c += jump
  8.             j += jump
  9.         j += 1
  10.     return i - c
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-23 10:29:26 | 显示全部楼层
  1. def tickets(custom):
  2.     for each in custom:
  3.         change = each - 25
  4.         if change == 0:                               #不用找钱
  5.             dict1['25'] += 1
  6.         elif change == 75:                            #找75块
  7.             if dict1['50'] > 0 and dict1['25'] > 0:
  8.                 dict1['50'] -= 1
  9.                 dict1['25'] -= 1
  10.                 dict1['100'] += 1
  11.             elif dict1['25'] >= 3:
  12.                 dict1['25'] -= 3
  13.                 dict1['100'] += 1
  14.             else:
  15.                 return False
  16.         else:                                         #找25块
  17.             if dict1['25'] >0:
  18.                 dict1['25'] -= 1
  19.                 dict1['50'] += 1
  20.             else:
  21.                 return False
  22.     else:
  23.         return True


  24. if __name__ == '__main__':
  25.     dict1 = {'100': 0, '50': 0, '25': 0}                  #初始资金池
  26.     str1 = input('请输入每人放入的金额面值,以“,”分隔')
  27.     custom = [int(i) for i in str1.split(',')]
  28.     result = tickets(custom)
  29.     print(result)
  30.     if result:
  31.         print(dict1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-4 17:27:41 | 显示全部楼层
  1. import test
  2. def tickets(people):
  3.           temp = []
  4.           temp.append(25)
  5.           length = len(people)
  6.           if people[0]!=25:
  7.                               return 'NO'
  8.           for each in range(1,length):
  9.                     ch  = people[each] - 25
  10.                     if ch == 0:
  11.                               temp.append(people[each])
  12.                     else:
  13.                               if people[each] == 100:
  14.                                         if 25 in temp and 50 in temp:
  15.                                                   temp.remove(25)
  16.                                                   temp.remove(50)
  17.                                                   temp.append(100)
  18.                                         else:
  19.                                                   return 'NO'
  20.                               elif people[each] == 50:
  21.                                         if 25 not in temp:
  22.                                                   return 'NO'
  23.                                         else:
  24.                                                   temp.remove(25)
  25.                                                   temp.append(50)
  26.                                        
  27.           return 'YES'



  28. test.assert_equals(tickets([25, 25, 50]), 'YES')
  29. test.assert_equals(tickets([25, 100]), 'NO')
  30. test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 25, 25, 25]), 'YES')
  31. test.assert_equals(tickets([50, 50, 50, 50, 50, 50, 50, 50, 50, 50]), 'NO')
  32. test.assert_equals(tickets([100, 100, 100, 100, 100, 100, 100, 100, 100, 100]), 'NO')
  33. test.assert_equals(tickets([25, 25, 25, 25, 50, 100, 50]), 'YES')
  34. test.assert_equals(tickets([50, 100, 100]), 'NO')
  35. test.assert_equals(tickets([25, 25, 100]), 'NO')
  36. test.assert_equals(tickets([25, 25, 50]), 'YES')
  37. test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 100, 100, 100, 100]),'NO')
  38. test.assert_equals(tickets([25, 100]), 'NO')
  39. test.assert_equals(tickets([50, 50, 100]), 'NO')
  40. test.assert_equals(tickets([25, 50, 100]), 'NO')
  41. test.assert_equals(tickets([25, 25, 50, 50, 100]), 'NO')
  42. test.assert_equals(tickets([100, 50, 25, 25]), 'NO')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 17:59:46 | 显示全部楼层
gopythoner 发表于 2017-4-25 20:17
我写了一个,把你上面的测试了,全部正确

大佬,牛皮。你的是我看道最简洁易懂的。谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-19 18:29:50 | 显示全部楼层
d
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 17:32:35 | 显示全部楼层
1
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 05:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表