2017-10-22 2 views
1

私のコードは混乱しているように見えるので、私は一歩一歩進みます。ここに私が行ったことがあります(それは動作します):ifとelse文(Pythonで)でforループの結果をどのように定義できますか?

私は6つのリストを持っています。私のコードでは、ユーザーのカートにいくつのアイテムがあるかを尋ねます。その数字が表示され、リストから選択した数のランダムな項目が印刷されます(たとえば、ユーザがitems in cart4を入力した場合、このランダムなカート項目のリストが生成されます:['pineapple', 'iPhone case', 'toolbox', 'olives'])。

私の質問: 'pineapple'が印刷されている場合、それは法案に1を追加しますので、どのように私は、ランダムなアイテムのリストを定義することができますか?

items_1 =[ "soap","ketchup","pineapple","crisp","twix"] 
items_2 = ["olives","mouse pad","shampoo","coke","ruler","pen"] 
items_3 = ["honey","mirror","chocolate bar","fanta"] 
items_4 = ["candle","doughnuts","pencil","dr pepper","broccoli","cabbage"] 
items_5 = ["book","butter","jam","umbrella","toolbox","knife"] 
items_6 = [ "tissue","iphone case","jewels","sprite"] 
list_of_lists = [items_1, items_2, items_3, items_4, items_5, items_6] 
item_cart=int(input("how many items in the cart")) 
scan10=(random.choice(random.choice(list_of_lists))) 

for scan in range(item_cart): 
    scan1=print(random.choice(random.choice(list_of_lists))) 

#BillCreating 
print("here are your items") 
bill=0 

if "soap" in scan1: 
    bill+1 
if "ketchup" in scan1: 
    bill+1 
if "pineapple" in scan1: 
    bill+1 
if "crisp" in scan1: 
    bill+1 
if "twix" in scan1: 
    bill+1 



print("total:",(bill)) 
+0

I 'メートル、しかし、私が正しくあなたを読めば、あなたは法案= + 1で、すべての法案+ 1を交換する必要があります。指定されたアイテムのうちの1つがランダム呼び出しから返された場合、それは請求額を増加させます。また、strとint型を混在させるため、print文がクラッシュする可能性があります。 print( "total:{}"。format(bill))と置き換えてください。 – jlaur

+0

ので、漠然としているため申し訳ありませんが、あなたのコメントはしかし:)私にとって最初である私の手形・カウント、どのように多くのアイテムcart12 パイナップル 石鹸 のDRコショウで くっきり シャンプー ブック twix ケチャップ iphoneケースが増加していますここ ミラー 組織 コークス は、あなたのアイテム 合計です:1つのイベント声明それはまだ唯一の形式代として1 –

+0

は正確に、私は私の言葉がif文にランダムに呼び出されることを毎回したい場合である複数の項目があるものの請求書に1を加えてください –

答えて

0
bill=0 

for i in range(item_cart): 
    scan1=random.choice(random.choice(list_of_lists)) 
    if scan1 in ["twix", "pineapple",....]: 
     bill+=1 

print("here are your items") 
print("total: {}".format(bill)) 
+0

スタックオーバーフロー時にコードのみの回答はお勧めしません。あなたが何をしたのか、それがなぜ機能するのかを説明するために編集を検討してください。 – Shadow

+0

@ Shadow - 私は同意します。私はすでにユーザーとの最初の対話でコメントしていたので、電話から返信していたので、この場合は重複していることがわかりました。 – jlaur

+0

答えを完全に理解することが重要です。ユーザーがGoogleを介してこのページに来ると、回答を完全に理解するために必要なすべての情報を簡単に取得できるようになります。これはQAサイトであり、フォーラムではないことを覚えておいてください。私たちはこの特定のユーザを助けるつもりではない - 我々は誰もがこの問題を解決しようとしている。 – Shadow

1

+=を使用してください。

if "pineapple" in scan1: 
    bill += 1 

IIUCを、あなたはランダムitem_cart項目は6つの項目リストのいずれかから引き出すことがしたい、最初list_of_listsを平坦化し、すべての請求可能な項目を合計することにより、あなたのコードを引き締め考えます。このアプローチでは

、あなたはbill数を順次インクリメントを心配する必要はありません。

import numpy as np 

item_list = [item for i_list in list_of_lists for item in i_list] 
item_cart = int(input("how many items in the cart")) 
scan1 = np.random.choice(item_list, size=item_cart) 
billable_items = ["soap", "ketchup", "pineapple", "crisp", "twix"] 

bill = sum([1 for b_item in billable_items if b_item in scan1]) 

print(f"here are your items: {scan1}") 
print(f"total: {bill}") 

あなたはパンダを使用することができる場合、これはさらにコンパクト取得します。

import pandas as pd 

bill = pd.Series(billable_items).isin(scan1).sum() 
1

bill+1が追加されますbill1を一緒にして、結果を返します。私はあなたが実際に

bill = bill + 1 

のPython(および他の多くの言語)の結果を保存する必要があり、その場合には1、増加する法案を望む期待

は、これを行うための速記を持っています。

少しあなたが何をしたいのかについての暗闇の中で
bill += 1 
関連する問題